2013-03-31 5 views
-4

Я пытаюсь создать систему входа в систему, но по какой-то причине в моем коде есть ошибка, и я не могу понять, что это такое.Ошибка входа в систему PHP

<?php 
include "connect.php"; 
?> 

<body> 
<?php 
if(isset($_POST['submit'])){ 
$username = $_POST['email']; 
$password = $_POST['password']; 

$result = mysql_query($con,"SELECT * FROM users WHERE username=$username AND password=$password"); 
$num = mysql_num_rows($result); 
if($num == 0){ 
echo "Bad login, go <a href='login.php'>back</a>."; 
}else{ 
session_start(); 
$_SESSION['username'] = $username; 
header("Location: index.php"); 
} 
} 
?> 

    <div class="container"> 
     <form action='signin.php' method='POST' class="form-signin" > 
     <h2 class="form-signin-heading">Please sign in</h2> 
     <input type="text" class="input-block-level" placeholder="Email address" name="email"> 
     <input type="password" class="input-block-level" placeholder="Password" name="password"> 
     <label class="checkbox"> 
      <input type="checkbox" value="remember-me"> Remember me 
     </label> 
     <button class="btn btn-large btn-primary" type="submit" name="submit" value="Login">Sign in</button> 
     </form> 

Эти ошибки на представить:

Warning: mysql_query() expects parameter 1 to be string, object given in C:\xampp-portable\htdocs\bootstrap\signin.php on line 71 

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\xampp-portable\htdocs\bootstrap\signin.php on line 72 
Bad login, go back. 
+0

По крайней мере *** описать *** симптомы проблемы! Дикая догадка: http://stackoverflow.com/questions/8028957/headers-already-sent-by-php – deceze

+0

Когда я вхожу в него, он терпит неудачу. –

+0

ваше соединение с базой данных нормально? – MrSimpleMind

ответ

2

1) Вы путаете MySQL & MySQLi запрос. Это

$result = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'"); 
and 
$result = mysqli_query($con,"SELECT * FROM users WHERE username='$username' AND password='$password'"); 

2) Этот код очень опасно инъекции SQL. Вы должны его дезинфицировать, прежде чем использовать его формально. 3)

for the success case, set a session id sth like that: $session_id = session_id(); 
reverse that: 
$username=$_SESSION["username"]; 
and use both variables in redirection: 
header ("Location: index.php?username=$username&session_id=$session_id"); 
+0

Все еще не исправляет мою проблему. –

+0

после 3) Есть еще некоторые вещи, не стесняйтесь спрашивать –

+1

mysql_real_escape_string устарел и будет удален в будущих версиях PHP. Предпочитаете mysqli_real_escape_string() ИЛИ PDO :: quote(). Поскольку вы начали с запроса mysqli, это хороший выбор. –

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