2016-03-29 2 views
1

когда я ввел правильный пароль и имя пользователя, мой код входит в оператор else. Когда я ввожу неправильное имя пользователя и пароль, он также переходит в инструкцию else. Что я делаю неправильно с этим кодом? Я использую новую версию программного обеспечения сервера Wamp в операционной системе Windows.форма входа в php с проверкой mysql

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "php"; 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) 
{ 
    die("Connection failed: " . mysqli_connect_error()); 
} 
$login=$_POST['username']; 
$passwd=$_POST['passwd']; 
if($username!=''&&$passwd!='') 
{ 
    $query="select * from users where login='".$username."' and passwd='".$passwd."'" or die("Connection failed: " . mysqli_connect_error()); 
    $res=mysqli_fetch_row($query); 
    if($res) 
    { 
     $_SESSION['username']=$login; 
     echo "welcome to php"; 
    } 
    else 
    { 
     echo'You entered username or password is incorrect'; 
    } 
} 
else 
{ 
    echo'Enter both username and password'; 
} 

?> 
<html> 
    <body> 
    <form action="login3.php" method="post"> 
     Username:<br> 
     <input type="text" name="username"><br> 
     Password:<br> 
     <input type="PASSWORD" name="passwd"> 
     <BR> 
     <intput type="submit" value="login" name="submit"><INPUT Type="submit "value="reset"> 
    </form> 
    </body> 
</html> 
+9

' " что я сделал не так с этим кодом"' - *** Так много вещей *** Для начала, ваш код широко открыт для SQL-инъекций. Кроме того, вы сохраняете пароли пользователей в виде обычного текста, который ** абсолютно безответственен ** для ваших пользователей. Вы также никогда не выполняете * ваш запрос к базе данных, просто пытаетесь извлечь строку из строки *. Вы также не проверяете ошибки (потому что вы определенно получаете хотя бы один). И, наконец, вы пытаетесь войти в каждый пользователь как «root», потому что вы используете '$ username' в своем запросе вместо' $ login'. – David

+0

Я очень новичок в Mysql с Php.i напишу этот код в соответствии с моими знаниями, отличное объяснение. Спасибо за то, что потратили на это время. –

ответ

1

Прежде всего, в коде есть много неправильных вещей, просто см. Комментарий @David. Я думаю, что вы не запускали запрос. Вот код, который необходимо изменить:

if($login!=''&& $passwd!='') 
{ 
$query="select * from users where login='".$login."' and passwd='".$passwd."'"; 

$result=mysqli_query($conn,$query); 

if(!$result) 
    die("Query Failed: " . mysqli_error($conn)); 
else{ 
    if(mysqli_num_rows($result)>0) 
    { 
     $_SESSION['username']=$login; 
     echo "welcome to php"; 
    } 
    else 
    { 
     echo'You entered username or password is incorrect'; 
    } 
} 
} 
+0

Если запрос не удается, почему вы ищете ошибку * connection *? – David

+0

@ David Спасибо за указание, просто опечатка при копировании. – geeksal

+0

Спасибо за вашу помощь. Работала хорошо. –

0

В настоящее время вы пытаетесь войти в систему, используя свое имя пользователя (root) вместо имени пользователя из POST.

Вот это вы ошибки:

if($username!=''&&$passwd!='') 

Должно быть:.

if($login!=''&&$passwd!='')