我正在尝试使用简单的登录表单,这只是为了好玩。内容并不敏感,但我正在努力学习SESSION
等等。我创建了这个简单的登录表单,效果很好,但如果用户点击"home"
到href'd
的{{1}}按钮,则会要求他们再次登录。我正在尝试将process_login.php
和username
保存在password
中,因此如果他们登录,并从任何页面点击SESSION
,它将记住他们的登录信息和不要求他们继续登录。
我有一个home
脚本,使用form.php
方法,有两个POST
,用户名和密码在textfields
中保存为“admin”,并且如果它们与表单中的process_login.php
POST
匹配,那么我将包含indices
。在content.php
中,我获取了process_login.php
数据并按照以下方式运行:
POST
您将在上面看到我正在尝试设置SESSION信息,但我知道我没有正确地执行此操作。一旦用户登录,一切正常。但如果同一个用户点击另一个页面的“home”,它会告诉他们“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']));
};
};
”我想让用户在登录后保持登录状态。
感谢所有建议。谢谢!
答案 0 :(得分:2)
您对$_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
- 使用变量不是很有意义那里的钥匙。