我试图做一个页面管理面板使用案例,开关和会话。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