我試圖做一個頁面管理面板使用案例,開關和會話。php登錄/註銷作爲一個頁面
我的代碼是:
<?php
if (isset($_SERVER['QUERY_STRING'])) {
switch ($_SERVER['QUERY_STRING']) {
case "logout":
break;
case "restpassword":
break;
// Default Page
default:
session_start();
if (isset($_POST['username']) && isset($_POST['password']) && $_POST['username']) {
$username = $_POST['username'];
$password = $_POST['password'];
$userid = login($username, $password);
if ($userid != "0") {
//Correct username and password set session & redirect
if (isset($_SESSION['user_id'])) {
$userid = $_SESSION['user_id'];
$username = $_SESSION['username'];
echo "Welcome " . $username;
}
break;
} else {
$msg = "Incorrect username or password";
}
}
?>
<html>
<head>
</head>
<body>
<form method="post">
<?php
//Print error message
if (isset($msg)) {
echo $msg;
}
?>
<label>Username:</label>
<input name="username" type="text" required="true"/>
<label>Password :</label>
<input name="password" type="password" required="true"/>
<input type="submit" name="submit" value="Login" required="true"/>
</form>
</body>
</html>
<?php
break;
}
}
?>
的問題是,如果我再進入到頁面它不保存任何會話,我不得不重新登錄。
我應該如何解決這個問題,並確保它的安全性?
非常感謝
將'session_start()'移動到頁面的頂部,而不是'switch'代碼的一部分。 – mitkosoft
從你的登錄鏈接,我會建議你傳遞一個變量。像www.login.com?用戶訪問一樣。這樣,如果$ _GET [user] = access,那麼您可以運行登錄功能,執行檢查並保存會話。然後對於註銷鏈接,運行您的註銷功能的另一個變量。希望你明白,如果你仍然想堅持一個頁面 –
可以給我一個示例代碼如何做到這一點,謝謝 – Markos