繁体   English   中英

存储和检索$ _SESSION变量

[英]Storing and retrieving $_SESSION variables

我有一个问题。 我敢肯定我真的很傻,但是我似乎无法处理$ _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和一个点。 我在这里做错什么了吗?

在代码的这一部分:

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
<?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

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

例:

$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等。

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

应该:

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

我已经解决了。 我在底部有一个重置按钮来销毁会话,并且其中包含PHP。 也许这个问题会帮助其他犯此错误的人。 我会发生的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM