我正在创建一个简单的登录系统,并且遇到每次我尝试登录会话时都无法设置会话并将错误返回给我。
代码在下面发布。
-
表格:
<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.'); }
在登录页面上调用会话。尝试将其删除,并应解决您的问题。
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';
两个相等的符号是一个比较操作员。您想要一个是分配操作员。
您拥有以下比较操作员。分配操作员只是=
$_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') {
或
if($_SESSION['logged_in'] == true) {