我知道這個問題被張貼了個遍,我已經嘗試過與未定義的變量:用戶名和密碼,
修復它,如果(isset($ _ POST [「名」])){} ...並檢查$ _POST是否帶有大寫字母,並查看它們是否在登錄表單和check_login腳本中聲明爲正確,我無法找到爲什麼會發生這種情況。
昨天是所有工作正常,今天當我打開我的電腦我只是嘗試更進一步,突然不工作了還數據庫表用戶是空的?我通過xampp在本地存儲數據庫,所以沒有人能夠進入它,我不知道是什麼改變了。
這是我的登錄表單:
<?php
session_start();
if(isset($_SESSION['memberlogged'])== true)
{
header("location: login_success.php");
}
?>
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<center>
<body style="background-color:rgb(248,248,248);">
<div id="loginmenu">
<img src="/img/choose.jpg"><br>
<input type="text" name="username" id="unu" placeholder="username"> <br /><br>
<input type="password" name="password" id="unu" placeholder="password"> <br />
<br><input type="submit" value="Log in" id="button" onClick="parent.location='check_login.php'">
<div class="divider"></div>
<input type="submit" id="button2" onClick="parent.location='index.php'" value='Leave' name="leave">
</center>
</div>
</body>
</html>
,這是我check_login.php腳本
<?php
include ("config.php");
// username and password sent from form
$password=$_POST['password'];
$username=$_POST['username'];
// To protect MySQL injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$query="SELECT * FROM users WHERE username='$username' and password='$password'";
$result=mysql_query($query);
// Mysql_num_row is counting table row
if($query)
{
$count=mysql_num_rows($result);}
else
{die ("something is not good");}
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// SAVE SESSION VARIABLES AND REDIRECT TO "login_success.php"
$_SESSION['username'] = $username;
$_SESSION['memberlogged'] = true;
header("location:login_success.php");
exit;
}
else {
echo "Wrong Username or Password";
}
?>
,當我嘗試連接( Ť他登錄的數據都是100%corect)我得到
注意:未定義的變量:用戶名在********* \ check_login.php第6行
注意:未定義的變量:在密碼**第7行 錯誤的用戶名或密碼
使用了'如果($查詢)'檢查查詢工作正常。然而,你的'if'語句實際上是檢查'$ query'是否爲空。你需要使用'if($ result)'。另外,停止使用'mysql_'函數 - 它們將在PHP 7中被刪除。使用PDO或'mysqli_'並學習準備好的語句。此外,您實際上並不記錄錯誤是什麼,所以你要調試此使用僥倖 – DaveyBoy
「你不是實際登錄錯誤是什麼,所以你要調試此使用僥倖」我不是確定你的意思,你想說我沒有指出錯誤報告最新的問題? – mrwhite
爲了幫助調試,您需要知道錯誤是什麼。唯一出現錯誤的地方是標準的PHP錯誤日誌(假設你已經設置了'error_reporting'配置變量。如果您在訪問MySQL數據庫時遇到錯誤,您如何確定錯誤是出現在您的代碼中還是數據庫服務器本身存在問題?如果您在代碼中添加了一些調試日誌記錄,那麼當發生錯誤時,您可以記錄變量,錯誤消息等,這將使調試更容易。始終處理錯誤並給用戶提供有用的信息 – DaveyBoy