0

、 、などName、必要に応じてフォーム フィールドを表示する作業用の自動応答スクリプトを作成しようとしています。[送信] を選択したら、スクリプトでフォームを削除し、別のページに投稿することなく、代わりに対応する応答と共に出力を表示するようにします。最終的に、必要な個々のシナリオごとに form.php と result.php を用意するのは煩雑になるため、これを達成しようとしています。これまでのところ、フォームについては次のとおりです。UsernamePassword

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
    <table width="100%" cellpadding="10" cellspacing="0">
        <tr>
            <td style="width:33%">

            </td>
            <td style="width:33%">&nbsp;</td>
            <td style="width:33%">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="3" style="width:99%">
                <label>Name</label><span class="req">*</span>
                <span id="reqName" style="color:Red;display:none;">&nbsp;</span>
                <br />
                <input type="text" name="name">
            </td>
        </tr>
        <tr>
            <td colspan="3" style="width:99%">
                <label>Username</label><span class="req">*</span>
                <span id="reqProblem" style="color:Red;display:none;">&nbsp;</span>
                <br />
                <input type="text" name="username">
            </td>
        </tr>
        <tr>
            <td colspan="3" style="width:99%">
                <label for="txtProblem">Password</label><span class="req">*</span>
                <span id="reqProblem" style="color:Red;display:none;">&nbsp;</span>
                <br />
                <input type="text" name="password">
            </td>
        </tr>
        <tr>
            <td colspan="3" style="width:99%">
            <br />
            <input type="submit" name="submit" value="Submit">
            </td>
        </tr>
    </table>
</form>

私が持っているPHPの場合:

<?php
if(isset($_POST['submit'])) {
    echo "<h4>Response</h4>";
    $username = $_POST['username'];
    $password = $_POST['password'];
    $name = $_POST['name'];

    echo "<p>Hello, $name <br />


    Your Login Information is as follows:
    Username: $username
    Password: $password.
</p>";
}
?>

要約すると、PHP の前のすべてを完全に削除issetし、対応する結果に置き換えたいと思います。

4

2 に答える 2

1

現在のフォームでは、フォームを制御するスクリプトの部分に到達すると、HTML がブラウザーに送信され (または、少なくともブラウザーに向かう途中の目に見えないバッファー)、制御できなくなります。処理。

したがって、2 つの選択肢があります。1 つは、通常はそのままの状態のままにし、ob_start() および関連する関数を使用して出力バッファリングを使用することです (この場合はお勧めしません)。または、コードの順序を並べ替えるだけです。

一般に、これらの 1 ページの自己処理フォームの最も一般的な設計パターンは、処理ロジックを最上部に配置し、フォームまたは成功/失敗メッセージの出力を結果に応じて条件付けすることです。

これを実装するには、PHP コードをファイルの先頭に移動します。現在の POST コードの最後で、投稿が成功した場合はメッセージを出力しますが、他には何も出力しません。成功しない場合、またはまだ投稿がない場合は、フォーム html を出力します。これらの行に沿ったもの:

<?php
if($no_post_or_failure)
{
// output html
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
...
<?php
} // aaaand we're done!
?>

そしてそれはそれについてです。それが理にかなっていることを願っています:)

于 2013-05-08T17:05:15.580 に答える