0

可能重复:
PHP 中的“警告:标头已发送”

为什么这不起作用?我希望看到在 first.php 中的文本框中输入的任何内容都显示在 test.php 中。

    <html>
<body>
<form action="test.php">
Test: <input type="text" name="test" />
<br> <input type="submit" name="submit" />
    <?php
    session_start();
    $_SESSION['test'] = $_POST['test'];
    ?>

</body>
</html>

这是test.php

    <?php
    session_start();
    $check = $_SESSION['test'];
    echo $check; 
    ?>
4

5 回答 5

2

session_start() 必须在向浏览器输出任何内容(甚至不是空格)之前调用。

您在页面的第一行上的 html 开始会话之后开始会话,例如

<?php
session_start();
print_r($_SESSION);
if(isset($_POST['submit'])){
    $_SESSION['test'] = $_POST['test'];
}
?>
<html>
    <body>
        <form method="post" action="addimageprocess.php">
            Test: <input type="text" name="test" />
            <br>
            <input type="submit" name="submit" />
        </form>
    </body>
</html>
于 2012-11-06T16:00:09.013 回答
1

session_start()应该在发送任何标题之前设置(即在页面的最顶部)

于 2012-11-06T16:00:38.403 回答
0

PHP 代码在实际POST完成之前执行,因为 PHP 是一种服务器端语言。那时,实际上没有 $_POST 数组。

此代码,来自您的例如。

 <?php
  session_start();
  $_SESSION['test'] = $_POST['test'];
 ?>

$_POST发布(或存在)到 test.php 页面。

于 2012-11-06T16:01:21.803 回答
0

您的主脚本中的 PHP 没有做您希望它做的事情,实际上只是在最好的情况下保存垃圾和/或 null。你需要反转 PHP 脚本,把

<?php
session_start();
$_SESSION['test'] = $_POST['test'];
?>

在 test.php 和

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

在你的主要 php

于 2012-11-06T16:02:09.853 回答
0

如果您使用的是网络服务器,并且您确实有

<?php 
 session_start();
 $_SESSION['test'] = $_POST['test'];
?>

但它仍然没有存储会话,那么您需要检查 saved_pa​​th

  <?php
    phpinfo():
  ?>

检查会话标头下是否设置了 session:save_path 并确保它存在于服务器上。如果它是一个网络服务器,那么您将不得不联系您的主机为您设置保存路径。

于 2012-11-06T16:32:28.003 回答