Php 存储和检索$\u会话变量

Php 存储和检索$\u会话变量,php,Php,我有个问题。我确信我真的很愚蠢,但我似乎无法重新激活$\u会话变量。我使用一个名为$setup的变量运行代码,每次都将其作为reset发布。每次运行代码时,我都会增加$setup,使其开始时没有值,然后值为1,然后值为2。当它为1时,我将会话设置为一个POST值。下一次,当它是两个,会话似乎没有一个值 这是加载页面时的代码: <?php session_start(); $setup=$_POST['reset']; if ($setup==NULL) {

我有个问题。我确信我真的很愚蠢,但我似乎无法重新激活$\u会话变量。我使用一个名为$setup的变量运行代码,每次都将其作为reset发布。每次运行代码时,我都会增加$setup,使其开始时没有值,然后值为1,然后值为2。当它为1时,我将会话设置为一个POST值。下一次,当它是两个,会话似乎没有一个值

这是加载页面时的代码:

<?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'];
    }
?>

我得到的是值2,后跟一个点。我在这里做错了什么吗?

您在“.”字符串之前忘记了一个连接点

应该是:

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

在代码的这一部分中:

elseif ($setup==2)
{
    $value1=$_SESSION['value1'];//HERE
    $_SESSION['value2']=$_POST['value2'];
    $value2=$_SESSION['value2'];
}
$\u会话['value1']
空的,因此
$value1
也将是空的,我建议使用以下代码:

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

    $value2=$_SESSION['value2'];
}
此外:

应该是:

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


$value1=$_会话['value1'];//您不能在这里(=2)执行此操作,因为您以前没有将$\u会话['value1']设置为任何值

这取决于您要回显的内容

例如:

$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变量/文本等,如上所述。

我已经修复了它。我在底部有一个重置按钮来破坏会话,其中包含PHP。也许这个问题会帮助犯这个错误的人。我可以这样做。

您实际上应该会遇到语法错误。顺便说一句,请缩进您的代码,这将有助于阅读。当$setup=2时,value1的会话未定义,因为只有当setup=1担心缩进时才定义它。它是由我用iPhone发送的缩进的,所以当代码改变缩进时,将其输入。如果我在计算机上,就不会有问题。如果在setup=2的位置没有定义值,因为它将在setup=1的第一轮中定义。它总是等于一比二。我想他所需要的就是
echo$value2。" " . $价值1 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)