1

我有问题。我确定我真的很愚蠢,但我似乎无法恢复 $_SESSION 变量。我使用一个名为 $setup 的变量运行代码,我每次都将其发布为重置。每次我运行代码时,我都会增加 $setup,所以它从没有值开始,然后是值 1,然后是值 2。当它为 1 时,我将 SESSION 设置为发布的值。下次当它是两个时,SESSION 似乎没有价值。

这是页面加载时的代码:

<?php
    session_start();
    $setup=$_POST['reset'];
    if ($setup==NULL)
    {
        $setup=0;
    }
    elseif ($setup==1)
    {
        $_SESSION['value1']=$_POST['value1'];
        $value1=$_SESSION['value1'];
    }
    elseif ($setup==2)
    {
        $value1=$_SESSION['value1'];
        $_SESSION['value2']=$_POST['value2'];
        $value2=$_SESSION['value2'];
    }
?>

当设置为一时,我可以打印出 value1 但是当设置为二时,使用此代码

echo $value2 . " " . $value1 . ".";

我得到的只是 value2 后跟一个点。我在这里做错了吗?

4

5 回答 5

1

在这部分代码中:

elseif ($setup==2)
{
    $value1=$_SESSION['value1'];//HERE
    $_SESSION['value2']=$_POST['value2'];
    $value2=$_SESSION['value2'];
}

$_SESSION['value1']的,所以$value1也会是空的,而不是这个我建议这个代码:

elseif ($setup==2)
{
    if(isset($_SESSION['value1'])   $value1=$_SESSION['value1'];
    else $value1='Some value for test';

    $value2=$_SESSION['value2'];
}

还:

 echo $value2 . " " . $value1 ".";

应该 :

 echo $value2 . " " . $value1 . ".";//if you want dot in the end 

或者 :

echo $value2 . " " . $value1 ;//without dot int end of line
于 2013-09-03T18:10:25.103 回答
1
<?php
  session_start();
  if (!isset($_POST['reset'])) {
    // do nothing or something more useful
  }
  else {
    if ($_POST['reset'] == 1) {
      $value1 = $_SESSION['value1'] = $_POST['value1'];
    }
    elseif ($_POST['reset'] == 2) {
      $value1 = $_POST['value1']; // $_POST !!! Not $_SESSION['value1'], which is not set here!
      $value2 = $_SESSION['value2'] = $_POST['value2'];
    }
  }
?>


 $value1=$_SESSION['value1']; // you can't do this here ( == 2), because you did not set $_SESSION['value1'] to anything before
于 2013-09-03T18:10:43.960 回答
1

这取决于您要回显的内容。

例子:

$value1 = "hello";
$value2 = "Richard";

echo $value1." ".$value2;
// will output "hello Richard" (Without the quotes)

//using your code (and syntax corrected)
echo $value1." ".$value2.".";
// will output "hello Richard." (Without the quotes)

如果要回显点,则需要用引号“”将其括起来,并在上面的回显中插入和退出 PHP vars/text 等。

于 2013-09-03T18:11:58.543 回答
0

您忘记了“。”之前的连接点。细绳

应该:

echo $value2 . " " . $value1 . ".";
于 2013-09-03T18:01:51.233 回答
0

我已经修好了。我在底部有一个重置按钮来销毁会话,其中包含 PHP。也许这个问题会帮助任何犯这个错误的人。我可以发生。

于 2013-09-08T21:52:32.920 回答