【问题标题】:Session variable lost after $_Post in php在 php 中 $_Post 后会话变量丢失
【发布时间】:2014-11-22 15:34:35
【问题描述】:

我在开始时有会话变量,但在我单击按钮后它丢失了。这是我的代码, $_SESSION['InputCount'] 在开始时不是 null 和 true,但是在我单击按钮后我无法访问会话变量。 isset 块中的 $iteration 变量为空。此外,我还有一个会话变量,其中包含上一页的用户 ID,它没有问题它仍然是正确的。 $iteration 有什么问题?

<?php

require("includes/db.php");
require("includes/functions.php");

session_start();  

$inputCount = mysql_real_escape_string($_POST['inputCount']);
$_SESSION['InputCount'] = $inputCount;   //it is ok at the begining

//check if the form has been submitted
if(isset($_POST['checkoutButton'])){

    $iteration = $_SESSION['InputCount'];
    var_dump ($iteration);

    $userID = $_SESSION['UserID']; 

【问题讨论】:

  • 为什么你的代码末尾有第二个session_start
  • 你当前的代码仅仅意味着$iteration = mysql_real_escape_string($_POST['inputCount']);:这是预期的行为吗?
  • “但在我点击按钮后” - 什么按钮?向我们展示完整的代码以及如何使用它。
  • 抱歉,我的代码中没有第二个 session_start。复制粘贴时这是我的错误。我编辑了我的帖子。所以@Hanky웃Panky,是的,我需要那个
  • @Fred-ii- 它是 checkoutButton,你会看到我点击后运行的代码(isset 部分)

标签: php session post


【解决方案1】:

无论页面如何加载,$_POST['inputCount'] 的值都会分配给您的会话变量。

换句话说,当您使用结帐按钮回帖时,不是从会话中提取 inputCount 的值,而是根据当前 $_POST['inputCount'] 覆盖该值,然后从会话(这是多余的)。

你可能想要的是这样的:

require("includes/db.php");
require("includes/functions.php");

session_start();  

//check if the form has been submitted
if(!isset($_POST['checkoutButton'])){
    $inputCount = mysql_real_escape_string($_POST['inputCount']);
    $_SESSION['InputCount'] = $inputCount;   //it is ok at the begining
} else {
    $iteration = $_SESSION['InputCount'];
    var_dump ($iteration);

    $userID = $_SESSION['UserID'];
}

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2014-08-14
    • 2012-12-19
    • 2012-08-06
    • 2023-01-23
    • 2014-04-03
    • 2018-11-30
    • 2011-04-15
    相关资源
    最近更新 更多