2016-05-03 2 views
-2

я получил простой сценарий входа, что пост пароль и проверить corrispondence с базой данныхPHP: Session на основе Войти скрипт не будет работать

session_start(); 
include 'core/config.php'; 
include 'core/db.php'; 
$checkPWD = $DB_CON -> query('SELECT * FROM users'); 
$checkPWD->execute(); 
$pwd = $checkPWD->fetchAll(); 
if($_POST['password']) { 
    $md5pwd = md5($_POST['password']); 
    if($md5pwd == $pwd[2]) { 
     $_SESSION['login'] = 'true'; 
     $_GET['page'] = 'dashboard'; 
    } else { 
     $_GET['error'] = 'true'; 
    } 
} 

Этот выход и получил $ _GET [ «ошибка»] установлено значение правда. Пароль хранится в базе данных md5.

Большое спасибо

+0

, что это ошибка? – Mohini

+0

сценарий выходит в else и получает $ _GET ['error'] = 'true', даже если пароль верен – andreaem

+1

Этот скрипт - горячий беспорядок. Вы выбираете всю таблицу пользователей? И затем вы получите MD5 пароль (который НЕ [НЕ БЕЗОПАСНО] (http://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function)). Для ваших данных нет петли. [Рассмотрим переход на password_hash] (http://stackoverflow.com/questions/14992367/using-php-5-5s-password-hash-and-verify-function-am-i-doing-it-right) – Machavity

ответ

1

Вы должны сделать это в запросе:

$md5pwd = md5($_POST['password']); 

$checkPWD = $DB_CON->query("SELECT * FROM users WHERE password = '{$md5pwd}' LIMIT 1"); 
$pwd = $checkPWD->fetchAll(); 

if ($pwd) { 
    // Has find someone 
} else { 
    // Hasn't find no one 
} 
+0

Изменен код, но результат тот же, он не сохраняет значения сеанса – andreaem

+0

Он выбирает всех пользователей Таблица. Так что, если это не соответствует первой записи, вам не повезло – Machavity

+0

Я изменил ее, просто я подумал, что он знает, что вторая строка была правильной – Grommy