我有一個非常簡單的登錄腳本,使用PHP的會話來限制訪問,但我有一個非常奇怪的問題。即使使用正確的憑證,登錄始終在第一次嘗試時失敗,但第二次和後續嘗試沒有問題。我真的很困惑,所以任何幫助,將不勝感激。PHP登錄需要兩次嘗試才能工作
登錄表單,去掉不相關的代碼(是的,我知道,存儲PHP文件作爲純文本內登錄的東西通常是一個壞主意,但它不是有關在這種情況下):
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$valid_user = "user";
$valid_password = "password";
if (($_POST['op'] == "ds") && ($username == $valid_user) && ($password == $valid_password)) {
session_start();
session_register('valid');
$_SESSION['valid'] = 'yes';
header("Location: valid.php");
}
?>
<p>Username:<br>
<input type="text" name="username" size=15 maxlength=25></p>
<p>Password:</strong><br>
<input type="password" name="password" size=15 maxlength=25></p>
<input type="hidden" name="op" value="ds">
<p><input type="submit" name="submit" value="login"></p>
和每個需要authenications頁面有
require "auth.php"
auth.php:
<?php
session_start();
if($_SESSION['valid'] != 'yes') {
header("Location: login.php");
}
?>
請勿使用'session_register('valid');'。這隻會告訴php將'$ valid'的值放入'$ _SESSION ['valid']'中,但是無論如何你都是這樣做的(這也是它應該如何完成的)。 – poke 2010-09-19 19:08:23