存储和检索$ _SESSION变量

时间:2013-09-03 17:59:53

标签: php

我遇到了问题。我确定我真的很傻,但我似乎无法重新发送$ _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'];
    }
?>

当设置为1时我可以打印出value1但是当设置为2时使用此代码

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

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

5 个答案:

答案 0 :(得分: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'];
}

ALSO:

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

应该是:

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

或:

echo $value2 . " " . $value1 ;//without dot int end of line

答案 1 :(得分: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

答案 2 :(得分: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变量/文本等。

答案 3 :(得分:0)

在“。”之前忘了一个连接点。串

应该是:

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

答案 4 :(得分:0)

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