$_SERVER[SCRIPT_NAME]、$_SERVER[PHP_SELF]、$_SERVER[QUERY_STRING]、$_SERVER[REQUEST_URI]

1、$_SERVER["SCRIPT_NAME"]

说明:包含当前脚本的路径

2、$_SERVER["PHP_SELF"]

说明:当前正在执行脚本的文件名

3、$_SERVER["QUERY_STRING"]

说明:查询(query)的字符串

4、$_SERVER["REQUEST_URI"]

说明:访问此页面所需的URI

实例:

1.http://52php.cnblogs.com/ (直接打开主页)

结果:

$_SERVER["SCRIPT_NAME"] = "/index.php"
$_SERVER["PHP_SELF"]     = "/index.php"
$_SERVER["QUERY_STRING"] = ""
$_SERVER["REQUEST_URI"] = "/"

2.http://52php.cnblogs.com/?p=222 (附带查询)

结果:

$_SERVER["SCRIPT_NAME"] = "/index.php"
$_SERVER["PHP_SELF"]     = "/index.php"
$_SERVER["QUERY_STRING"] = "p=222"
$_SERVER["REQUEST_URI"] = "/?p=222"

3.http://52php.cnblogs.com/index.php?p=222&q=biuuu

结果:

$_SERVER["SCRIPT_NAME"] = "/index.php"
$_SERVER["PHP_SELF"]     = "/index.php"
$_SERVER["QUERY_STRING"] = "p=222&q=biuuu"
$_SERVER["REQUEST_URI"] = "/index.php?p=222&q=biuuu"

4.http://52php.cnblogs.com/123/123.php/abc/def?id=222&name=jack

$_SERVER["SCRIPT_NAME"] = "/123/123.php"
$_SERVER["PHP_SELF"]     = "/123/123.php/abc/def"
$_SERVER["QUERY_STRING"] = "id=222&name=jack"
$_SERVER["REQUEST_URI"] = "/123/123.php/abc/def?id=222&name=jack"

5.http://52php.cnblogs.com/123/123.php/abc/def.bat?id=222&name=jack

$_SERVER["SCRIPT_NAME"] = "/123/123.php"
$_SERVER["PHP_SELF"]     = "/123/123.php/abc/def.bat"
$_SERVER["QUERY_STRING"] = "id=222&name=jack"
$_SERVER["REQUEST_URI"] = "/123/123.php/abc/def.bat?id=222&name=jack"

 

  • $_SERVER["SCRIPT_NAME"]  获取当前脚本的路径,如:index.php
  • $_SERVER["PHP_SELF"]  当前正在执行脚本的文件名
  • $_SERVER["QUERY_STRING"]  获取查询语句,实例中可知,获取的是?后面的值
  • $_SERVER["REQUEST_URI"]  获取http://52php.cnblogs.com后面的值,包括/

总结一下,对于SCRIPT_NAME、PHP_SELF、QUERY_STRING、REQUEST_URI,深入了解将有利于我们 在$_SERVER函数中正确调用这四个值。

一般地: $_SERVER["REQUEST_URI"] = $_SERVER["PHP_SELF"] . '?' . $_SERVER["QUERY_STRING"]

 

注意:当有地址重写时,情况有些变化,如:

/class 重写到 /index.php?app=class&mod=Index&act=index

此时:

$_SERVER['PHP_SELF'] 值等于 /index.php
$_SERVER['QUERY_STRING'] 值等于 /index.php?app=class&mod=Index&act=index
$_SERVER["REQUEST_URI"] 值等于 /class

 

uchome系统中处理技巧:

