【发布时间】:2017-04-19 01:07:15
【问题描述】:
我用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>
当我提交表单时,凭据会发送到验证文件。如果发生错误,文件会将错误消息发送回登录页面:
header("Location: http://localhost/demoapp/login.php/?em=28");
我处理 'GET' 参数并打印错误消息:
if (isset($_GET['em'])){
if($_GET['em'] == 28){$errorMessage = "Your username or password was incorrect.";}
}
现在用户需要重新提交表单尝试再次登录,但是表单的动作是:
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
如何防止 URL 发生这种情况?
【问题讨论】: