PHP - 绝对&相对URL类型

时间:2017-04-19 01:07:16

标签: php forms post login get

我用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}}

如何防止这种情况发生在网址上?

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)

这可能看起来非常简单,但记住这将为您节省大量的故障排除时间。

如果您使用的是.PHP文件,请以任何方式更改URL,并且不使用绝对URL,您肯定会收到错误。

附加:您会注意到您可以使用HTML地址的网址,而不会遇到任何问题。但是,对于PHP要求和包含,您只能使用本地地址。有这个限制的原因,这都是因为一个重要的PHP设置...

https://help.dreamhost.com/hc/en-us/articles/214205688-allow-url-include