php 如何根据网址传入的参数转向到 404
比如网址是形如这样的/?id=*
/index.php/index.php?*
/?show=*
<?php
//如何判断上面的网址然后转到404
header('HTTP/1.1 404 Not Found');
header('location: /404.html');
?>
或者用 rewrite能否做呢? $_GET 变量,可获得变量值。
/?id=88
/index.php/index.php?id=88
/?show=88
$_GET["id"]
$_GET["id"]
$_GET["show"] $_GET["XXX"]//获取传值的值 <?php
$id = $_GET["id"];
$show = $_GET["show"];
// 判断id或者show的变量是否为*,如果是,就跳转到404,其中*可以修改为你想要拦截的变量,例如你要拦截id=1,或者show=2,都会被拦截下来跳转到404
if($id == '*' || $show == '*'){
header('location: /404.html');
}
?> 使用$_GET,利用get的传参,来处理跳转就可以了 有以下几种情况
1、id 参数后面非纯数字的需转向
/?id=822373047399.ppt
/?id=tvaqdy/xljnre.gq
/?id=433440805663.doc
/?id=umbwow/sxtloh.doc
/?id=yifdgr/yynxka.gq
/?id=834234089767.csv
/?id=xsmrbr/fndall.gq
/?id=337552819218.pptx
/?id=dkrpop/qbnokf.tacc
/?id=nkwowh/zndvcu.txt
/?id=fhqsny/bxemhl.docx
2、pid 后面非纯数字的做转向
/index.php?pid=fGNJiL=951627481686.shtml
/index.php?pid=yZlc=467058408840.xlsx
/index.php?pid=jAH=158492895523.shtml
3、带app 参数的做转向
/index.php?app=lgzbvy/qkkmml.txt
/index.php?app=ipdjrf/hyttke.docx 本帖最后由 zhansh 于 2021-10-7 12:00 编辑
<?php
$id = $_GET["id"];
$show = $_GET["show"];
if(!is_numeric($id) ||!is_numeric($show)){
header('HTTP/1.1 404 Not Found');
header('location: /404.html');
}
?> 本帖最后由 涛之雨 于 2021-10-7 11:57 编辑
zhansh 发表于 2021-10-7 11:39
有以下几种情况
1、id 参数后面非纯数字的需转向
/?id=822373047399.ppt
方法上面都回复了,自己思考一下呢?
一种是根据get参数去获取然后判断是否存在,
还可以拿到全部URL请求链接(或完整参数)然后正则表达式去匹配
因为看样子涉及文件操作,最好加个合法性检测吧,不然挺危险的,过滤或者判断特殊字符啥的 WayneXiong 发表于 2021-10-7 09:23
$_GET 变量,可获得变量值。
/?id=88
/index.php/index.php?id=88
谢谢朋友! 感谢以上各位朋友,我 7 楼那样写的应该差不多了吧,还没有测试
页:
[1]
2