//处理REQUEST_URI
if (!isset($_SERVER['REQUEST_URI'])) {$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];if (isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
if ($_SERVER['REQUEST_URI']) {$temp = urldecode($_SERVER['REQUEST_URI']);if (strexists($temp, '<') || strexists($temp, '"')) {$_GET = shtmlspecialchars($_GET); // XSS}
}

 

 

 

延伸阅读:

PHP获取当前页面的URL

PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别

PHP的$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案

转载于:https://www.cnblogs.com/52php/p/5657939.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GWT和HTML5 Canvas演示

这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形&#xff0c;仅用几行代码就得出了这样的内容&#xff1a; 码&#xff1a; public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";static final St…

Solr管理界面详解

转载于:https://www.cnblogs.com/gslblog/p/6553813.html

一个实用的却被忽略的命名空间:Microsoft.VisualBasic:

当你看到这个命名空间的时候&#xff0c;别因为是vb的东西就匆忙关掉网页&#xff0c;那将会是您的损失&#xff0c;此命名空间中的资源最初目的是为了简化vb.net开发而创建的&#xff0c;所以microsoft.visualbasic并不属于system命名空间&#xff0c;而是独立存在的。虽然是为…

Linux基础之命令练习Day2-useradd(mod,del),groupadd(mod,del),chmod,chown,

作业一&#xff1a; 1) 新建用户natasha&#xff0c;uid为1000&#xff0c;gid为555&#xff0c;备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码“123” 5) 查看用户密码配置文件的最后一行 6) 将nat…

动态表单,JSF世界早已等待

新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常&#xff0c;如果知道行/列的数量&#xff0c;元素的位置等&#xff0c;则可以通过h&#xff1a;panelGrid或p&#xff1a;panelGrid来构建非常简单的表单。 对于静态表单&#xff0c;这是正确的。 但是&#xff0c;如…

C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)

定时器事件代码 static void Main(string[] args) {Method();#region 定时器事件 Timer aTimer new Timer();aTimer.Elapsed new ElapsedEventHandler(TimedEvent);aTimer.Interval seconds * 1000; //配置文件中配置的秒数aTimer.Enabled true;#endregionstring strLi…

Vmware安装Centos NAT方式设置静态IP

【Vmware中在搭建集群环境等&#xff0c;DHCP自动获取IP方式不方便&#xff0c;为了固定IP减少频繁更改配置信息&#xff0c;建议使用静态IP来配置&#xff0c;网络连接主要有三种方式 1.nat 2.桥接&#xff0c;3主机模式 &#xff0c;在这里主要介NAT方式&#xff0c; 为什么使…

1 TB /节点时快速,可预测且高度可用

世界正每秒从移动设备&#xff0c;Web和各种小工具向应用程序推送大量数据。 如今&#xff0c;更多的应用程序必须处理此数据。 为了保持性能&#xff0c;这些应用程序需要快速访问数据层。 在过去的几年中&#xff0c;RAM价格下降了&#xff0c;我们现在可以便宜得多地获得具有…

java jni 内存_Android开发之JNI内存模型

Java 与JNI 内存管理是怎样的想要弄清楚Java与JNI的内存管理的关系&#xff0c;首先要弄清楚JVM的内存模型JVM内存模型.png其中本地方法栈就是运行时调用native 方法的数据保存区。本地方法栈的大小可以设置成固定的或者是动态扩展。Java中的内存泄露JAVA 编程中的内存泄漏&…

04 linux用户群组和权限

作业一&#xff1a; 1)新建用户natasha&#xff0c;uid为1000&#xff0c;gid为555&#xff0c;备注信息为“master” 2)修改natasha用户的家目录为/Natasha 3)查看用户信息配置文件的最后一行 4)为natasha用户设置密码“123” 5)查看用户密码配置文件的最后一行 6)将natasha用…

基于 CoreText 实现的高性能 UITableView

引起UITableView卡顿比较常见的原因有cell的层级过多、cell中有触发离屏渲染的代码&#xff08;譬如&#xff1a;cornerRadius、maskToBounds 同时使用&#xff09;、像素是否对齐、是否使用UITableView自动计算cell高度的方法等。本文将从cell层级出发&#xff0c;以一个仿朋友…

Web Magic 总体架构

1.2 总体架构 WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件&#xff0c;并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy&#xff0c;但是实现方式更Java化一些。 而S…

SpringMVC搭建+实例

想做一点自己喜欢的东西&#xff0c;研究了一下springMVC,所以就自己搭建一个小demo,可供大家吐槽。 先建一个WEB工程&#xff0c;这个相信大家都会&#xff0c;这里不在多说。去网上下载spring jar包&#xff0c;然后在WEB-INF下新建一个lib文件&#xff0c;将下载的jar包放进…

php8更新,PHP 8 中新特性以及重大调整

PHP 8&#xff0c;PHP 的一个新的大版本&#xff0c;预计将于2020年12月3日发布&#xff0c;这意味着将不会有 PHP 7.5 版本。PHP8目前正处于非常活跃的开发阶段&#xff0c;所以在接下来的几个月里&#xff0c;情况可能会发生很大的变化。在这篇文章中&#xff0c;我会维持一个…

Javascript学习之函数(function)

http://www.cnblogs.com/royalroads/p/4418587.html 在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例&#xff0c;而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针。 一 函数的声明方式 //1.函数声…

用于Spring JPA2后端的REST CXF

在本演示中&#xff0c;我们将使用spring / jpa2后端生成一个REST / CXF应用程序。 该演示演示了分钟项目的轨迹REST-CXF 。 演示2中的模型保持不变。 浓缩保持不变。 但是轨道改变了 添加的是2层&#xff1a; 在JPA2之上具有弹簧集成的DAO层 具有JAX-RS批注的REST-CXF层…

完整的WebApplication JSF EJB JPA JAAS –第1部分

这篇文章将是迄今为止我博客中最大的一篇文章&#xff01; 我们将看到完整的Web应用程序。 最新的技术将完成此工作&#xff08;直到今天&#xff09;&#xff0c;但是我将给出一些提示以显示如何使本文适用于较旧的技术。 在本文的结尾&#xff0c;您将找到要下载的源代码。 您…

使用Hibernate加载或保存图像-MySQL

本教程将引导您逐步了解如何使用Hibernate从数据库&#xff08; MySQL &#xff09;保存和加载图像。 要求 对于此示例项目&#xff0c;我们将使用&#xff1a; Eclipse IDE &#xff08;您可以使用自己喜欢的IDE&#xff09;&#xff1b; MySQL &#xff08;您可以使用任何…

javaweb回顾第四篇Servlet异常处理

前言&#xff1a;很多网站为了给用户很好的用户体验性&#xff0c;都会提供比较友好的异常界面&#xff0c;现在我们在来回顾一下Servlet中如何进行异常处理的。 1&#xff1a;声明式异常处理 什么是声明式&#xff1a;就是在web.xml中声明对各种异常的处理方法。 是通过<er…

java开发cs教程,日常运维(一)

w命令&#xff1a;用于查看系统负载、显示已经登陆系统的用户列表&#xff0c;并显示用户正在执行的指令等信息第一行从左面开始显示的信息依次为&#xff1a;时间&#xff0c;系统运行时间&#xff0c;登录用户数&#xff0c;平均负载。第二行开始以及下面所有的行&#xff0c…