Autor Zpráva
quiet_user__
Profil *
Rád bych, aby se ověřovalo, zda-li již není daný záznam uveden v databázi (není-li již evidován).
Jelikož píšu v DIBI tuto složitější podmínky poprvé, rád bych se zeptal na postup.

část, kdy určuji podmínky je zde:

  // send registration
  if (isset($_POST['reg-submit'])){
 
   // completing all the mandatory data
   if($_POST['userFirstName']!="" &&    // first name is'nt empty
      $_POST['userLastName']!="" &&     // last name is'nt empty
      $_POST['userEmail']!="" &&        // user email is'nt empty
      $_POST['userPassword']!="" &&     // user password is'nt empty
      $_POST['userPasswordControl']!="" // password control is'nt empty
     ){
      
   if(strlen($_POST['userPassword'])>=5){
   if($_POST['userPassword']==$_POST['userPasswordControl']){
   
    dibi::query('SELECT * FROM [users] WHERE %and', 
    
    array(array('firstname' == $_POST['userFirstName']),
          array('lastname' == $_POST['userLastName']),
          array('email' == $_POST['userEmail']))
    );
   
    $time = Time();
    $ipaddress = $_SERVER['REMOTE_ADDR'];

    $arr = array('firstname' => htmlspecialchars($_POST['userFirstName']),    
                 'lastname'  => htmlspecialchars($_POST['userLastName']),
                 'email'     => htmlspecialchars($_POST['userEmail']),
                 'password'  => md5($_POST['userPassword']),
                 'regtime'   => $time,
                 'regip'     => $ipaddress,
                 'lastclick' => 0,
                 'lastip'    => $ipaddress,
                 'key'       => 1,);
                 
     echo("$msg->trueReg");


Náznak řešení je u prvního volání dibi a podmínky WHERE s %and... nějak nemůžu přijít na správný způsob zainkludování dotazu do podmínky a správného ověřování. Našel by se někdo, kdo by pomohl? Děkuji.
joe
Profil
1. Je jedno přes jakou databázovou vrstvu to děláš. To, že to je přes Dibi je úplně jedno.
2. Na ověření, jestli je klíč v poli se používá empty() nebo isset(), takže tedy:

$_POST['userFirstName']!=""

nahradit
!empty($_POST['userFirstName'])


apod.

3. Je zbytečné vybírat vše (*), lepší je spočítat záznamy nebo vybrat jeden povinný sloupec.

4. Proč chceš hledat uživatele se stejným jménem, příjmením a e-mailem? Stačí přece jen e-mail, je unikátní, tedy pokud se na jeden e-mail nemůže zaregistrovat více osob (proč by mělo?)

5. Nevím o tom, že by takový zápis byl v Dibi možný, nepoužívám to, ale je možné, že to tak nějak má fungovat, preferuji tento zápis:

$result = dibi::query('SELECT * FROM [users] WHERE email = %s', $_POST['userEmail'])->fetch(); 
quiet_user__
Profil *
Super, díky moc. Chyby opraveny.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: