【问题标题】:session gets lost after form submit表单提交后会话丢失
【发布时间】:2012-04-11 12:18:42
【问题描述】:

当用户链接到链接时,它会重定向到 edit.php - 这是一个示例:www.cars.com/edit.php?id=23

在edit.php 中,我使用_GET 将值存储在会话中。该值存储在$_session['user'] 中,但是当提交同一页面上的表单时echo $_session['user'] 不显示任何内容-如何使其显示该值?

<?php 
 session_start();
 $_session['user']=$_GET['id'];  // I use _GET to store the value in session
if( isset($_POST['submit'])) {
  echo $_session['user'];

}

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="formI2D"     enctype="multipart/form-data" id="formI2D" />

【问题讨论】:

  • session_start() 是否在每个页面的顶部?
  • 只有一页,表单提交到同一页

标签: php html forms session refresh


【解决方案1】:

这是因为你重新声明了你的 $_SESSION['user'] 即使它是一个 POST(我认为)。

您可以通过在表单的操作中添加?id=$_GET['id'] 来解决此问题,或者像这样包装您的$_SESSION 初始化:

if (isset($_GET['id'])) {
     $_SESSION['user']=$_GET['id'];
}

另外,你应该对 php 全局数组使用大写($_POST, $_COOKIE, $_SESSION 等)

【讨论】:

  • 提交表单时,$_GET['id'] 未提交
  • 然后使用第二种方案,或者你也可以检查if ( ! isset($_SESSION['user']))而不是if (isset($_GET['id']))
  • csci203 )
  • 你应该使用 $_SESSION 而不是 $_session
  • 如果您的代码是您在之前评论中提供的代码,否:如果 GET 未提供 id,则 $_SESSION['code'] 将为空。我认为您的问题的最佳解决方案是我在回答中提供的解决方案。
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多