我不知道爲什麼這個PHP登錄腳本不起作用。當我嘗試登錄時,它總是返回:「Ongeldig wachtwoord/gebruikersnaam!」。此登錄腳本有什麼問題?
這是腳本:
session_start();
include('connect.php');
// functie voor random key
function make_rand($length) {
$chars = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1234567890";
$rand = '';
for ($i = 1; $i <= $length; $i++) {
$num = rand(0, strlen($chars));
$rand .= substr($chars, $num, 1);
}
return $rand;
}
該函數創建一個隨機密鑰爲SESSION_ID使用。
// kijk of formulier is verzonden
if ($_SERVER['REQUEST_METHOD'] == "POST") { // indien verzonden
$query= mysql_query("SELECT * FROM customers WHERE name = '" .$_POST['inlognaam'] . "'");
服務器會檢查用戶名存在..
if (mysql_num_rows($query) > 0) { // als er een gebruiker is gevonden
$user = mysql_fetch_object($query);
if ($user->password == isset($_POST['password'])) {
$_SESSION['user_id'] = $user->name;
$rand_key = make_rand(50); // maak een random string voor sessie session_id mbv van functie
$_SESSION['session_id'] = $rand_key;
// zet de sessie id in de db zodat we hem later kunnen controleren
mysql_query("UPDATE customers SET session_id = '" . $rand_key . "' WHERE name = '" . $_SESSION['inlognaam'] . "'");
$_SESSION['user_ip'] = $_SERVER['REMOTE_ADRESS'];
echo 'Inloggen is gelukt!';
}
當用戶存在,服務器將創建一個SESSION_ID,節省了用戶的IP地址在user_ip,它也節省了用戶名(USER_ID)
else { // ongeldig wachtwoord
echo 'Ongeldig wachtwoord/gebruikersnaam!';
}
} else { // ongeldige gebruikersnaam
echo 'Ongeldig wachtwoord/gebruikersnaam!';
}
}
如果用戶不存在回聲的:Ongeldig gebruikersnaam/wachtwoord」(無效的用戶名/密碼)
else {
echo '<table id="loginbox">';
echo '<tr><td><b>Login:</b></td></tr>';
echo '<form action="test.php" method=\"post\">';
echo '<tr><td>Gebruikersnaam:</td></tr><tr><td> <input style="width:120;" name="inlognaam" type="text" id="inlognaam"> </td></tr>';
echo '<tr><td>Wachtwoord:</td></tr><tr><td> <input type="password" style="width:120;" name="password id="password"> </td></tr>';
echo '<tr><td><input type="submit" name="Submit" value="Login"></td></tr>';
echo '</table>';
}
這是登錄表單。
編輯:我只注意到它甚至不使用PHP腳本,它只是寫入輸入URL的內容..
例:
localhost/School/test.php?inlognaam=Thomas&password=british9&Submit=Login
什麼是你生成的SQL查詢看起來像?它在數據庫中運行時是否工作? – andrewsi
生成的SQL應該變成這樣:''SELECT * FROM customers WHERE name ='Thomas''' – Thakkennes
當一個叫做'Thomas O'Connor'的客戶出現時會發生什麼? – andrewsi