[英]How To Blank The Page Before Submitting PHP Form To Same Page?
我正在嘗試為工作創建一個自動響應腳本,該腳本將根據需要顯示表單字段,例如Name
, Username
和Password
。 選擇“提交”后,我希望腳本刪除表單,並顯示輸出以及相應的響應,而不必將其發布到另一頁。 最終,對於我想要的每個單獨的方案,都有一個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%"> </td>
<td style="width:33%"> </td>
</tr>
<tr>
<td colspan="3" style="width:99%">
<label>Name</label><span class="req">*</span>
<span id="reqName" style="color:Red;display:none;"> </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;"> </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;"> </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.