POST を使用したフォームと変数があります。フォームが送信された後も変数を取得できるように、その変数を $_POST に設定するにはどうすればよいですか?
私はちょうど試してみました
$_POST['variable'] = $variable;
空になってしまいます。
その変数をフォームの非表示フィールドとして配置するか、セッション変数を使用する必要があります。
<form method="POST" action="someactionpage.php">
<input type="hidden" name="my_var" value="<?php echo $myvar; ?>" />
<!-- ... -->
</form>
そして、フォームが送信されたときにsomeactionpage.phpでそれを取得します。$_POST['my_var']
$_SESSION 変数内に保存するだけです
<?php
session_start (); // Just once at the beginning of your code
// ...
$_SESSION['my_var'] = $myvar;
?>
別のページで取得します
<?php
session_start (); // Same than before
// ...
echo $_SESSION['my_var'];
?>
いくつかの回答とコメントで指摘されているように、その保証がないため、変数が存在することを常に確認する必要があります。isset 関数を使用するだけです
if (isset ($_SESSION['my_var']))
// Do stuff with $_SESSION['my_var']
また
if (isset ($_POST['my_var']))
// Do stuff with $_POST['my_var']
コメントでKolinkが指摘したように、フィールド値 (POST 経由で送信される) は、ユーザーが簡単に確認および変更できます。したがって、本当に重要でない情報でない限り、常にセッション変数を優先してください。
PHPはサーバーサイド言語!変数を設定して別のインスタンスで使用することはできません。つまり、リロードを処理した後、PHP はすべてのものをリセットします。リロード後に定義される変数を設定するには、現在のセッションを使用する必要があります。参照: http://de1.php.net/manual/en/book.session.php
<?php
session_start();
$_SESSION['variable'] = 'my content';
$_POST 変数は、前のページから現在のページに送信されます。
つまり、実際に POST 変数を設定するべきではなく、その内容のみを取得する必要があります。
次回フォームを送信するときに投稿変数を設定する場合は、次のようにします。
<input type="hidden" name="variable" value="<?php echo $_POST['variable']" />
これは、送信先のページが次の方法で変数にアクセスできることを意味します。
$variable = $_POST['variable'];
変数を特定のユーザーにとどめたい場合は、セッションを調べる必要があります。
$_POST['variable'] = $foo を使用して投稿変数を設定できます。$_POST['variable'] は、php スクリプトの実行が終了するまで、または unset($_POST['variable']) を使用するまで設定され続けます。セッション間で変数を保持しようとしている場合 (そのように聞こえます)、セッションを使用する必要があります。
セッション 1 で:
session_start();
$_SESSION['variable'] = 'foo';
サーバーへの別の呼び出しで取得するには:
session_start();
$variable = $_SESSION['variable'];
これを試して:
$variable = isset($_POST['variable']) ? $_POST['variable'] : '';