php会话变量在表单提交的页面之间丢失


php Session variable lost between pages with a form submit

我想知道是否有人能帮我。

如果我在details.php(下面的代码)页面上,有一个带有提交按钮的表单(以及其他内容)。

单击表单的提交按钮后,您将进入process_tenant.php。

问题是会话变量valid_user似乎没有附带它。我在两个页面的开头都有session_start(),会话变量肯定设置好了,在细节上永远不会被覆盖。php

有人能告诉我为什么吗?

details.php

<?php
session_start();
    $_SESSION['valid_user'] = 'admin';
    echo $_SESSION['valid_user'];       //This prints out admin 
?>
<!DOCTYPE HTML>
<html>
<head>
        ...
    </head>
    <body>
        ...
        <form action='process_tenant.php' method='POST'>
            ...
        </form>
    </body>
</html>

process_tenant.php

<?php
   session_start();
   if (isset($_SESSION['valid_user']))
   {
       echo 'heya';          //This does not print
   }
   echo 'hi' . $_SESSION['valid_user'];    //This just prints 'hi'
?>
...

Config.php

<?php
ob_start();
session_start();
$_SESSION['valid_user'] = admin;
?>

Details.php

<?php
include('Config.php');
?>

process_tenant.php

<?php
include('Config.php');
if (isset($_SESSION['valid_user']))
{
     echo 'heya';
}
echo 'hi' . $_SESSION['valid_user'];
?>

在details.php中,值admin并不等同于任何东西。它需要是一个变量、字符串或某种有效类型,否则它将被取消设置。

尝试将您的代码更改为:

$_SESSION['valid_user'] = 'admin';

只启动一次,即只使用session_start()一次,从process_tenant.php中删除并在完成后通知我。