[英]Login.php Redirect To Members.php Not Working
我有一個登錄,注冊頁面。 注冊頁面工作正常,但是我的登錄頁面有問題。 當我成功登錄時,應該將我重定向到一個名為members.php的頁面,但只能停留在同一頁面上,並且沒有任何位置。 這是我認為可能出現問題的login.php頁面的代碼:
<?php
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db_name") or die(mysql_error());
if (isset($_COOKIE['ID_my_site'])) {
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error());
while ($info = mysql_fetch_array($check)) {
if ($pass != $info['password']) {
} else {
header("Location: members.php");
}
}
}
if (isset($_POST['submit'])) { // if form has been submitted
if (!$_POST['username'] | !$_POST['pass']) {
die('<h1 class="error"></h1><p>You missed something</p>');
}
if (!get_magic_quotes_gpc()) {
$_POST['email'] = addslashes($_POST['email']);
}
$check = mysql_query("SELECT * FROM users WHERE username = '" . $_POST['username'] . "'") or die(mysql_error());
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
die('<h1 class="error"></h1><p>That user does not exist in our database</p>');
}
while ($info = mysql_fetch_array($check)) {
$_POST['pass'] = stripslashes($_POST['pass']);
$info['password'] = stripslashes($info['password']);
$_POST['pass'] = md5($_POST['pass']);
if ($_POST['pass'] != $info['password']) {
die('<h1 class="error"></h1><p>Incorrect password, please try again</p>');
} else {
$_POST['username'] = stripslashes($_POST['username']);
$hour = time() + 3600;
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
header("Location: members.php");
}
}
} else {
?>
<h1 class="login"></h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Username</p><input type="text" class="username" name="username">
<p>Password</p><input type="password" class="password" name="pass">
<div><button type="submit" name="submit" value="Login">Log in</button></div>
</form>
<?php
}
?>
問題可能在此行中:
if ($pass != $info['password']) {
}
如果密碼不匹配,它會告訴腳本不執行任何操作。 嘗試在此處放置一條消息,例如:
if ($pass != $info['password'])
{
die('invalid login');
}
如果這不起作用,請將echo語句放在整個頁面中,以便您可以跟蹤執行過程中發生的情況。 例如, echo 'checking login <br />', echo 'login checked..<br />'
等。
另外,您絕對應該加密密碼,不要以純文本形式存儲密碼,或者如果您的網站遭到黑客入侵(它發生在許多知名人士的名字下),那么他們將以純文本形式存儲每個人的密碼。
另外,通過將$username
確切地放在查詢中,可以讓您的站點保持對sql注入的開放性,如果您不希望被黑客入侵,建議您仔細閱讀該內容。
首先嘗試聲明您自己的變量,而不是重新初始化內置變量,例如$ _POST ['pass'] = md5($ _ POST ['pass']); 到$ pass = md5($ _ POST ['pass']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.