2016-01-16 5 views
-5

Создал простую форму для входа, но он, похоже, не работает. Он всегда открывает страницу администратора.простой вход php не работает

$username=$_POST["username"]; 
$password=$_POST["password"]; 

if(mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'",$con)){ 
session_start(); 
$_SESSION["username"]=$username; 
$_SESSION["password"]=$password; 
header('location:admin.html'); 
} 
else{ 
echo "Login Failed.<a href=index.html>Re Login</a"; 
} 

Нужна помощь. А вот часть html.

<form method="post" id="loginform" action="validate.php"> 
<table> 
    <tr> 
     <td> 
      <label>Username :</label> 
     </td> 
     <td> 
      <input type="text" name="username"/> 
     </td> 
    </tr> 
<br> 
    <tr> 
     <td> 
      <label>Password :</label> 
     </td> 
     <td> 
      <input type="password" name="password"/> 
     </td> 
    </tr> 
<br> 
    <tr> 
     <td> 
     <input type="submit" id="login" value="Log In" class="btn btn-primary"/> 
     </td> 
     <td> 
      <input type="reset" id="reset" value="Reset" class="btn btn-primary"/> 
     </td> 
    </tr> 
</table> 

Нужна рабочий код в 2HRS еще им dommed

+0

Любая ошибка ..? если вы сначала вводите имя пользователя или пароль, задаете сессию, и вы можете войти на страницу. –

+4

Вы просто проверяете, успешно ли выполнялся запрос, вы не проверяете, действительно ли вы получаете любые строки пользователей, которые были возвращены из выбранного. Кроме того, пожалуйста, используйте подготовленные/параметризованные запросы для смягчения взлома sql. И вы должны использовать собственный PHP 'password_hash' http://php.net/manual/en/function.password-hash.php api для хэш-паролей (никогда не хранить пароли с открытым текстом). – JimL

+1

Этот код очень плохой и небезопасный, он широко открыт для SQL-инъекции и использует функции mysql_, которые больше не доступны в последних версиях PHP. Также я не вижу нигде в вашем коде, где вы фактически открываете соединение с базой данных. – GordonM

ответ

2

mysql_query

Для SELECT, SHOW, DESCRIBE, EXPLAIN и другие операторы возвращения ResultSet, mysql_query() возвращает ресурс на успех, или FALSE по ошибке .

Применение mysql_num_rows()

Получает число строк из результирующего набора.

$result = mysql_query(mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'",$con)); 
$row = mysql_num_rows($result); 
if ($row > 0) { 
    header('location:admin.html'); 

} else { 
echo "Login Failed.<a href=index.html>Re Login</a"; 

} 

Примечание

Mysql устарела вместо этого использовать MySQLi или PDO

Не хранить простой пароль в использовании базы данных хэширования Technic

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/faq.passwords.php

Для предотвращения SQL инъекций проверки How can I prevent SQL injection in PHP??

+0

ty для справки – user1881473

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