ページが更新されたときに$post値を維持するにはどうすればよいですか。つまり、投稿の値を失うことなくページを更新するにはどうすればよいですか。
7 に答える
これは、最初にページを送信しないと不可能です。何らかの方法でフォーム フィールドをサーバーに送信しない限り、つまり、jQuery などを使用してページを更新しない場合。自動保存フォーム スクリプトの一種。
これが検証チェックの場合、提案されているセッションは必要ありません。
ユーザーがフォームに入力し、自分自身に送信する サーバー側の検証が失敗する
$_GET
<input type="hidden" name="first"
value="<?php echo htmlspecialchars($first, ENT_QUOTES); ?>" />
検証メッセージ、終了。
または、提案されているように、このようなセッションで投稿全体を保存しますが、最初に送信して作業する必要があります....
$_POST
if(isset($_POST) & count($_POST)) { $_SESSION['post'] = $_POST; }
if(isset($_SESSION['post']) && count($_SESSION['post'])) { $_POST = $_SESSION['post']; }
これはできません。POST 変数は再送信されない場合があります。再送信された場合、通常、ユーザーがページを更新したときにブラウザーがこれを行います。
ユーザーが更新する代わりに別のページへのリンクをクリックした場合、POST 変数が再設定されることはありません。
が通常の変数の場合$post
、保存されることはありません。
何かを保存する必要がある場合は、Cookie を使用する必要があります。$_SESSION
クッキーの実装です。Cookie は、ユーザーのブラウザに保存されるデータであり、リクエストごとに再送信されます。
参照: http://php.net/manual/en/reserved.variables.session.php
$_SESSION 変数は単なる連想配列なので、それを使用するには、次のようにするだけです。
$_SESSION['foo'] = $bar
$_SESSION の内部に $_POST 値を保存できます。すべての $_POST を次のように保存します。
<?php
session_start();
$_SESSION['value1'] = $_POST['value1'];
$_SESSION['value2'] = $_POST['value2'];
// ETC...
echo "<input type='text' name='value1' value='".$_SESSION['value1']."' />";
echo "<input type='text' name='value2' value='".$_SESSION['value2']."' />";
?>
実際にはhtmlフォームで投稿データを保持します。これは、テキストボックスに挿入されたデータを保持する必要がある場合に役立ちます。
<form>
<input type="text" name="student_name" value="<?php echo
isset($_POST['student_name']) ? $_POST['student_name']:'';
?>">
</form>
値をセッションに投稿する
session_start();
$_SESSION["POST_VARS"]=$_POST;
この値は、次のような別のページで取得できます
session_start();
$_SESSION["POST_VARS"]["name"];
$_SESSION["POST_VARS"]["address"];
このように、フォームを送信するときに、フォーム内で取得したのと同じ値を使用できますPOST
-そこにとどまります。
ちょっとした例:
<?php
$var = mysql_real_escape_string($_POST['var']);
?>
<form id="1" name="1" action="/" method="post">
<input type="text" value="<?php print $var;?>"/>
<input type="submit" value="Submit" />
</form>