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

时间:2012-07-18 11:39:47

标签: php forms session session-variables data-loss

我想知道是否有人可以帮助我。

如果我在页面详情.php(下面的代码),则有一个带有提交按钮的表单(除其他外)。

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

问题是会话变量valid_user似乎没有附带它。我在两个页面的开头都有session_start(),会话变量是明确设置的,并且从未覆盖过details.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'
?>

...

3 个答案:

答案 0 :(得分:0)

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

尝试将代码更改为:

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

答案 1 :(得分:0)

的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'];
?>

答案 2 :(得分:-1)

只启动一次,即仅使用session_start()一次,从process_tenant.php中删除,然后在完成后告诉我。