2016-01-28 2 views
-1

Я не уверен, в чем проблема. Данные пользователя находятся в моей базе данных MySQL и исправлены. Однако, когда я пытаюсь войти в систему, я получаю сообщение об ошибке, когда пользователь/пароль неверен. Я пытаюсь войти с использованием адреса электронной почты пользователей. Кроме того, я хочу добавить в сеанс первое имя и идентификатор пользователя.Регистрация PHP Имя пользователя/Пароль Неправильный

<?php 
session_start(); 
include_once 'dbconnect_new.php'; 

if(isset($_SESSION['user'])!="") 
{ 
    header("Location: ../index.php"); 
} 

if(isset($_POST['btn-login'])) 
{ 
    $s_email = mysql_real_escape_string($_POST['email']); 
    $s_password = mysql_real_escape_string($_POST['password']); 

    $s_email = trim($s_email); 
    $s_password = trim($s_password); 

    $res=mysql_query("SELECT student_id, student_password, student_firstname FROM studentdata WHERE student_email='$s_email'"); 
    $row=mysql_fetch_array($res); 

    $count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row 

    if($count == 1 && $row['student_password']==md5($s_password)) 
    { 
     $_SESSION['user'] = $row['student_id']; 
     header("Location: ../index.php"); 
    } 
    else 
    { 
     ?> 
    <script> 
     alert('Username/Password Seems Wrong !'); 

    </script> 
    <?php 
    } 

} 
?> 
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     <html xmlns="http://www.w3.org/1999/xhtml"> 

     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
      <title>New Reg Page</title> 
      <link rel="stylesheet" href="style.css" type="text/css" /> 
     </head> 

     <body> 
      <center> 
       <div id="login-form"> 
        <form method="post"> 
         <table align="center" width="30%" border="0"> 
          <tr> 
           <td> 
            <input type="text" name="email" placeholder="Your Email" required /> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            <input type="password" name="password" placeholder="Your Password" required /> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            <button type="submit" name="btn-login">Sign In</button> 
           </td> 
          </tr> 
          <tr> 
           <td><a href="register_new.php">Sign Up Here</a></td> 
          </tr> 
         </table> 
        </form> 
       </div> 
      </center> 
     </body> 

     </html> 
+0

mysql_query устарел. Не используйте md5 для паролей. Тем не менее, var_dump $ s_email прямо перед определением $ res и убедитесь, что это то, что вы ожидаете. –

+0

Почему бы не использовать 'и' в строке запроса? –

+0

Некоторые советы: $ _SESSION ['user']! = '' Удалить часть! = '', Isset либо вернет true, либо false. Mysql escaping теперь устаревает в PHP, использует подготовленные операторы с mysqli или PDO. Шифрование MD5/SHA недостаточно для шифрования паролей и устарело, вместо этого используйте bcrypt. Я никогда не использовал md5, но bcrypt создает разные хэши для одного и того же пароля. Единственный способ сопоставления паролей - password_verify(). Это может быть проблемой в вашем случае. Вы уверены, что MD5 генерирует один и тот же хэш для одного и того же пароля при нескольких вызовах? –

ответ

0

Попробуйте этот код: -

$s_email = mysql_real_escape_string($_POST['email']); 
    $s_password = mysql_real_escape_string($_POST['password']); 
    $s_email = trim($s_email); 
    $s_password = md5(trim($s_password)); 

    $res=mysql_query("SELECT student_id, student_firstname FROM studentdata WHERE student_email='$s_email' AND student_password = '$s_password'"); 

    if (!$res) { 
     // Debug query result by below code 
     //echo 'Could not run query: ' . mysql_error(); 
     //exit; 
     echo '<script language="javascript">'; 
     echo 'alert("Username/Password Seems Wrong !")'; 
     echo '</script>'; 
    }else{ 
     $row = mysql_fetch_row($result); 
     $stu_id = $row[0];   
     $stu_fname = $row[1]; 
     $_SESSION['user'] = $stu_id; 
     header("Location: ../index.php"); 
    } 

Надеется, что это поможет :)

+0

Спасибо, что сработали отлично. – Lost

+0

Добро пожаловать :) –

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