0

ここで何が欠けていますか?これは私のPHPファイルです:

<?
session_start();

echo print_r($_SESSION);
echo "<br>";
echo print_r($_POST);

// Save input in session
$_SESSION = $_POST;
echo "test1";
?>

<br>
test2

このファイルはフォーム送信からアクセスされ、投稿データが存在すると確信しています。出力は次のとおりです。

配列 ( [ログイン] => 1 ) 1
配列 ( [名前] => テスト [タイプ] => テスト ) 1 テスト
2

そしてそれは私には意味がありません。session中身もpost中身も問題なく印刷されています。

しかし、$_SESSION = $_POST;は失敗したように見え、 までの残りのスクリプトは応答を返しません。これは、テキストが出力されていない?>ため明らかです。test1

で何が起こるかわかりません$_SESSION = $_POST;。私が SO や他の場所で見つけたすべての質問は、セッションに投稿データを保存するこの方法を提供します。

session_start();出力の前に必要であることは承知しています。この場合、他にも必要なものはありますか?

私は何が欠けていますか?


更新 - テストファイル

完全なテスト ファイル (リンクを削除) の正確なコードは次のとおりです。

<?
session_start();
?>

<html>
<head>

</head>
<body>

<?

echo print_r($_SESSION);
echo "<br>";
echo print_r($_POST);

// Save input in session
$_SESSION = $_POST;
echo "test1";
?>

<p>test2</p>

<form method="post" action="test.php">
    Type something to test: <input type="text" name="testfield" id="testfield">
    <input type="submit" value="Submit">
</form>

</body>
</html>

更新 - 解決しましたか?

よし、これで解決。しかし、これは奇妙です...

問題はコメントが原因のようです。括弧//内でスクリプトが実行されないようにします。<?..?>コメントを削除すると、// Save input in session機能します...?

ここで何が欠けていますか?それはいくつかのphp設定か何かでなければなりません。または、変更されたファイルまたはスクリプト データの可能性があります。@CodeCaster が機能していたので、私の PC で何かが起こったと思います...しかし、コメントは他の場所でも機能しますか? 誰もこれを見たことがありますか?

4

4 に答える 4

5

$_SESSION['name'] = $_POST['name'];代わりに使ってみましたか?

$_SESSION = $_POST;PHP でプログラミングをしている間、私は を使ったことがありませんし、見たこともありません。

お役に立てれば。

于 2012-07-28T13:00:48.800 に答える
2

代わりforeachに$_POSTを追加して$_SESSION['mypostvars']。それらを保存する前に、$_POSTを検証および検証する必要があることに注意してください。

これは、PHPマージ$_POSTを$_SESSIONに複製した可能性があります

于 2012-07-28T13:01:08.467 に答える
1

Xampp を使用すると、この例は問題なく動作します。「test1」は、成功した投稿の前後に印刷されます。PHP 5.3.8 を使用しています。

PHP 5.3.6 を使用する Linux でテスト済みで、どちらの場合も「test1」を正常に出力できます。

したがって、ここでは PHP は問題ではないようです。

于 2012-07-28T13:57:06.813 に答える
-1

$ _SESSIONを変更することはできますが、そのように再割り当てすることは許可されていないと思います。代わりに、$_POSTのメンバーをコピーしてください。array_merge()を使用してみてください。ただし、それが機能しない場合は、foreachループを記述して実行してください。

于 2012-07-28T13:00:59.887 に答える