我正在尝试通过确保用户点击页面上的提交按钮来确保来自第2页的GET方法的参数(显示结果)不会被URL中的其他人(问号后面的变量)更改1(包含表格)。
教授要求我们使用isset()
来实现这一要求
这是登录页面:(page1.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional ...> <html
xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Login
Page</title> </head>
<body>
<label>User ID:</label>
<input type="text" name="uid">
<br />
<input type="submit" value="SubmitCredentials" name="SubmitCredentials"/>
<br />
</form> </body> </html>
这是第二页:(page2.php)
<?php
// get the data from the form
$uid = $_GET['uid'];
if(!isset($_GET['SubmitCredentials'])){
include('error.html');
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
...>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HELLO</title>
</head>
<body>
<label>Hello,</label>
<span><?php echo $uid; ?></span><br />
</body>
</html>
但是,if
语句似乎不起作用。当我更改网址中的变量error.html
时(例如,当我将网址更改为uid
时),我们应该将网页转发至http://localhost/1/page2.php?uid=admin
,但事实并非如此。我该如何解决?
PS:我在google&gt;&gt;&gt;上找到的相关教程 http://www.homeandlearn.co.uk/php/php4p7.html
答案 0 :(得分:1)
尝试:
if(!isset($_GET['SubmitCredentials'])){ header('Location: error.html'); }
答案 1 :(得分:0)
阵列上的Isset不安全。请尝试与===
运算符进行比较:
if(!($_GET['SubmitCredentials'] === 'SubmitCredentials')) {
include('error.html');
exit();
}
答案 2 :(得分:-1)
页面#1:
<form method="GET" action="...">
<input>
<input>
<input>
</form>
提交网址:
http://localhost/1/page2.php?SubmitCredentials=SubmitCredentials&uid=admin&i_like_php=yes&...