2014-11-03 126 views
0

我想學習PHP和MySQL,我想做一個登錄頁面,它將檢查數據庫中的信息,如果信息正確,將讓用戶通過。PHP登錄檢查用戶名和密碼代碼不起作用

我有下面的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文件。在同一個文件(主文件)中,我有一個包含3個輸入字段的表單:用戶名,密碼和提交類型。

問題是,當我包含上述的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 2014-11-03 17:44:22

+0

另外,如果沒有看到這個腳本的POST文件,就很難回答這個問題。 – esqew 2014-11-03 17:44:54

+0

要發佈什麼內容?網址是否正確?你的表單是什麼樣的?呃,哦,你很容易[sql -injections](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。 – Jonast92 2014-11-03 17:46:15

回答

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

它工作得很好! :) 謝謝。還有一個問題。如何將用戶「發送」到其他頁面,具體取決於登錄是否成功? – 2014-11-03 18:06:49

+0

'header('location:welcome.php');'在使用頭函數之前不能有任何輸出。 – 2014-11-03 18:08:22

+0

似乎任何時候我點擊sumbit按鈕,主頁消失,我只得到一個字符串說:連接成功,沒有任何來自login.php。這是爲什麼? – 2014-11-03 18:25:11

1

需要用於行

echo "Invalid login information."; 
分號0

提示

還採取一看mysqliprepare statements數據庫連接,構建保存SQL語句。

1

你查詢變量$res而你應該查詢值$sql
更改下面的代碼:

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

而且,你已經失蹤分號作爲@Barry說,在他的回答

1

你有錯誤報告嗎?這將顯示任何錯誤或通知 後的用戶名的回聲會給你一張支票的形式發佈OK

$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作爲一個例子