1

フォームを送信すると、フィールドに入力した内容が保持されないというエラーメッセージが返される理由がわかりません。これが私の入力フィールドの例です:

<input type="text" value="<?php if (isset($_POST['the_field'])) echo $_POST['the_field'];?>" name="the_field" id="the_field"/>

エラーメッセージの処理にセッションを使用しています。しかし、それが違いを生むとは思いませんよね?何か案は?

私のフォームの一部:

<form action="process.php" method="post" name="edit" id="edit">
<input type="text" value="<?php if (isset($_POST['name']))  echo htmlentities($_POST['name']);  ?>" name="name" id="name" class="text" tabindex="1"/>
<input type="text" value="<?php if (isset($_POST['the_field'])) echo $_POST['the_field'];?>" name="the_field" id="the_field"/>
<input type="hidden" value="Create" name="action"/>
<input type="submit" class="btn" value="Create New Project" />
</form>

私のPROCESS.PHPの一部:

if(isset($_POST)){
    switch($_POST['action']){   
        case 'Create':
        $client = $_POST['client'];
            if(empty($_POST['name'])){
              $_SESSION['error'] = 'You need to enter a project name!';
              header('location: add.php');
              exit; 
            }
    }
break;
}

NAMEフィールドがTHE_FIELDの前に処理され、NAMEがエラーになったときに何も返されないためだと思いますか?

4

2 に答える 2

0

issetあなたが送信したものを表示するために、次のようpostに書く必要があるかどうかは関係ありません。$_POST['the_field']

<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>" name="the_field" id="the_field"/>

アップデート

このようなことには使用しないでくださいsessions

if (isset(whatever))
// this 
else
// other

いずれの場合も、入力にpost値を再入力します。

<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"

つまり、postHTMLを出力する前にすべてのものを処理する必要があります。例えば:

if (isset(whatever))
// echo "you posted whatever, great!"
else
// post "value missing, please try again"
<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"

sessions永続的なデータを保存するのに適しています(もちろん、セッションで永続的です)無効な入力について警告するには、アクションのusers直後にそれらに通知する必要があります。情報をデータpostに保存する必要はありません。sessions

結論として、これを行う通常の方法は次のとおりです。

<?php
if (input data is valid)
    echo 'valid'
else
    echo 'invalid'
?>
<input value="<?php echo htmlspecialchars($_POST['the_field']); ?>">
于 2013-01-21T02:50:12.273 に答える
0

プロセスページに投稿していたので、セッションを使用する必要がありました。これが理由のようで、SELFではありませんでした。もう少し時間がかかりますが、私が必要なことをします。

于 2013-01-23T20:25:50.650 に答える