我遇到了问题。我确定我真的很傻,但我似乎无法重新发送$ _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后跟一个点。我在这里做错了吗?
答案 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。也许这个问题可以帮助其他任何犯这个错误的人。我可以发生。