2015-10-15 36 views
0

我有一個文件的login.php看起來像這樣:PHP/MySQL的:登錄表單不起作用

include "myfuncs.php"; 

$connect = dbConnection(); 

$username = $_POST["username"]; 
$passwort = md5($_POST["password"]); 

$query = "SELECT username, password FROM user WHERE username LIKE '$username' LIMIT 1"; 
$ergebnis = mysql_query($query); 
$row = mysql_fetch_object($result); 

if($row->password == $passwort) 
{ 
    echo "Hi $username"; 
    $_SESSION["username"] = $username; 

    echo "Login successfully"; 
} 
else 
{ 
    echo "Login doesn't work"; 
} 

和它看起來像這樣一個myfuncs.php文件:

function dbConnection() 
{ 
$servername = "..."; 
$username = "..."; 
$password = "..."; 
$dbname = "..."; 

$db_connect = new mysqli($servername, $username, $password, $dbname); 

    if ($db_connect->connect_error) 
    { 
     die("Connection failed: " . $db_connect->connect_error); 
    } 
    return $db_connect; 
} 

不幸的是,登錄表單不起作用 - 即使用戶名和密碼與數據庫條目匹配時,它總會給出「登錄不起作用」的錯誤。

+0

嘗試調試您的代碼以找出錯誤。 – Jens

+0

你確定使用md5將密碼存儲在數據庫中嗎? – ThinkTank

+0

你在混合mysql_和mysqli_函數。你使用mysqli連接,但是然後使用mysql_函數運行檢查,它不知道你的mysqli_連接。將所有內容更新到他們的mysqli同行。 – Oldskool

回答

0

我看到你在第6行的變量名中有錯誤。 試試這個:

$query = "SELECT username, password FROM user WHERE username LIKE '$username' LIMIT 1"; 
$result= mysql_query($query); 
$row = mysql_fetch_object($result); 
1

精氨酸,你是混合mysqli帶班mysql功能。我不認爲它的工作原理...

它的工作原理是這樣的:PHP MySQLI

$stmt = $mysqli->prepare($query) 

while ($stmt->fetch()) { 
    (...) 
} 
0

有幾個問題與您的代碼。在myfuncs.php中使用mysqli,然後在代碼中使用mysql(不帶「i」)。 mysql(沒有「我」)已被棄用,所以你應該在任何地方使用mysqli。

更重要的,在你的代碼中有:

$query = "SELECT username, password FROM user WHERE username LIKE '$username' LIMIT 1"; 
$ergebnis = mysql_query($query); 
$row = mysql_fetch_object($result); 

請參閱從接下來的兩行中的粗體文字(它應該是相同的變量):

$ ergebnis =請求mysql_query( $查詢);

$ row = mysql_fetch_object($ result);

你應該有

$result = mysql_query($query); 

如果你使用MySQL。