PHP-绝对值&;相对URL类型
我用PHP编写了一个登录代码: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
<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)