我试图创建一个基本的登录系统,但我遇到了问题。我了解到您应该使用表单操作将表单值发送到另一个将处理输入数据的文件。
但问题是,当一个错误发生并且我将它们发送回寄存器页面时,它们的输入值就消失了,我当然可以把它们放在一个会话变量中(就像我用错误信息做的那样)但是它只是感觉不是正确的方式。
所以我的问题是:如果我可以将代码放在同一页面上,为什么我应该使用表单操作属性?如果发生错误,只需执行value="<?php echo $_POST['username']?>"
以使值显示在输入中?< / p>
亲切的问候。
答案 0 :(得分:0)
网址!==文件!将表单提交发送到相同的 URL 是绝对有意义的,因为它简化了浏览器行为;但您可以将您需要的任何方式构建后端到不同的文件中,这些文件将根据需要进行处理。不同之处在于,初始页面加载将是GET
请求,而表单提交将是POST
请求;在一个结构合理的后端(并使用MVC用语),这些将由不同的控制器处理,然后它们将呈现相同的视图。
原始插图:
switch ($_SERVER['REQUEST_METHOD']) {
case 'POST':
require_once 'FormPostController.php';
(new FormPostController())->handleRequest();
/* here be dragons */
case 'GET':
/* maybe do something */
default:
header('HTTP/1.0 405 Method Not Allowed');
exit;
}
require 'form.html';
您甚至可以在Web服务器级别using rewrite rules进行区分,这将针对不同的请求方法调用不同的.php文件。
答案 1 :(得分:-1)
使用不同的文件提交表单以生成可维护和可重用的代码。当然,您可以使用相同的文件,如果只需要这一个表格,那么请继续。
否则,请查看使用AJAX。有很多关于AJAX的教程,所以我不想在这里引用一个。