0

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

索引.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。任何帮助将不胜感激。

4

5 回答 5

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。

于 2013-09-13T12:43:10.050 回答
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>
于 2013-09-13T12:25:09.003 回答
0

看起来您只有许多 php 脚本,而没有一个管理其他脚本的 cetral。所以你必须开始每个脚本

<?php 
session_start();
...

否则会话将无法正常工作。

于 2013-09-13T12:26:37.160 回答
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);

?>
于 2013-09-13T12:28:01.050 回答
-2

我认为您需要以下内容:

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

因为无论您在哪里使用会话,都必须始终使用session_start

于 2013-09-13T12:14:30.310 回答