PHP会话没有设置

时间:2014-01-19 20:20:28

标签: php html session xampp login-script

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

代码发布在下面。

  • 形式:

    <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.');   
    }
    

3 个答案:

答案 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)

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