PHP, mi benne a hiba?
Van egy PHP fájl, és egy hibás mysql rekord létrehozás:
mysql_query("INSERT INTO users (mail, pass, namea, nameb, phone, title, date, dateb, magam, jog, regdate, history, message) values ('".@$_POST['maila']."', '".@$_POST['passa']."', '".szovegcsere(@$_POST['namea'], '11000')."', '".szovegcsere(@$_POST['nameb'], '11000')."', '".szovegcsere(@$_POST['phone'], '11000')." ', '".szovegcsere(@$_POST['title'], '11000')." ', '".@$_POST['szuev']."-".@$_POST['szuho']."-".@$_POST['szuna']."', '".@$_POST['nevnapho']."-".@$_POST['nevnapnap']."', '".szovegcsere(@$_POST['magam'], '11111')." ', '".$jo."', '".date("Y-m-d")." ', '".time()."->Regisztráció<br>', '')");
Ha ezt egy if() be teszem, akkor hamis értéket ad vissza. A mysql táblában nincs ilyen sor. A szovegcsere() funkció biztos, hogy jó. És elméletileg a változókat is jól áthozza az űrlapból. Van egy ellenőrző if is, ami csak akkor engedi futtatni ezt a kódot, ha minden POST értéke nem üres. Amelyiknél lehet üres si azt nem ellenőrzi, de így adom meg a feltöltésnél: @$_POST[""];
Egyébként kód alapján szerintem jó (nem látok benne hibát), de az if-ben hamis értéket ad vissza.
A válaszokat előre is köszönöm.
Az adatbázis kapcsolat megvan?
(mysql_connect)
Amúgy elég ronda ez a kód, ráadásul nagyon jó sql injection hiba van benne. (No meg nem is mondom, hogy a jelszavakat illik hashelni...)
Hogyan tudom elhárítani a mysql injection hibát?
13 helyre lehet írni, és 13 értéket adok meg.
Igen már látom így hogy bemásoltam notepadbe, + hibát is:
phone, title, és amitől biztos nem megy: date("Y-m-d")-nél plusz egy szpész a végén
Módosítottam:
$sql_a=@$_POST['maila'];
$sql_b=md5(@$_POST['passa']);
$sql_c=szovegcsere(@$_POST['namea'], '11000')." ";
$sql_d=szovegcsere(@$_POST['nameb'], '11000')." ";
$sql_e=szovegcsere(@$_POST['phone'], '11000')." ";
$sql_f=szovegcsere(@$_POST['title'], '11000')." ";
$sql_g=@$_POST['szuev']."-".@$_POST['szuho']."-".@$_POST['szuna']." ";
$sql_h=@$_POST['nevnapho']."-".@$_POST['nevnapnap']." ";
$sql_i=szovegcsere(@$_POST['magam'], '11111')." ";
$sql_j=$jo;
$sql_k=date("Y-m-d")." ";
$sql_l=time()."->Regisztráció<br> ";
$sql_m="";
mysql_query("INSERT INTO users (mail, pass, namea, nameb, phone, title, date, dateb, magam, jog, regdate, history, message) values ('".$sql_a."', '".$sql_b."', '".$sql_c." ', '".$sql_d." ', '".$sql_e." ', '".$sql_f." ', '".$sql_g." ', '".$sql_h." ', '".$sql_i." ', '".$sql_j."', '".$sql_k." ', '".$sql_l."', '".$sql_m."')");
Így jobban átlátható, a jelszót kódolja, és odatettem a plusz spacet is, de most se működik. Van még ötletetek?
De én úgy értettem hogy pont azért nem megy, mert ott van egy space :D
pl dátum formája "2012-09-29", de te a végére egy szóközt még tettél, és ezért rossz formában akarná beletenni, amit persze nem lehet, ez a hiba.
NE legyen sehol felesleges szóköz(=végén). :D
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!