我試圖讓一個PHP登錄,使之出現註銷按鈕如果登錄並顯示登錄表單,如果沒有登錄,這是形式和按鈕顯示代碼:PHP沒有檢測到會話變量值正確
<?php if ($_SESSION["login"] == "1") { ?>
<form class="form-signin" method="post">
<h2 class="form-signin-heading">You are signed in!</h2>
<input type="hidden" name="op" value="logout">
<button class="btn btn-lg btn-primary btn-block" type="submit">Log out</button>
</form>
<?php } else { ?>
<form class="form-signin" method="post">
<h2 class="form-signin-heading">Sign in</h2>
<input type="text" class="form-control" placeholder="Username" name="user" required="" autofocus="" style="margin:2px 0">
<input type="password" class="form-control" placeholder="Password" name="pass" required="" style="margin:2px 0">
<input type="hidden" name="op" value="login">
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
<?php }; ?>
這裏是啓動會話並設置變量登錄代碼:
if (isset($_REQUEST["user"]) && isset($_REQUEST["pass"]) && isset($_REQUEST["op"]) && $_REQUEST["op"] == "login") {
$user = $_REQUEST["user"];
$pass = $_REQUEST["pass"];
$con = mysql_connect("localhost", USER, PASS);
if (!$con) {
die("Could not connect: " . mysql_error());
}
mysql_select_db("reddit", $con);
$sql = mysql_query("SELECT username from t120937_users WHERE t120937_users.username = '" . $user . "' AND t120937_users.password = '" . $pass . "';");
if (mysql_num_rows($sql) > 0) {
session_start();
$_SESSION["login"] = "1";
header("Location: /~rauno.sams/");
} else {
echo "Incorrect login information :(";
}
mysql_close($con);
}
if(isset($_REQUEST["op"]) && $_REQUEST["op"] == "logout") {
$_SESSION["login"] = "";
session_destroy();
header("Location: /~rauno.sams/");
}
然而,顯示登錄表單每次和我不知道爲什麼。
無關,但你可以做'if(isset($ _REQUEST [「user」],$ _REQUEST [「pass」],$ _REQUEST [「op」]] ))'而不是每個變量再次調用'isset'。 – dave
感謝您的提示! – Praxbyr