【问题标题】:Session variable not working会话变量不起作用
【发布时间】:2013-12-09 10:36:27
【问题描述】:

我在我的 php 页面中使用了一个会话变量。根据我的信息,它可以在整个程序中访问,但问题是它在 php 页面的不同位置显示相同变量的不同值?

代码如下

<html><body>

<?php session_start(); 
 if(!isset($_SESSION['x']))
     $_SESSION['x']=1;  

echo "X=". $_SESSION['x']; 

?>
<form>
<input type="submit" name="save" value="save" />
</form>
<?php
if (isset($_GET['save']))
{  
  if(isset($_SESSION['x']))
      $_SESSION['x'] = $_SESSION['x']+1;
   echo $_SESSION['x']."<br>";  
}
else
  echo "no submit";
?>
</body></html>

点击提交按钮前后的值不同?请告诉我为什么会这样? 提前感谢。

【问题讨论】:

  • 你的
    方法是在哪里定义的?
  • 它给你/带来了什么价值?你期待什么价值观?另外,请执行以下操作:`
    ,如果您希望它起作用,请将其设置为一个操作!

标签: php forms session


【解决方案1】:

您在此处重新声明会话变量“x”的值

$_SESSION['x'] = $_SESSION['x']+1;

这就是为什么它看起来比它的初始值大 1。

【讨论】:

  • 请告诉我在两个 echo 语句中获得相同值的方法。
【解决方案2】:

这是由于代码本身

 if(isset($_SESSION['x'])) //It is set
      $_SESSION['x'] = $_SESSION['x']+1; //Add 1 to the value
echo $_SESSION['x']."<br>";  return value with +1

解决方案

输出不同的原因是你回显和更新的顺序

//Echo
//Update Value
//Echo again

简单的解决方案是移动这个

if (isset($_GET['save']))
{  
  if(isset($_SESSION['x']))
      $_SESSION['x'] = $_SESSION['x']+1;
   echo $_SESSION['x']."<br>";  
}
else
  echo "no submit";

到此之上

if(!isset($_SESSION['x']))
     $_SESSION['x']=1;  

echo "X=". $_SESSION['x']; 

还要注意在表单中设置方法和动作以确保它调用自己

<form method="GET" action="[url to itself]">
<input type="submit" name="save" value="save" />
</form>

【讨论】:

  • 解决办法是什么?这不就是OP的吗?
  • 先生,我已经在 session_start() 之后初始化了会话变量的值。默认的表单方法是get。所以,我没有提到它。当 php 页面加载时,它显示默认设置值“1”。但是当我单击提交按钮时,只有当我在 if(isset()) 块中回显它时,它才会将增量值显示为“2”,即第一个回显打印 1 和第二个回显打印 2。但我希望在两个都。如何做到这一点。
  • @user2931596 如果有帮助,请标记为答案:)
【解决方案3】:

这样做:

<html><body>

<?php session_start(); 
 if(!isset($_SESSION['x']))
 $_SESSION['x']=1;  

echo "X=". $_SESSION['x']; 

?>
<form method="GET" action="">
 <input type="submit" name="save" value="save" />
</form>
<?php
 if (isset($_GET['save']))
 {  
 if(isset($_SESSION['x']))
   echo $_SESSION['x']."<br>";
 }
 else
 echo "no submit";
?>
</body></html>

这样,代码在提交后打印出与之前相同的值。 无论哪种方式,您尝试打印值并在之后更改或更改值并在之后打印,当页面重新加载时它会更改值。您可以添加另一个名为 increment 的按钮并在 php 中添加以下代码:

if (isset($_GET['inc']))
{  
  if(isset($_SESSION['x']))
      $_SESSION['x'] = $_SESSION['x']+1; 
}

表格里面的这个:

<input type="submit" name="inc" value="inc" />

这样,当你按下 inc 按钮时,你的增量是可变的

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 2015-09-30
    • 2013-04-12
    • 2012-08-17
    • 2014-05-16
    相关资源
    最近更新 更多