簡體   English   中英

如何在將PHP表單提交到同一頁面之前清空頁面?

[英]How To Blank The Page Before Submitting PHP Form To Same Page?

我正在嘗試為工作創建一個自動響應腳本,該腳本將根據需要顯示表單字段,例如NameUsernamePassword 選擇“提交”后,我希望腳本刪除表單,並顯示輸出以及相應的響應,而不必將其發布到另一頁。 最終,對於我想要的每個單獨的方案,都有一個form.php和一個result.php將會太混亂,因此為什么我要嘗試做到這一點。 到目前為止,對於表單,我有:

<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 ,並與相應的結果替換它。

在當前形式中,發生的事情是您的HTML發送到瀏覽器(或在到達瀏覽器的途中至少有一些不可見的緩沖區),並且一旦進入控制表單的腳本部分,便失去了控制。處理。

因此,您有兩種選擇。 一種是通常將其保留在您擁有的狀態中,但是將輸出緩沖與ob_start()和相關函數一起使用-在這種情況下,我真的不建議這樣做-或只是重新排列代碼的順序。

通常,這些單頁自我處理表單最常見的設計模式是將處理邏輯放在最頂層,並且表單或成功/失敗消息的輸出取決於結果。

為此,請使用您的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!
?>

就是這樣。 我希望這是有道理的 :)

只需更改您的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.
  <a href="yourPHPfileName.php">Back</a>
</p>";
}else{
?>
//YOUR HTML FORM GOES HERE
<?php 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM