metal_head
Registered
Здравейте, имам малък проблем...по-скоро голям с логин системата ми. Почти всичко е супер. Потребителите се регистрират и всичко е наред, докато някой не опита да се логне. При опит за логин казва, че паролата му е грешна. Използвал съм md5 хеширане при записа в базата данни и също при логин md5 хеширане за сверяване на паролата.
Това ми е проверката на въведеното от формата при регистрация и съшо записа в базата данни, ако всичко е наред записва в базата данни:
Това пък е частта от логин файла, която взима името и паролата и търси за записи в базата данни:
Както казах, излиза ми това отгоре, че не е валидна и също съм сложил да ми изкарва криптираната въведена парола. Ако я хвана тая криптирана парола, която ми извежда при грешката и я заместя ръчно в базата данни, после потребителя няма проблеми с логин-а.
Какво не е наред? Гледах, гледах....всичко е ок според мен.
Това ми е проверката на въведеното от формата при регистрация и съшо записа в базата данни, ако всичко е наред записва в базата данни:
Код:
$errorvar = false;
if(empty($username)){ echo"<br><font size='3' color='ff6464'>- Липсва потребителско име.</font>"; $errorvar = true; }
if(empty($password)) {echo"<br><font size='3' color='ff6464'>- Липсва парола.</font>"; $errorvar = true; }
if(empty($_POST['conf_password'])){echo"<br><font size='3' color='ff6464'>- Паролата не е потвърдена.</font>"; $errorvar = true;}
if(empty($email)){echo"<br><font size='3' color='ff6464'>- Липсва e-mail.</font>"; $errorvar = true; }
if(preg_match("/[^-a-z0-9_.-]/i", $username) == true){ echo"<br><font size='3' color='ff6464'>- Потребителското име не може да съдържа такива символи.</font>"; $errorvar=true;}
if($number_reg_users > 0) {echo"<br><font size='3' color='ff6464'>- Вече имаме потребител с такова име.</font>"; $errorvar = true;}
if($number_reg_emails > 0) {echo"<br><font size='3' color='ff6464'>- Този e-mail е вече регистриран при нас.</font>"; $errorvar = true;}
if(validate_mail($email) == false) {echo"<br><font size='3' color='ff6464'>- Въведеният имейл не е валиден.</font>"; $errorvar = true;}
if($password != $_POST['conf_password']) {echo"<br><font size='3' color='ff6464'>- Въведените пароли не съвпадат.</font>"; $errorvar = true;}
if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) {
echo"<br><font size='3' color='ff6464'>- Кодът за сигурност не съвпада с този от картинката.</font>"; $errorvar = true;
}
if($errorvar){
$_GET['done'] = false;
die("<br><font size='3'>Моля, поправи си грешките и опитай пак");
}
$crypted_password = md5($password);
if ($_SERVER['HTTP_X_FORWARD_FOR']) {
$ip = $_SERVER['HTTP_X_FORWARD_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$insert = mysql_query("INSERT INTO users (username, password, email, hidemail, birthday, location, webpage, register_date, ip) VALUES ('$username', '$crypted_password', '$email', '$hm', '$birthdate', '$location', '$website', '$register_date', '$ip')");
if(!$insert) die("Има пробем: ".mysql_error());
else{
echo"Регистриран си";
$_GET['regsuccess'] = true;
}
Това пък е частта от логин файла, която взима името и паролата и търси за записи в базата данни:
Код:
$logname = $_POST['username'];
$logpassword = md5($_POST['password']);
$result = mysql_query("SELECT * FROM users WHERE username='$logname' AND password='$logpassword'");
$rows = mysql_num_rows($result);
if($rows == 0){
echo"<br><center><font size='3' color='ff6464'>Невалидно потребителско име или парола.</font></center>";
echo "<br>".$logpassword;
Както казах, излиза ми това отгоре, че не е валидна и също съм сложил да ми изкарва криптираната въведена парола. Ако я хвана тая криптирана парола, която ми извежда при грешката и я заместя ръчно в базата данни, после потребителя няма проблеми с логин-а.
Какво не е наред? Гледах, гледах....всичко е ок според мен.