2014-11-03 4 views
0

Я пытаюсь изучить PHP и MySQL, и я хотел сделать страницу входа в систему, которая будет проверять информацию в базе данных и позволит пользователю пройти, если информация верна ,PHP login проверить имя пользователя и пароль код не работает

У меня есть следующий PHP код:

if(isset($_POST['submit'])) { 
     $username = $_POST['username']; 
     $password = $_POST['password']; 

     $sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1"; 
     $res = mysqli_query($sql); 
     if(mysqli_num_rows($res) == 1) { 
      echo "You have successfully logged in."; 
     } else { 
      echo "Invalid login information."; 
     } 
    } else { 
     echo "Not working."; 
    } 

В моем главном файле у меня есть 2 включает в себя. Одним из них является соединение, а другое - это php-файл. В том же файле (основной файл) у меня есть форма с тремя полями ввода: имя пользователя, пароль и тип отправки.

Проблема заключается в том, что когда я включаю указанный выше php-файл, страница показывает пустое место, и я ничего не получаю, даже строка «Не работает». Почему это? Что плохого в моем синтаксисе?

UPDATE:

Мой главный код файла:

<?php 

    include 'includes/connection.php'; 
    include 'includes/login.php'; 

?> 


<html> 
<head> 
    <title>Login</title> 
    <link rel="stylesheet" href="css/login_page.css"> 
</head> 
<body> 
    <div class="flex"> 
     <div class="container"> 
      <h3>Login to the site...</h3> 
      <p>The awesome site we created!</p> 
      <form method="post" action="login.php"> 
       <input type="text" name="username" placeholder="Username"> 
       <input type="password" name="password" placeholder="Password"><br /><br /> 
       <input type="submit" name="submit" class="btn-submit" value="Login"> 
      </form> 
     </div> 
    </div> 
</body> 
</html> 

Подключение PHP файл:

<?php 

$server = "localhost"; 
$user = "Flopet17"; 
$pass = "1234"; 
$db = "listing"; 


$conn = new mysqli($server, $user, $pass); 
mysqli_select_db($db); 


if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connection succeed"; 
?> 
+2

[** Пожалуйста, дон 'использовать 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – esqew

+0

Также очень сложно ответить на этот вопрос, не увидев HTML, что 'POST' для этого скрипта. – esqew

+0

Что вы публикуете? Правильно ли указан URL? Как выглядит ваша форма? И, о, вы настолько уязвимы для [sql-injectionions] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). – Jonast92

ответ

1
<?php 

$server = "localhost"; 
$user = "Flopet17"; 
$pass = "1234"; 
$db = "listing"; 


//$conn = new mysqli($server, $user, $pass); 
//mysql_select_db($db);//Invalid with my sql 
$conn = new mysqli($server, $user, $pass,$db); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connection succeed"; 
?> 

Удалить атрибут действия из формы. Действие будет на одной странице. Если вам нужно создать действие на другой странице, тогда в него должно быть включено соединение db.

В разделе запроса:

if(isset($_POST['submit'])) { 
     $username = $_POST['username']; 
     $password = $_POST['password']; 

     $sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1"; 
     // $res = mysqli_query($sql); 
     $res = $conn->query($sql); 
     if($conn->num_rows($res) == 1) { 
      echo "You have successfully logged in."; 
     } else { 
      echo "Invalid login information."; 
     } 
    } else { 
     echo "Not working."; 
    } 
+0

Работал очень хорошо! :) Спасибо. Еще один вопрос. Как я могу «отправить» пользователей на другие страницы, в зависимости от успеха входа или нет? –

+0

'header ('location: welcome.php');' перед использованием функции заголовка не должно быть никакого вывода. –

+0

Кажется, что в любое время, когда я нажимаю кнопку sumbit, главная страница исчезает, и я получаю только строку: Connection success, ничего из login.php. Почему это? –

1

точкой с запятой требуется для линии

echo "Invalid login information."; 

Совет

Также смотрите на mysqli и prepare statements для подключения к базам данных и построения сохранения операторов SQL.

1

Вы запрашивая переменную $res в то время как вы должны запрашивать значение $sql
Измените следующий код:

$sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1"; 
$res = mysql_query($sql); 

Кроме того, вы недостающую запятую, как говорит @Barry в своем ответе

1

у вас есть отчеты об ошибках на? это покажет любые ошибки или уведомления эхо пост пользователя даст вам чек, что форма проводки ок

$connect = mysql_pconnect($hostname, $username, $password) or 
trigger_error(mysql_error(),E_USER_ERROR); 

mysql_select_db($database, $connect; 
$query_Recordset1 = "SELECT * FROM users WHERE users.username=$username ORDER BY 
user.username LIMIT 1"; 
// 
$Recordset1 = mysql_query($query_Recordset1, $connect) or die(); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
$password_check=$row_Recordset1['password']; 
if ($password_check==$password){echo"log in ok":}else{ what to do if fail 

это очень небезопасный однако смотреть на http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL как пример

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