我尝试使用案例,转换和会话来执行一个页面管理面板。
我的代码是:
<?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;
}
}
?>
问题是,如果我进入页面,它不会保存任何会话,我不得不再次登录。
我该如何解决呢?这样安全吗?
非常感谢
答案 0 :(得分:0)
将session_start()移动到页面的最顶部。 php开始标记后的第一行......
答案 1 :(得分:-1)
session_start()
需要添加到页面顶部。我认为这会奏效。