| 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: 17 let
|
|||
0