我正在尝试为工作创建自动回复脚本,该脚本将根据需要显示表单字段,例如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
之前完全删除所有内容,并将其替换为相应的结果。
答案 0 :(得分:1)
在目前的形式中,发生的事情是你的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!
?>
就是这样。我希望这是有道理的:))
答案 1 :(得分:0)
只需更改您的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
}