我正在创建一个简单的登录系统,并且遇到每次我尝试登录会话都无法设置并将我的错误返回给我。
代码发布在下面。
形式:
<form action="login_system.php" method="post">
Username<br>
<input type="text" name="username"><br>
Password<br>
<input type="password" name="password"><br>
<input type="submit" name="submit" value="login">
</form>
login_system.php
:
error_reporting(E_ALL ^ E_NOTICE);
$user = $_POST['username'];
$pass = $_POST['password'];
if (isset($_POST['submit']) && $user == 'test' && $pass == 'test') {
session_start();
$_SESSION['logged_in'] == 'yes';
if ($_SESSION['logged_in'] == true) {
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=main_index.php">';
}
}
要登录的页面:
session_start();
require('login_system.php');
if ($_SESSION['logged_in'] == 'true') {
echo 'ok';
} else {
die ('You do not have permission to view this webpage.');
}
答案 0 :(得分:0)
session_start()
必须位于您使用会话的每个页面的顶部。在“Login_system”页面中,它不是。它应该是这样的:
session_start();
error_reporting(E_ALL ^ E_NOTICE);
$user = $_POST['username'];
$pass = $_POST['password'];
if (isset($_POST['submit']) && $user == 'test' && $pass == 'test') {
$_SESSION['logged_in'] = 'yes';
if ($_SESSION['logged_in'] == true) {
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=main_index.php">';
}
}
此外,
$_SESSION['logged_in'] == 'yes';
应该只有一个等号:
$_SESSION['logged_in'] = 'yes';
两个等号是比较运算符。你想要一个作为赋值运算符。
答案 1 :(得分:0)
您有以下作为比较运算符。赋值运算符只是=
$_SESSION['logged_in'] == 'yes';
^
if ($_SESSION['logged_in'] == true) {#you can probably remove this line
哪个应该是
$_SESSION['logged_in'] = 'yes';# or true?
然后你有'true'
实际上'yes'
或者除非你正在寻找== true
而不是字符串true
if($_SESSION['logged_in'] == 'true') {
哪个应该是以下之一,但请确保您是一致的
if($_SESSION['logged_in'] == 'yes') {
OR
if($_SESSION['logged_in'] == true) {
答案 2 :(得分:0)
在登录页面上调用会话。尝试删除它,它应该解决您的问题。