2014-11-17 3 views
0

Я пытаюсь создать базовую форму входа, которая проверит вход пользователя в базу данных и ответит соответствующим образом.Вход PHP, возвращающий false с правильным именем пользователя?

Вот главное, если заявление:

if (isset($_POST['email'])) { //sets $email and $pw to what the user types 
     $email = $_POST['email']; 
     $pw = $_POST['pw']; 

     $user_ID = login($db, $email, $pw); 
     if ($user_ID) { 
      $id = $user_ID->user_ID; 
      echo "<p>$id Login success!</p>"; 
      header("Location: index.php?page=profile&id=$id"); 
      die(); 
     }else { 
      echo "<p>Login Failed</p>"; 
      echo $email; 
      echo $pw; 
      echo $user_ID; 
     } 
    } 

и функция:

function login($db,$email, $pw) { 
     $inc_pw = md5($pw); 
     $sql = "SELECT user_ID FROM profile WHERE email = '$email' AND pw = '$inc_pw'"; 
     $result = $db->query($sql); 
     return $result->fetchObject(); 
    } 

В настоящее время он всегда возвращает ложь, и для этого Войти не удалось. Насколько я могу судить, это не правильно сравнивает электронную почту и pw с тем, что находится в базе данных, но я не уверен, как ее исправить.

Заранее спасибо за помощь :)

+0

Вы проверили 'echo $ sql'? –

+0

Обратите внимание, что использование md5hash для хранения паролей считается небезопасным. – arkascha

+1

Прочитайте [Как я могу предотвратить SQL-инъекцию в PHP] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) и начать учиться использовать 'готово()/execute() 'в соответствии с вашим выбранным API баз данных. У вас есть уязвимость в SQL-инъекциях здесь, в '$ email', которая позволила бы любому войти в систему с любым паролем или без пароля. –

ответ

0

Оказывается, проблема была с моей базой данных. Функция выполняет поиск зашифрованного (md5) пароля, а в базе данных не содержится только зашифрованный пароль.

+0

Тогда вам следует серьезно подумать о шифровании ваших паролей в базе данных! – fejese

+0

Они сейчас. Это для чрезвычайно быстрого тиража uni, и они не очень хорошо обучают нас :(Шифрование и безопасность - это наименьшее из наших забот. – Wonx2150

Смежные вопросы