2016-01-12 4 views
-1

Я пытаюсь создать сайт со страницей регистрации, но каждый раз, когда я ввожу адрес электронной почты и пароль, я получаю «неправильные учетные данные». Ниже приведены мои коды, первый мой HTML-код:имя пользователя и пароль не работает

<form class="form-login" action = "check.php"> 
        <div class="errorHandler alert alert-danger no-display"> 
         <i class="fa fa-remove-sign"></i> You have some form errors. Please check below. 
        </div> 
        <fieldset> 
         <div class="form-group"> 
          <span class="input-icon"> 
           <input type="text" class="form-control" name="user" placeholder="Username"> 
           <i class="fa fa-user"></i> </span> 
         </div> 
         <div class="form-group form-actions"> 
          <span class="input-icon"> 
           <input type="password" class="form-control password" name="pass" placeholder="Password"> 
           <i class="fa fa-lock"></i> 
           <a class="forgot" href="#"> 
            I forgot my password 
           </a> </span> 
         </div> 
         <div class="form-actions"> 
          <label for="remember" class="checkbox-inline"> 
           <input type="checkbox" class="grey remember" id="remember" name="remember"> 
           Keep me signed in 
          </label> 
          <button type="submit" class="btn btn-green pull-right" name="btn-login"> Login <i class="fa fa-arrow-circle-right"></i></button> 

тогда мой код check.php:

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
// username and password sent from form 
$myusername=$_POST['user']; 
$mypassword=$_POST['pass']; 
echo "$myusername"; 
$sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 
    // Register $myusername, $mypassword and redirect to file 
    session_register("myusername"); 
    session_register("mypassword"); 
    header("location:.index2.html"); 
} 
else { 
    echo "Wrong credentials!"; 
} 

и вот моя первая строка таблицы: admins table

и я точно войти [email protected] как имя пользователя и 123456789 в качестве пароля в соответствующих полях.

+1

Вы никогда не определяете $ tbl_name. Вы также никогда не проверяете наличие ошибок. –

+1

У вас есть несколько записей с одинаковыми учетными данными? – dev0

+0

Я добавил имя таблицы: $ tbl_name = "admins"; // Имя таблицы @JohnConde – user3696174

ответ

2

и я точно ввести [email protected] как имя пользователя

Поскольку запись в таблице "[email protected]", если база данных использует регистрозависимые сравнения, то вы указали неправильное имя пользователя.

Возможно также, что существует более 1 записи с этим именем пользователя? В этом случае ваше сравнение будет не в состоянии:

if($count==1) 

Кроме того, пара очень важных примечания:

  1. Ваш код настежь к SQL инъекции. Используйте подготовленные операторы и параметры запроса вместо , выполняя ввод пользователя в качестве кода. Начните с reading this.
  2. Вы храните пароли пользователей как простой текст. Это абсолютно безответственным вашим пользователям. Пароли должны быть закрыты 1-полосным хешем и должны никогда не могут быть найдены никто. Даже вы не являетесь владельцем системы.

Edit: Как отметил @fred в комментарии ниже. Ваша форма использует метод GET:

<form class="form-login" action = "check.php"> 

Но вы проверяя значения POST:

$myusername=$_POST['user']; 

Либо изменить один или другой.

+0

Я ввел все в нижнем регистре и изменил оператор if на if ($ count), но все тот же результат. о ваших заметках, я обеспечу it.thnks – user3696174

+1

'

+0

@ user3696174: Вы определяете какую-либо из других переменных, которые используете? Например, '$ tbl_name'? Каков фактический запрос, выполняемый, когда это выполняется? – David

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