【问题标题】:php Session variable lost between pages with a form submitphp Session 变量在表单提交的页面之间丢失
【发布时间】:2012-07-17 10:27:41
【问题描述】:

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

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

当点击表单的提交按钮时,您将被带到 process_tenant.php。

问题是会话变量 valid_user 似乎没有附带。我在两个页面的开头都有 session_start() 并且 session 变量肯定已设置并且永远不会在 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'
?>

...

【问题讨论】:

  • 您是否使用 session_destroy() 销毁了会话;
  • 不,无处。我想知道这是否可能是一个 php 配置问题?因为代码似乎没有任何问题。
  • 已解决问题,谢谢。我没有破坏会话,但我用 "" 覆盖了 valid_user

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


【解决方案1】:

配置.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'];
?>

【讨论】:

  • 谢谢,但添加 ob_start() 似乎没有什么不同。
  • 这没什么区别。它只是写在不同文件中的相同代码。
  • 您是否在某处破坏了会话?
  • 我没有在任何地方销毁会话
  • 为什么这个答案被接受了?什么解决了这个问题?
【解决方案2】:

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

尝试将您的代码更改为:

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

【讨论】:

  • 它实际上是从数据库中获取值,但为了简单起见,我只是放了 = admin。但是,是的,我确实忘记了问题中的“”。谢谢
【解决方案3】:

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

【讨论】:

  • session_start() 确实需要为每个 PHP 调用调用一次。由于他没有在 process_tenant.php 文件中包含 details.php 文件,因此他需要调用 session_start()。
  • 如果您在两个页面的顶部都没有包含 session_start() ,则会引发大量错误。你肯定需要 session_start()。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2012-08-16
  • 2023-03-30
相关资源
最近更新 更多