Php 会话变量不工作

Php 会话变量不工作,php,forms,session,Php,Forms,Session,我在php页面中使用了一个会话变量。根据我的信息,它在整个程序中都是可访问的,但问题是它在php页面的不同位置显示相同变量的不同值 代码如下 <html><body> <?php session_start(); if(!isset($_SESSION['x'])) $_SESSION['x']=1; echo "X=". $_SESSION['x']; ?> <form> <input type="submit"

我在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>

单击“提交”按钮前后的值是否不同?请告诉我为什么会这样?
感谢您的建议。

这是由于代码本身

 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
简单的解决办法是移动这个

if (isset($_GET['save']))
{  
  if(isset($_SESSION['x']))
      $_SESSION['x'] = $_SESSION['x']+1;
   echo $_SESSION['x']."<br>";  
}
else
  echo "no submit";
还要注意在表单中设置方法和操作,以确保它自己调用

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

这样做:

<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>
表格里的这个:

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


这样,当您按下inc按钮时,您就是变量增量

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

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

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

你的方法定义在哪里?它给你什么值/?你期望的价值是什么?还有,这样做:`如果你想让它工作,就把它设为一个动作!解决办法是什么?这不是OP的功能吗?先生,我刚刚在session_start()之后初始化了session变量的值。默认的表单方法是get。所以我没有提到。当php页面加载时,它显示默认的设置值“1”。但是,当我单击提交按钮时,仅当我在if(isset())块(即第一次回显打印1和第二次回显打印2)中回显增量值时,才会将其显示为“2”。但我希望两者的值相同。如何做到这一点。@user2931596如果有帮助,请将其标记为答案:)请告诉我如何在两个echo语句中获得相同的值。
if (isset($_GET['inc']))
{  
  if(isset($_SESSION['x']))
      $_SESSION['x'] = $_SESSION['x']+1; 
}
<input type="submit" name="inc" value="inc" />
$_SESSION['x'] = $_SESSION['x']+1;