我正试图处理一个简单的登录表单,这只是为了好玩。内容并不敏感,但我正在努力学习SESSION
等。我创建了这个简单的登录表单,它运行良好,但如果用户单击"home"
按钮,即href'd
到process_login.php
,则会要求他们再次登录。我正试图将username
和password
保存在SESSION
中,这样,如果他们登录并从任何页面点击home
,它都会记住他们的登录信息,而不会要求他们继续登录。
我有一个form.php
脚本,它使用POST
方法,有两个textfields
,用户名和密码在process_login.php
中保存为"admin",如果它们与表单中的POST
indices
匹配,那么我将包括content.php
。在process_login.php
中,我获取POST
数据并像这样运行:
SESSION_start();
//var_dump($_POST);
$match_username = 'admin' ;
$match_password = 'admin';
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
if($username == $match_username && $password == $match_password ){
include 'content.php';
}elseif($username == "" || $password != $match_password){
echo "Please try again.";
}
if(!isset($_SESSION["logged_in"])){
//Run if not set
$_SESSION["logged_in"] = array(1 => array($username => $_POST['username'], $password => $_POST['password']));
};
};
您将在上面看到,我正在尝试设置SESSION信息,但我知道我做得不对。一旦用户登录,一切都正常。但是,如果同一用户从另一个页面点击"主页",它会告诉他们"Please try again.
",我想让用户在登录后保持登录状态。
感谢所有的建议。非常感谢。
您的$_SESSION["logged_in"]
测试不应在if(isset($_POST['submit']))
块内。
if (isset($_SESSION['logged_in'])) {
include 'content.php';
exit();
}
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if($username == $match_username && $password == $match_password ){
$_SESSION["logged_in"] = array('username' => $_POST['username'], 'password => $_POST['password']);
include 'content.php';
exit();
} elseif($username == "" || $password != $match_password){
echo "Please try again.";
}
// Put login form here
我更改了您的$_SESSION["logged_in"]
变量。现在它只是一个一维数组,而不是二维数组,键是单词username
和password
——在那里使用变量作为键没有多大意义。