Что-то с проверкой пароля
Получаю пароль из страницы с формами и шифрую в md5
$pass = md5($_POST['password']);
Потом получаю уже зашифрованный пароль из MySQL
$vpass = $row['password'];
Потом их сравниваю
if($row['password'] != $pass) {die ('ошибка пароля');}
Но почему-то, если условие верное, все равно выдает ошибку( Посмотрел, как это работает, получается, что из БД получаю это: e10adc3949ba59abbe56e057, а из $pass получаю это: e10adc3949ba59abbe56e057f20f883e.
Почему?
Дополнено.
<?php
if ($_POST['password'] == ''){die ('error pass');}
if ($_POST['mail'] == ''){die ('error mail');}
if ($_POST['url'] == '') {die ('error url');}
$url = $_POST['url'];
$pass = $_POST['password'];
$mail = $_POST['mail'];
$dblocation = "localhost";
$dbname = "lol";
$dbuser = "lol";
$dbpasswd = "0000";
$link = mysql_connect($dblocation, $dbuser, $dbpasswd);
//if ($_GET['id'] == '') die('error');
if ( !$link )
die ("Невозможно подключение к MySQL");
mysql_select_db ( $dbname ) or die ("Невозможно открыть $dbname");
$res=mysql_query("SELECT * FROM `cards` WHERE url = '".$url."'");
while($row=mysql_fetch_array($res)){
$vurl= $row['url'];
$vmail = $row['mail'];
$vpass = $row['password'];}
if ($vurl == '') {die ('Введён несуществующей адрес');} else {
if($vmail != $mail) {die ('ошибка почты');}
if($row['password'] != md5($pass)) {die ('ошибка пароля');}
}
session_start();
$_SESSION['mail'] = $mail;
$_SESSION['pass'] = $pass;
mysql_close ( $link );
?>
Дополнено.
$insert = "INSERT INTO cards (name, password) VALUES('".$url."','".md5($password)."')";
mysql_query ($insert);
P.S. немножко сократил его
Источник: Stack Overflow на русском