zhansh 发表于 2021-10-7 09:12

php 如何根据网址传入的参数转向到 404

比如网址是形如这样的

/?id=*
/index.php/index.php?*
/?show=*


<?php
//如何判断上面的网址然后转到404

header('HTTP/1.1 404 Not Found');
header('location: /404.html');
?>


或者用 rewrite能否做呢?

WayneXiong 发表于 2021-10-7 09:23

$_GET 变量,可获得变量值。
/?id=88
/index.php/index.php?id=88
/?show=88
$_GET["id"]
$_GET["id"]
$_GET["show"]

闷骚小贱男 发表于 2021-10-7 09:28

$_GET["XXX"]//获取传值的值

yuupuu 发表于 2021-10-7 10:05

<?php

$id = $_GET["id"];
$show = $_GET["show"];

// 判断id或者show的变量是否为*,如果是,就跳转到404,其中*可以修改为你想要拦截的变量,例如你要拦截id=1,或者show=2,都会被拦截下来跳转到404
if($id == '*' || $show == '*'){
      header('location: /404.html');
}

?>

szhwa 发表于 2021-10-7 10:06

使用$_GET,利用get的传参,来处理跳转就可以了

zhansh 发表于 2021-10-7 11:39

有以下几种情况
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 11:51

本帖最后由 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:55

本帖最后由 涛之雨 于 2021-10-7 11:57 编辑

zhansh 发表于 2021-10-7 11:39
有以下几种情况
1、id 参数后面非纯数字的需转向
/?id=822373047399.ppt

方法上面都回复了,自己思考一下呢?
一种是根据get参数去获取然后判断是否存在,
还可以拿到全部URL请求链接(或完整参数)然后正则表达式去匹配
因为看样子涉及文件操作,最好加个合法性检测吧,不然挺危险的,过滤或者判断特殊字符啥的

zhansh 发表于 2021-10-7 12:04

WayneXiong 发表于 2021-10-7 09:23
$_GET 变量,可获得变量值。
/?id=88
/index.php/index.php?id=88


谢谢朋友!

zhansh 发表于 2021-10-7 12:05

感谢以上各位朋友,我 7 楼那样写的应该差不多了吧,还没有测试
页: [1] 2
查看完整版本: php 如何根据网址传入的参数转向到 404