Autor | Zpráva | ||
---|---|---|---|
Luko Profil * |
<?php include "header.php"; if($_SESSION['user']){ echo "<meta http-equiv=\"refresh\" content=\"3;URL=index.php\">Prihlásený užívateľ sa nemôže zaregistrovať."; } ?> <h1>Registrácia:</h1> <?php if(!empty($_POST['register'])){ if(empty($user) || empty($email) || empty($password1) || empty($password2)){ $error = 1; $warning = "<h2>Nevyplnili ste všetky potrebné polia.</h2>"; } if(strlen($user) < 4){ $error = 1; $warning .= "<h2>Menu musí mať minimálne 4 znaky.</h2>"; } if(!ereg("^(.+)@(.+)\\.(.+)$", $email)){ $error = 1; $warning .= "<h2>E-mail je zadaný v nesprávnom tvare.</h2>"; } if($password1 != $password2){ $error = 1; $warning .= "<h2>Heslá sa nezhodujú.</h2>"; } if($error != 1){ @$verification = mysql_query("SELECT user FROM users WHERE user = '$user'"); if($user == $verification){ $error = 1; $warning .= "<h2>Toto meno už používa niekto iný.</h2>"; }else{ $password = md5($password1); $sql = mysql_query("INSERT INTO users WHERE (user,email,password) VALUES ($user,$email,$password)"); echo "<h3>Ďakujeme za registráciu. Na váš e-mail vám bola odoslaná správa s vašimi registračnými údajmi.</h3>"; if(!$sql){ $error = 1; $warning .= "<h2>Registrácia zlyhala, kontaktujte administrátora.</h2>"; } } } } if(empty($_POST['register']) || $error == 1){ echo ' <form action="" method="post"> Meno:<br /> <input type="text" name="user" value="'.$_POST['user'].'" size="30"><br /> E-mail:<br /> <input type="text" name="email" value="'.$_POST['email'].'" size="30"><br /> Heslo:<br /> <input type="password" name="password1" value="" size="30"><br /> Overenie hesla:<br /> <input type="password" name="password2" value="" size="30"><br /> <input type="submit" name="register" value="Registrovať"> </form> '; echo $warning; echo $sql; } include "footer.php"; ?> ...nepracuje to správne a neviem prečo. Môžete mi s tým pomôcť ??? ;) |
||
Nox Profil |
#2 · Zasláno: 2. 1. 2009, 20:36:58
A na co si sám přišel, když jsi odhaloval tu chybu? Abys to jen celé neházel na nás a trochu nám pomoh;)
|
||
Luko Profil * |
#3 · Zasláno: 2. 1. 2009, 20:39:38
No výsledkom registrácie bolo, že vypísalo error o zlyhaní registrácie, ale aj to, že registrácia prebehla úspešne, no do databázy sa údaje neuložili...
|
||
nightfish Profil |
#4 · Zasláno: 2. 1. 2009, 20:52:47
hodnoty sloupců řetězcového typu (char, varchar) v SQL dotazu je třeba uzavřít do apostrofů
kód je náchylný na sql injection a je v něm i pěkná race-condition |
||
Luko Profil * |
#5 · Zasláno: 2. 1. 2009, 20:56:07
no hodnoty som dal do apostrofov, ale stále tá istá chyba. :(
|
||
Nox Profil |
#6 · Zasláno: 2. 1. 2009, 21:26:08
Luko
Máš v tom dotazu nadbytečné to "WHERE" |
||
Luko Profil * |
#7 · Zasláno: 3. 1. 2009, 10:49:34
Nox: chyba musí byť ešte niekde inde, lebo problém stále pretrváva... :(
|
||
kvoky Profil |
#8 · Zasláno: 3. 1. 2009, 13:25:45
@$verification = mysql_query("SELECT user FROM users WHERE user = '$user'"); if($user == $verification){ - vůbec tam nemáš žádný mysql_fetch, udelal bych to ale asi nejak takhle: @$verification = mysql_num_rows(mysql_query("SELECT user FROM users WHERE user = '$user'")); if($verification>0){ Bohuzel to ale asi neresi Tvojí situaci, pouze by to nepoznalo že už tam user už je. |
||
Luko Profil * |
#9 · Zasláno: 3. 1. 2009, 18:54:08
No už som vyriešil menej podstatnú časť problému, a to tú, že už sa nezobrazujú obidve upozornenia naraz, ale registrácia stále zlyháva, do databázy sa nič neuloží, pritom pripojenie k nej mám v poriadku, aj tabuľku som skontroloval...
Vyzerá to tak, že problém bude asi v tomto riadku: $sql = mysql_query("INSERT INTO users WHERE (user,email,password) VALUES ($user,$email,$password)"); ...máte nejaké nápady ??? |
||
Luko Profil * |
#10 · Zasláno: 3. 1. 2009, 18:56:33
...pretože sa nesplní táto podmienka a vypíše error o zlyhaní registrácie:
if($sql){ echo "<meta http-equiv=\"refresh\" content=\"5;URL=index.php\"><h3>Ďakujeme za registráciu. Na váš e-mail bola odoslaná správa s vašimi registračnými údajmi.</h3>"; }else{ $error = 1; $warning .= "<h2>Registrácia zlyhala, kontaktujte administrátora.</h2>"; } |
||
kvoky Profil |
#11 · Zasláno: 3. 1. 2009, 22:11:18 · Upravil/a: kvoky
$sql = mysql_query("INSERT INTO users (user,email,password) VALUES ($user,$email,$password)") or die (mysql_error()); je správně. |
||
Luko Profil * |
#12 · Zasláno: 4. 1. 2009, 10:26:50
kvoky: ďakujem ti za pomoc, už to pracuje tak ako má. ;) ...chyba bola presne v tom riadku.
|
||
Časová prodleva: 15 let
|
0