ugrás a tartalomhoz

lefut az if igaz és hamis ága is

rigidirambo · 2015. Dec. 19. (Szo), 23.41
  1. if($message==""){  
  2.             $db_h = mysqli_connect();  
  3.                       
  4.             if($db_h){  
  5.                     $statement="SELECT * FROM users WHERE username=".$uname." OR email=".$email;  
  6.                     $result=mysqli_query($db_h$statement);  
  7.                     if(!($result['num_rows']>0)){  
  8.                         $code="";  
  9.                         for($i=0;$i<10;$i++){  
  10.                             $shit=rand(0, strlen($valid_chars)-4);  
  11.                             $code.=$valid_chars[$shit];  
  12.                         }  
  13.                         $insert_statement="INSERT INTO users(username,password,email,code) VALUES   
  14.                             ('".$uname."','".$pword."','".$email."','".$code."')";  
  15.                         $insert_result=mysqli_query($db_h$insert_statement);  
  16.                         if($insert_result){  
  17.                             $levelszoveg="Regisztráció történt ezzel az e-mail címmel a creativerecycling.pe.hu weboldalon. Regisztrációját megerősítő kódja: ".$code.". Ha úgy gondolja, más regisztrált az e-mail címével, hagyja figyelmen kívül ezt az e-mailt.";  
  18.                             $header="From: noreply##kukac##creativerecycling.pe.hu";  
  19.                             mail($email"Regisztráció megerősítése"$levelszoveg$header);  
  20.                             header("/validate.php");  
  21.                         }else{  
  22.                             $message.="Hiba történt az adatbázisba vitelkor.<br>";  
  23.                         }  
  24.                     }else{  
  25.                     $message.="A felhasználónév vagy e-mail cím már foglalt.<br>";  
  26.                     }  
  27.                     mysqli_close($db_h);  
  28.                 }else{  
  29.                     $message.="Adatbázis nem található vagy kapcsolódási hiba.<br>";  
  30.                 }  
  31.             }  
Üdv! Egy regisztrációs formot szeretnék készíteni. A mezőkből kiszűröm az sql veszélyes karaktereket, és a hibaüzeneteket a $message-be rakom. Ha üres a $message, kezdem az adatbázis kezelését. Kapcsolat létrejön, magkapom az e-mailt, és az adatbázisba is bekerülnek a megfelelő rekordok. Viszont a végén megkapom a $message-be, hogy hiba az adatbázisba vitelkor. Kezdő vagyok, de irreálisnak tűnik, hogy az adatbázisba beszúrás után lefut az $insert_result-ot vizsgáló if igaz és hamis ága is. Arra gondolok, hogy a mysqli_query eredményét akarom én naivan igaz/hamisként értékelni, sajnos a hivatalos dokumentáción nem tudok eligazodni. Kis változtatással orvosolható, vagy alapjaiban rossz a gondolatmenetem?
 
1

Viszont a végén megkapom a

Poetro · 2015. Dec. 20. (V), 00.32
Viszont a végén megkapom a $message-be, hogy hiba az adatbázisba vitelkor. Kezdő vagyok, de irreálisnak tűnik, hogy az adatbázisba beszúrás után lefut az $insert_result-ot vizsgáló if igaz és hamis ága is.

Miből gondolod, hogy lefut, az igaz és hamis ága is?
2

onnan, hogy az e-mailt is

rigidirambo · 2015. Dec. 20. (V), 00.36
onnan, hogy az e-mailt is megkapom, be is teszi az adatbázisba az adatokat, aztán a legvégén az oldalon kiíratom a $message értékét is, amibe belekerül a "Hiba az adatbázisba vitelkor" szöveg. az pedig már az else ágban van.
3

próbálgattam, és az az

rigidirambo · 2015. Dec. 20. (V), 00.47
próbálgattam, és az az érdekes számomra, hogy ha a mail()-t kihagyom, akkor nincs ez a misztérikus hibaüzenet a $message-ben...
4

header

T.G · 2015. Dec. 20. (V), 01.22
Nem közvetlen a kérdéshez kapcsolódik, de valamelyest mégis, az a header utasítás ott nem oké: http://php.net/manual/en/function.header.php
És mivel ez pont a kérdéses résznél van, ezért érdemes lenne javítani.
5

Egyáltalán nem irreális, sőt

pp · 2015. Dec. 20. (V), 08.03
"Kezdő vagyok, de irreálisnak tűnik, hogy az adatbázisba beszúrás után lefut az $insert_result-ot vizsgáló if igaz és hamis ága is."

Nem az a kérdés, hogy lehet-e, hanem az, hogy hogyan.

Kétszer kerül rá a vezérlés erre a kódra. Ennyi.

"A mezőkből kiszűröm az sql veszélyes karaktereket"
Mondjuk az érdekelne, hogy honnan tudod, hogy mellyek ezek a karakterek, meg azt is, hogy miért kéne kiszűrni, amikor escapelni szokták. :)

pp
7

Őszintén szólva engem nagyon

kuka · 2015. Dec. 20. (V), 16.07
Őszintén szólva engem nagyon meglep, hogy egyáltalán elér oda a végrehajtás. Én arra tippeltem volna, hogy az alább idézett két adatbázis utasítás közül minimum az egyik kiakad:
  1. $statement="SELECT * FROM users WHERE username=".$uname." OR email=".$email;    
  2.   
  3. $insert_statement="INSERT INTO users(username,password,email,code) VALUES     
  4.                             ('".$uname."','".$pword."','".$email."','".$code."')";  
Az insertnél teszel az értékek köré felsővesszőt, a selectnél pedig nem. Hacsak nem numerikusak a $uname és $email értékei, nem bírom felfogni hogyan működhet ennyire is.
8

Köszönöm a segítségeket, az

rigidirambo · 2015. Dec. 24. (Cs), 13.16
Köszönöm a segítségeket, az építő hozzászólásokat, a header-rel volt a baj, és javascripttel megoldva már működik is amit szerettem volna.