繁体   English   中英

PHP会话未设置

[英]PHP sessions are not setting

我正在创建一个简单的登录系统,并且遇到每次我尝试登录会话均无法设置并将错误返回给我的情况。

该代码发布在下面。

  • 形成:

     <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) {

在登录页面上调用该会话。 尝试删除它,它应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM