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

POSTPHPはサーバー側の言語であるため、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

Web サーバーを使用していて、持っている場合

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

ただし、まだセッションを保存していない場合は、saved_pa​​th を確認する必要があります

  <?php
    phpinfo():
  ?>

セッション ヘッダーをチェックして、session:save_path が設定されているかどうかを確認し、それがサーバー上に存在することを確認します。ウェブサーバーの場合は、ホストに連絡して保存パスを設定する必要があります。

于 2012-11-06T16:32:28.003 に答える