会话变量返回错误值

时间:2013-09-13 12:12:25

标签: php session-variables

我的php网站有问题。我做了一个表单,提交时在同一页面上加载一个php文件。这是我的代码:

的index.php:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<table cellspacing="0" cellpadding="10" width="320" border="0">
  <tr>
    <td>
      <button type="submit" id="btn" name="form_submit">Submit</button>   
    </td>
  </tr>
</table>
</form>

<?php 
if(isset($_POST['form_submit'])) {
    session_start();
    $_SESSION['tblno'] = "3";
}
?>

现在问题出在我的display.php文件中,其中包含以下代码:

<?php 
  session_start(); 
  $tblno = $_SESSION['tblno'];
  echo($tblno);
?>

我希望它的输出值为3,它在index.php中初始化。但是我的display.php文件显示的是1.任何帮助都会非常感激。

5 个答案:

答案 0 :(得分:0)

试试这段代码:

<?php 
if(isset($_POST['form_submit']))
    {
     session_start();
    $_SESSION['tblno']="3";
    }
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<table cellspacing="0" cellpadding="10" width="320" border="0">
  <tr><td>
  <button type="submit" id="btn" name="form_submit">Submit</button>   
  </td></tr>
</table>
</form>

答案 1 :(得分:0)

看起来你只有很多没有cetral的php脚本来管理其他脚本。所以你必须用

开始每个脚本
<?php 
session_start();
...

或者会话无法正常运行。

答案 2 :(得分:0)

要使用基于cookie的会话,必须先调用session_start(),然后才能向浏览器输出任何内容。 另外,您不应该分隔文件,因为您使用$_SERVER['PHP_SELF'],所有代码必须位于同一页面中,如果您想要分开,请将操作更改为action='display.php' 因此,如果您仍想使用$_SERVER['PHP_SELF']

,则代码必须如此
<?php      session_start();?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<table cellspacing="0" cellpadding="10" width="320" border="0">
  <tr><td>
  <button type="submit" id="btn" name="form_submit">Submit</button>   
  </td></tr>
</table>
</form>

<?php 

if(isset($_POST['form_submit']))
    {
    $_SESSION['tblno']="3";
    }

$tblno=$_SESSION['tblno'];
echo($tblno);

?>

答案 3 :(得分:0)

index.php中需要以下内容。

<?php 
if(isset($_POST['form_submit']))
{
  session_start();
  $_SESSION['tblno']="3";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<table cellspacing="0" cellpadding="10" width="320" border="0">
  <tr><td>
  <button type="submit" id="btn" name="form_submit">Submit</button>   
  </td></tr>
</table>
</form>

<iframe src=display.php>

在display.php中:

<?php
session_start();
$tblno=$_SESSION['tblno'];
echo($tblno);
?>

(您发布到自己的index.php,在顶部设置Cookie。
之后所有其他页面在session_start之后都有正确的cookie)

始终确保session_start(); 之前浏览器的任何其他输出,例如html。

修改:添加了iframe。

答案 4 :(得分:-2)

我认为您需要以下内容:

<?php 
session_start();
if(isset($_POST['form_submit']))
{
    $_SESSION['tblno']="3";
} 
?>

由于您使用会话的任何地方,您必须始终使用session_start