如何使用PHP在同一页面上使用表单提交更新先前的HTML输出
我正在处理一个表单提交页面(POST),该页面使用htpasswd文件的file_get_contents()显示所有当前用户(作为表单开头的复选框对象),并允许用户使用exec()函数更新这些用户。除了在用户通过表单提交按钮提交更改后,页面上显示的用户列表不会更新之外,所有这些都正常工作。我知道发生这种情况的原因是,更新结果的代码发生在结果的回显之后 所以我的问题是:是否有任何方法可以修改/更新(使用PHP)在实际函数执行之前发生的输出?我已经包括了我的基本代码结构,以帮助可视化我的情况: form.php:如何使用PHP在同一页面上使用表单提交更新先前的HTML输出,php,forms,Php,Forms,我正在处理一个表单提交页面(POST),该页面使用htpasswd文件的file_get_contents()显示所有当前用户(作为表单开头的复选框对象),并允许用户使用exec()函数更新这些用户。除了在用户通过表单提交按钮提交更改后,页面上显示的用户列表不会更新之外,所有这些都正常工作。我知道发生这种情况的原因是,更新结果的代码发生在结果的回显之后 所以我的问题是:是否有任何方法可以修改/更新(使用PHP)在实际函数执行之前发生的输出?我已经包括了我的基本代码结构,以帮助可视化我的情况: f
<form method="post">
<?php
//Code to read htpasswd file, then output results as form input checkboxes
?>
<select name="action">
<option value=""></option>
<option value="delete"></option>
<option value="change"></option>
<option value="create"></option>
</select>
<input type="submit">
<?php
if($_POST['action'] !== '')
{
switch($_POST['action'])
{
case delete:
//run exec() command to delete each user
case change:
//run exec() command to change pw for each user
case create:
//run exec() command to create a user
}
}
?>
如果PHP无法做到这一点,Javascript能完成这项工作吗?在j08691和Ariane的帮助下,我能够通过交换前面提到的代码获得所需的结果:
<form method="post">
<?php
if(isset($_POST['action']) && $_POST['action'] !== '')
{
switch($_POST['action'])
{
case delete:
//run exec() command to delete each user
case change:
//run exec() command to change pw for each user
case create:
//run exec() command to create a user
}
}
?>
<?php
//Code to read htpasswd file, then output results as form input checkboxes
?>
<select name="action">
<option value=""></option>
<option value="delete"></option>
<option value="change"></option>
<option value="create"></option>
</select>
<input type="submit">
将最后一个PHP代码块放在输出列表的第一个块之前不起作用吗?基本上,您希望在不重新加载页面的情况下使用新提交的信息更新页面?如果是这样,您需要研究AJAX。(我认为最简单的方法是使用Jquery。)还是新加载的页面不包含新信息?然后,应该通过改变PHP代码的顺序来解决这个问题,以确保所有的处理都在显示任何内容之前完成。简单地说,交换PHP代码块非常有效!谢谢j08691和阿丽亚娜。没有办法将评论标记为答案吗?对不起,我是新来的。。。