login.php表单和password.php正在运行,但进入网站的验证不是
<?php
$USERS["username1"] = "password1";
$USERS["username2"] = "password2";
$USERS["username3"] = "password3";
function check_logged(){
global $_SESSION, $USERS;
if (!array_key_exists($_SESSION["logged"],$USERS)) {
header("Location: login.php");
};
};
?>
的login.php
<?php
session_start();
include("passwords.php");
if ($_POST["ac"]=="log") { /// do after login form is submitted
if ($USERS[$_POST["username"]]==$_POST["password"]) { /// check if submitted
$_SESSION["logged"]=$_POST["username"];
} else {
echo 'Incorrect username/password. Please, try again.';
};
};
if (array_key_exists($_SESSION["logged"],$USERS)) { //// check if user is logged or not
echo "You are logged in."; //// if user is logged show a message
} else { //// if not logged show login form
echo '<form action="login.php" method="post"><input type="hidden" name="ac" value="log"> ';
echo 'Username: <input type="text" name="username" />';
echo 'Password: <input type="password" name="password" />';
echo '<input type="submit" value="Login" />';
echo '</form>';
};
?>
我不能让这部分工作
页面验证:
<?php
session_start(); /// initialize session
include("passwords.php");
check_logged(); /// function checks if visitor is logged.
?>
页面代码在这里
我在做错了什么?验证不会检查用户是否已登录。 它只是进入页面。答案 0 :(得分:4)
你应该添加退出;设置重定向标头后,不会处理页面的其余部分。
if (!array_key_exists($_SESSION["logged"],$USERS)) {
header("Location: login.php");
exit;
};
另外,您是否尝试关闭浏览器以清除所有会话数据并查看您是否仍在登录?