2013-03-31 3 views
-4

로그인 시스템을 만들려고하고 있는데 어떤 이유로 내 코드에 오류가있어 그것이 무엇인지 파악할 수 없습니다.PHP 로그인 시스템 오류

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

적어도 ***는 *** 증상을 설명합니다! Wild guess : http://stackoverflow.com/questions/8028957/headers-already-sent-by-php – deceze

+0

로그인하면 실패합니다. –

+0

이 (가) 데이터베이스에 연결되어 있습니까? – MrSimpleMind

답변

2

1) 당신은 혼란 MySQL의 & mysqli 쿼리

<?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> 

제출에 오류가 있습니다. 그것은이 코드는 SQL 인젝션의 매우 위험)

$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입니다. 공식적으로 사용하기 전에 위생 처리가 필요합니다. 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 쿼리로 시작 했으므로 좋은 선택이다. –