我用PHP编写了一个登录代码:
header("Location: http://localhost/demoapp/login.php/?em=28");
当我提交表单时,凭据会被发送到验证文件。如果发生错误,文件会将错误消息发送回登录页面:
if (isset($_GET['em'])){
if($_GET['em'] == 28){$errorMessage = "Your username or password was incorrect.";}
}
我处理' GET'参数并打印错误信息:
operation/validateLogin.php
现在用户需要通过重新提交表单再次尝试登录,但表单的操作是:
http://localhost/demoapp/login.php/?em=28
并且URL现在是:
http://localhost/demoapp/login.php/operation/validateLogin.php
因此,提交表单时,网址将变为:
http://localhost/demoapp/operation/validateLogin.php
什么时候应该......
{{1}}
如何防止这种情况发生在网址上?
答案 0 :(得分:0)
可以使用相对URL设置HTML表单的ACTION属性:
/operation/validateLogin.php
或
/validateLogin.php
实际上建议使用HTML元素的相对URL: Absolute vs relative URLs
但是,使用PHP时,绝对URL是您的最佳选择:
http://localhost/demoAPP/operation/validateLogin.php
绝对URL的使用将减轻您的意外URL连接代码。
我最近弄清楚在某些情况下要使用哪种类型的网址,但这是我意识到的......
PHP(本地/服务器语言)=绝对本地/服务器地址
require "C:/dev/www/DEMO/operation/login/validateLogin.php";
include "C:/dev/www/DEMO/operation/login/validateLogin.php";
header("Location: http://localhost/demoapp/login.php/?em=28"); (redirect to a web address)
这可能看起来非常简单,但记住这将为您节省大量的故障排除时间。
附加:您会注意到您可以使用HTML地址的网址,而不会遇到任何问题。但是,对于PHP要求和包含,您只能使用本地地址。有这个限制的原因,这都是因为一个重要的PHP设置...
https://help.dreamhost.com/hc/en-us/articles/214205688-allow-url-include