我在网址中有3个$_GET
个变量的页面;
http://www.example.co.uk/search?location=asokoro&day=today&time=12%3A00
location = string, day = string, time = time eg 12:00, 13:15
我想阻止访问以下条件的页面。
如果没有收到变量,则阻止访问--- 已完成
if(!isset($_GET['location']) || !isset($_GET['day']) || !isset($_GET['time'])) {
header("Location: http://www.example.co.uk");
exit;
}
如果不支持location
,则阻止访问--- 已完成
$locations = Array('loc1','loc2');
if (!in_array($_GET['location'], $locations)) {
header("Location: http://www.example.co.uk");
exit;
}
如果day
不正确,请阻止访问--- 已完成
if($_GET['day'] != "today" || $_GET['day'] != "tomorrow") {
header("Location: http://www.abklab.co.uk");
exit;
}
如果time
不正确,则阻止访问--- 未完成
在这里,我希望能够检查time
是否实际是时间而不是test
之类的随机字符串。
正如您从URL中看到的那样,时间与%3A
一起传递,其中:
我想检查time
是否确实是时间,例如12:00,14:20等等,如果没有,则阻止访问
答案 0 :(得分:0)
你只需要一种逃脱html特殊字符的方法,对吧? 试试这个:
if(strlen(trim($_GET['time'])) > 0){
echo htmlspecialchars_decode(trim($_GET['time']));
}
答案 1 :(得分:0)
当您通过$_GET['time']
获取时间变量时,%3A
应该转换为:
并暂停,您可以检查time
是否实际上time
通过regex
。其表达式为:([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?