Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-绝对值&;相对URL类型_Php_Forms_Post_Login_Get - Fatal编程技术网

PHP-绝对值&;相对URL类型

PHP-绝对值&;相对URL类型,php,forms,post,login,get,Php,Forms,Post,Login,Get,我用PHP编写了一个登录代码: <form NAME="form1" METHOD="POST" ACTION="operation/validateLogin.php"> Username <br/><input name="username" type=text autocomplete="off"><br/><br/> Password <br/><input name="pass

我用PHP编写了一个登录代码:

<form NAME="form1" METHOD="POST" ACTION="operation/validateLogin.php">
        Username <br/><input name="username" type=text autocomplete="off"><br/><br/>
        Password <br/><input name="password" type=text autocomplete="off"><br/><br/>
        <button class="btn btn-primary submit" type="submit">Sign In</button>
</form>
我处理“GET”参数并打印错误消息:

if (isset($_GET['em'])){
        if($_GET['em'] == 28){$errorMessage = "Your username or password was incorrect.";}
}
现在,用户需要通过重新提交表单再次尝试登录,但表单的操作是:

operation/validateLogin.php
现在的URL是:

http://localhost/demoapp/login.php/?em=28
因此,提交表单时,url变为:

http://localhost/demoapp/login.php/operation/validateLogin.php
什么时候应该

http://localhost/demoapp/operation/validateLogin.php

如何防止URL发生这种情况?

可以使用相对URL设置HTML表单的操作属性:

/operation/validateLogin.php

实际上,建议使用HTML元素的相对URL:

但是,使用PHP时,绝对URL是最佳选择:

http://localhost/demoAPP/operation/validateLogin.php
使用绝对URL将使您的代码免于意外的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,您肯定会收到错误。
附加:您会注意到,您可以使用web地址作为HTML属性,而不会遇到任何问题。但是,对于PHP,您只能使用本地地址。这种限制是有原因的,这都是因为一个重要的PHP设置

http://localhost/demoAPP/operation/validateLogin.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)