2015-11-05 2 views
-1

Я работаю над системой регистрации/входа в PHP/MYSQL как неделю, и я действительно имею проблему с php password_hash и функцией password_verify ... Регистр работал, и логин с password_verify продолжает терпеть неудачу, и я не понимаю, почему .. Может кто-нибудь помогает? я действительно в отчаянии.Как сделать систему входа в систему с password_verify работать?

Вход в систему ..что я пытаюсь достичь 1-его проверки, если электронная почта пуста или нет, и если это действительный email..2 - его проверка, если пароль пуст или нет. 3-если оба $ email и $ password одобрены .. он подключается к db .. then a-it проверяет, существует ли электронная почта в табличных пользователях, если не требуется зарегистрировать..b - если пользователь существует в db, то он проверяет, является ли пароль $ таким же, как passsword в db ..., если он действительный пароль ... это эхо-код «valid» .. и если не правильный пароль ... он перекликается с «invalide email/password» ... который то, что я пытаюсь достичь ...

Здесь я отправляю полный код:

дизайн дб

user_id(auto_increment/primary key) 
email(unique, varchar) 
password(varchar, 255) 

register.php

<?php 
$email=$password=""; 
$emailErr=$passwordErr=""; 
    if (isset($_POST['submit'])) { 
if (empty($_POST['email'])) { 
    $emailErr="Enter your email"; 
    } 
    elseif (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === FALSE) { 
     $emailErr = "Invalid email"; 
    } 
     else 
     { 
     $email= trim($_POST['email']); 
     } 

if (empty($_POST['password'])) { 
    $passwordErr = "Enter your password"; 
     }  
     elseif (strlen($_POST['password']) < 3) { 
      $passwordErr = "password must 4 length least"; 
     } 
      else 
      { 
      $password = trim($_POST['password']); 
      } 

// if everything is filled correct connect 
if ($email && $password) 
{ 

    include_once'connect.php'; 

$sql = "SELECT COUNT(users.email) FROM users WHERE email = :email"; 

$s = $pdo->prepare($sql); 

$s->bindValue(':email', $email); 

$s->execute(); 

    $result = $s->fetch(PDO::FETCH_NUM); 

    $resultvalue = $result[0]; 
//if email exist, stop the script 
if ($resultvalue > 0) { 

echo "Email already exist"; 
exit(); 
} 

// if email not exist insert it 
    else 
    { 
    $sql = "INSERT INTO users (email,password) VALUES (:email, :password)"; 
    $stmt = $pdo->prepare($sql); 
    $stmt->bindValue(':email', $email); 
    $stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT)); 
    $stmt->execute(); 

     if ($stmt) { 
      echo "Values inserted"; 
      exit(); 
     } 

      else 
      { 
      echo "Insert values failed"; 
      exit(); 
      } 
    } 

}   

//if everything is not filled correct connect 
else 
    { 
    $proceedErr = "Could not proceed"; 
    } 
    }//submit 

?> 

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Register page</title> 
    <style type="text/css"> 
form p label 
{ 
    display: block; 
} 

em 
{ 
    color: red; 
    font-style: normal; 
} 
    </style> 
    </head> 

<body> 

<?php 
if (isset($proceedErr)) { 
    echo $proceedErr; 
} 

?> 

<form method="POST" action=""> 

<p> 
<label for="email">Email :</label> 
<input type="text" name="email" id="email" placeholder="Enter your email" value/><em><?php if(isset($emailErr)) echo $emailErr;?></em> 
</p> 
<p> 
<label for="email">Password :</label> 
<input type="password" name="password" id="password" placeholder="Enter your password" value/><em><?php if(isset($passwordErr)) echo $passwordErr;?></em> 
</p> 
    <input type="submit" name="submit" id="submit" value="Register" /> 
    </form> 

    </body> 
</html> 

login.php

<?php 
    $emailErr=$passwordErr=""; 
    $email=$password=""; 

    if (isset($_POST['submit'])) { 
    if (empty($_POST['email'])) { 
     $emailErr="Enter your email"; 
    } 
     elseif (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === FALSE) { 
     $emailErr = "Enter valid email"; 
     } 
     else 
     { 
     $email = trim($_POST['email']); 
     } 

if (empty($_POST['password'])) { 
    $passwordErr="Enter your password"; 
} 
else 
{ 
    $password= trim($_POST['password']); 
} 

    if ($email && $password) 
    { 

    include_once'connect.php'; 

$sql = "SELECT user_id,email, password FROM users WHERE email = :email"; 

$s = $pdo->prepare($sql); 

$s->bindValue(':email', $email); 

$s->execute(); 

$result = $s->fetch(PDO::FETCH_ASSOC); 

$resultvalue = count($result['email']); 

print_r($result); 

//if email do not exist, stop the script 
if ($resultvalue < 1) { 

echo "Your email do not exist, please register"; 

exit(); 
} 
    elseif (password_verify($password, $result['password'])) { 
    echo "valide password/email"; 
    exit(); 
    } 
    else 
    { 
     echo "InValid email/password"; 
     exit(); 
    } 
    } 


    else 
    { 
    echo "Email/password do not match"; 
    } 

    }// end submit 

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<title>Login page</title> 
    <style type="text/css"> 
form p label 
{ 
    display: block; 
} 

em 
{ 
    color: red; 
    font-style: normal; 
} 
    </style> 
    </head> 

<body> 



<form method="POST" action=""> 

<p> 
<label for="email">Email :</label> 
<input type="text" name="email" id="email" placeholder="Enter your email" value/><em><?php if(isset($emailErr)) echo $emailErr;?></em> 
</p> 

<p> 
<label for="email">Password :</label> 
<input type="password" name="password" id="password" placeholder="Enter your password" value/><em><?php if(isset($passwordErr)) echo $passwordErr;?></em> 
</p> 

    <input type="submit" name="submit" id="submit" value="login" /> 
    </form> 

    </body> 
</html> 
+2

Если вы не можете следовать этому рассказу моего доктора Сьюза [здесь] (http://stackoverflow.com/a/32556010), я бы посмел :) – Drew

+0

@RyanVincent, вы просите войти или зарегистрировать часть ? –

+0

@ RyanVincent для входа в систему..so..1-его проверка, если электронная почта пуста или нет, и если это действительный email..2 - его проверка, если пароль пуст или нет. 3-если оба $ email и $ password одобрены .. он подключается к db .. then a-it проверяет, существует ли электронная почта в табличных пользователях, если не требуется зарегистрировать..b - если пользователь существует в db, то он проверяет, является ли пароль $ таким же, как passsword в db ..., если он действительный пароль ... это эхо-код «valid» .. и если не правильный пароль ... он перекликается с «invalide email/password» ... который что я пытаюсь достичь ... –

ответ

0

Испытано одни и те же сценарии здесь, и она работала.

Я получил ответ «valide password/email», поэтому этот условный оператор «(password_verify ($ password, $ result ['password']))« true true (строка 51 в login.php).

Вы получаете сообщение об ошибке или предупреждение?

+0

Действительно? я не получаю ошибку как таковой ... моя проблема в том, что в Login.php ... даже когда я вводил неверный пароль ... он говорит, что действительный адрес электронной почты/пароль ... вместо вывода ... недействительных сообщений электронной почты/пароля .... попробуйте зарегистрироваться и в регистрационной части введите правильный адрес электронной почты .. но неверный пароль .. и вы увидите мою проблему ... –

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