php全局变量和类配合使用全解析

PHP SQL注入防护:360安全过滤类原理与实战集成 SQL注入是Web应用最基础也最危险的安全漏洞之一,其本质在于用户输入未经过滤直接拼入SQL语句。防御核心在于输入净化与参数化查询的协同——前者解决遗留系统无法重构的应急需求,后者才是根本方案。360提供的PHP防SQL注入类并非简单转义工具,而是基于SQL语法状态机的上下文感知型请求净化中间件,支持对$_GET、$_POST等超全局变量进行编码统一、注释识别、关键字拦截与字符串字面量保护。它适用于ThinkPHP 3.x、Dedecms等老框架改造,在不改动原有SQL拼接逻辑的前提下,为裸写SQL的遗留系 阅读详情
 

情况1:

 

father.php如下定义:

<?php

 

$jack = 1000;

 

?>

 

children.php 如下定义:

 

<?php

 

require("father.php");

$jack=123;

echo $jack."/n";

 

?>

 

php children.php

运行输出为123.

如果将$jack=123注释掉,运行为1000,如果将$jack=123放到require("father.php");之前,运行结果为1000.

 

比较好理解:php解释执行,解释到哪,执行到哪。。像$jack这种属于全局变量,如第一种情况的初始用它的时候是1000,是在require

的时候运行得到的,结果又被改成了123,所以运行结果输出123.

 

 

情况2:

children.php代码改为如下:

<?php

 

require("father.php");

function testJack(){

 

    if(!isset($jack)){

            echo '$jack is null'."/n";

       }

}//testJack

 

testJack();

?>

 

php children.php

运行结果为:$jack is null.也就是说在testJack()中引用的$jack是一个局部变量。

如果使用global关键字,声明这个$jack是一个全局变量,代码改为如下:

 

<?php

 

require("father.php");

function testJack(){

    global $jack;

    if(!isset($jack)){

            echo '$jack is null'."/n";

       }else{

 

            echo '$jack is not null'."/n";

     }

}//testJack

 

testJack();

?>

 

则运行结果为$jack is not null!

 

情况3:

children.php代码如下:

 

<?php

require("father.php");

class  JackTest{

 

public function testJack(){

 

    if(!isset($jack)){

            echo '$jack is null'."/n";

       }else{

 

            echo '$jack is not null'."/n";

     }

}//testJack

 

}

 

$jackTest = new JackTest();

$jackTest->testJack();

 

?>

运行结果输出:$jack is null

 

这是因为class中的这个函数的$jack这是一个局部变量啊。

如果在function testJack开头加 global $jack;那么就输出$jack is not null了。

比较容易理解。

 

情况4:

把文件名当做参数动态加载,代码如下:

<?php

 

    $casefile = $_SERVER['argv'][1];

    echo $casefile."/n";

 

    require($casefile);

    echo $jack."/n";

?>

 

运行php children.php father.php

结果如下:

father.php

1000

 

也就是说我们动态加载程序运行成功了。。

 

情况5:

要把动态加载和类的定义结合起来:



目录关系式这样的:
|- c.php
|- Bfold - b.php
|- Afold - a.class.php
(里面的函数引用了../Bfold/b.php)

也就是说 在c.php中new了class a.class ,而a.class.php的一个函数中require了Bfold文件夹下的b.php,这个require(../Bfold/b.php)报错,Warning: ……


因为你让服务器当前执行的是c.php文件,所以php解析的时候是把路径相对于c.php而言的,你试试把(../Bfold/b.php)改成(Bfold/b.php)看看,应该就不会报错了。

 

 

 

 

下面是程序例子,说明在函数内部使用require_once(A.php).

 

对require_once的理解:

假设B.php中引用了require_once(A.php);这条语句。。

那么其实是相当于调用了A.php这个匿名的lambda函数去执行。如下图:


 本地图片,请重新上传

 

C.php在一个函数调用中require了B.php------》

 

B.php在普通语句中require了A.php--------》

 

A.php

 

 

 

 

 

 

 

现在我们调用php B.php;因为B.php在普通语句中使用了require调用了A.php,那么A.php会把它的相对A来说是全局变量的变量,注册到B.php的环境中。因为B.php是根开始调用文件,他的运行环境就是全局环境。所以A.php文件中的变量在B.php可以被正常使用。

 

现在我们调用php C.php;那么C是在函数使用require调用了B.php的,然后B又调用了A,感觉在这个调用的过程中,相对B和A根运行环境是C的调用函数的环境,但C的调用函数如果要使用B和A中的变量,就没有办法了。。

 

如果用global $a,去引用,那么由于$a在这种情况下不属于全局变量,引用不到。

如果用$a去引用,那么由于$a会被当成局部变量也引用不到的。。。


全面了解PHP中的全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: •$GLOBALS •$_SERVER •$_REQUEST •$_POST •$_GET •$_FILES •$_ENV •$_COOKIE •$_SESSION 本章节我们将讲解几个常用的超级全局变量,其余变量我们在接下来几个章节会介绍到。 PHP $GLOBAL $GLOBAL 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。 $GLOBAL 是一个包含了全部变量的全局组合数组。变量的 立即下载

相关推荐

车载监控系统升级指南:如何用XS9950A替换TP9950实现高清视频解码(附配置代码)

本文提供了从TP9950升级至XS9950A车载视频解码芯片的完整实战指南。详细解析了硬件设计调整、PCB布局要点,并重点分享了通过I2C配置寄存器实现高清HDCCTV视频解码与同轴音频集成的软件驱动代码与调试技巧,助力工程师平滑完成系统升级。

weixin_29268637的博客 370

php的全局p变量程序_全局注册模式在PHP中使用全局变量

第一部分使用单件(Singletons)解决函数参数问题的一种方法就是采用单件(Singletons)来代替函数参数。单件是一类特殊的对象,它们只能实例化一次,而且含有一个静态方法来返回对象的接口。下面的例子演示了如何构建一个简单的单件:// Get instance of DBConnection$db =& DBConnection::getInstance();// Set user...

weixin_39654848的博客 182

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1877

php变量、类或函数,php – 使变量可用于所有类,方法,函数和include,就像$_POST一样...

这个问题似乎很简单,但是我在任何地方找不到答案在我的PHP脚本/文件的开头我想创建一个变量.$variable = 'this is my variable';我希望这个变量在整个脚本中可用,所以所有的类,方法,函数,包含的脚本等可以简单地将这个变量称为$variable.Class MyClass{public function showvariable(){echo $variable;}}$...

weixin_30586417的博客 195

2026年信创系统技术应用专业人才培养基地建设方案(高职、信创新专业、人才培养、专业代码:510221)

响应国家信创产业战略及教育部新增“信创系统技术应用”专业(代码510221)的部署,联合麒麟软件、华为鸿蒙等领军企业,建设高水平信创人才培养基地。方案基于国家政策导向(如2027年央企全面国产化替代目标)和行业人才缺口(2025年缺口超80万人),提出以“产教融合、创新驱动”为核心,构建集教学、实训、认证于一体的综合性培养体系。 建设内容涵盖五大方向: 专业规划:分三阶段(2025-2030年)推进专业申报、课程开发与区域辐射,最终建成区域性信创技术创新平台。 课程体系:围绕运维、云计算、数据库、适配

啊碧根果的博客 1598

【飞腾平台安装windows arm 11系统】

本文提供国内的百度网盘链接供下载使用:链接: https://pan.baidu.com/s/1_cftVdoX40k0M6zVTmFq8Q?3)快速迁移虚拟机技巧:如果是迁移已经安装好的虚拟机的使用场景,除了导出镜像外,也可直接复制安装好虚拟机的整个文件夹到指定的存储目录,选定好其中的任意qcow2文件后即可快速启动。可在飞腾软件平台点击网盘链接获取对应系统的deb包(麒麟和统信)以及phyvirt·app,下载地址:https://www.phytium.com.cn/developer/

firefly_cv的博客 8936

php 静态全局类,PHP的局部、静态、全局和超全局变量的使用和区别

【局部变量与全局变量】在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的。在函数外定义的变量称为全局变量,在函数内定义的是局部变量。但是,想要在函数内部使用全局变量却不可以直接使用,而是要先通过 global 关键字声明:$gVar1="hello";$gVar2="world!!";say_hello();functionsay_hello(){global$gVar1;e...

weixin_39733948的博客 188

学Simulink——控制执行场景实例:基于Simulink的智能车辆电子稳定控制(ESC)仿真

本文完成了基于 Simulink 的智能车辆电子稳定控制(ESC),实现了:✅ 构建含轮胎非线性的车辆动力学模型✅ 设计滑模横摆稳定性控制器✅ 实现四轮制动力分配逻辑✅ 验证在双移线低附着场景下的卓越稳定性✅ 为主动安全控制系统开发提供完整范式。

xiaoheshang_123的博客 528

php中全局变量如何设置,如何在php中声明全局变量?

我有这样的代码:$a="localhost";function body(){global $a;echo $a;}function head(){global $a;echo $a;}function footer(){global $a;echo $a;}?>有什么方法可以在一处定义全局变量并使变量$a一次在所有函数中访问? 不使用global $a;呢?没有没有。 如果您不喜欢glob...

weixin_39634508的博客 846

第一章:信号链的精度之战:深入解决电流采样偏差

摘要:本文深入探讨了FOC控制中电流采样偏差问题及其解决方案。电流采样偏差主要来源于偏移误差、增益误差、非线性误差和温漂四大类,其中偏移误差对FOC性能影响最为严重。硬件方面建议采用高精度采样电阻、低失调运放和独立基准电压等设计;软件层面提出了上电自动零点校准、在线实时补偿和模型闭环补偿三种策略。最后介绍了量产自动化校准系统,通过硬件优化和软件补偿相结合,确保每台产品电流采样精度的一致性,为FOC控制奠定坚实基础。

汽车软件开发 602

STM32实现简单的智能电梯控制

上述代码实现了一个简单的智能电梯控制器。电梯的状态包括IDLE(停止)、UP(向上移动)和DOWN(向下移动)三种状态。通过向上和向下按钮的按下,可以控制电梯移动到指定的楼层。在主循环中,不断读取当前楼层的按钮状态,并根据电梯状态决定执行的动作。具体的楼层数量和按钮的GPIO引脚可以根据实际情况进行调整。要实现简单的智能电梯控制,我们可以使用STM32微控制器来实现。

2401_85258012的博客 336

php.ini添加的变量读取,PHP5 在扩展里使用 INI 指令(直接添加和配合全局变量两种方式)...

PHP 扩展开发的文章,我均已更新至《TIPI》(下面的博文可能已经过时,以 TIPI 上的内容为准)。我们的很多配置都是从php.ini里读取的,这个想必大家都非常熟悉了。什么时候需要 INI 指令比如某个扩展的连接池的初始连接数的配置。因为一个使用该扩展的机器配置各不一样,数据量也不一样,所以在装载该扩展的时候,每台机器上希望的初始连接数不尽一样。就需要在php.ini里配置。如果你觉得为什么...

weixin_28869649的博客 487

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

php设计一个盒子类代码_浅谈PHP代码设计结构

coding多年,各种代码日夜相伴,如何跟代码友好的相处,不光成为职业生涯的一种回应,也是编写者功力的直接显露。如何看待程序和代码呢?那就让我们从程序定义来谈起,如果从业务最终呈现来看,一个程序可以看成是一个真实业务需求的逻辑代码映射。如果从程序逻辑结构看,程序就是数据结构加算法的结合。这样看,为满足更多的业务需求,更好的满足这些需求,就需要更多的程序代码,当程序代码堆积达到一定数量后,如何管理好...

weixin_30210749的博客 652

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php环境搭建(正确配置nginx和php)

一.nginx实现php动态解析原理 nginx 是一个高性能的http服务器和反向代理服务器。即nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为一个反向代理服务器进行负载均衡。但需要注意的是:nginx本身并不会对php文件进行解析。对PHP页面的请求将会被nginx交给FastCGI进程监听的IP地址及端口,由php-fpm(第三方的fastcgi进程管理器)作为动态解析服务器处理,最后将处理结果再返回给nginx。即nginx通过反向代理功能将动态请求转向后端php-fpm,从而实

benli8541的博客 158

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

腾讯云scf部署php,云函数 SCF 中 PHP 的一些入门坑

本文来自 Serverless 社区用户「逸笙」投稿由于云函数 SCF 本身是用 bootstrap.php 来调用我们的入口函数,默认为 index.main\_handler,意思是调用 index.php 文件中的 main\_handler(),所以很多地方写法要有改变。php 一般提供网页服务,所以我主要讲API 网关配合的云函数 SCF。main_handler($event, $co...

weixin_42512798的博客 681

php7配合wokerman性能,workerman介绍

WorkerMan的特性1、纯PHP开发使用WorkerMan开发的应用程序不依赖php-fpm、apache、nginx这些容器就可以独立运行。 这使得PHP开发者开发、部署、调试应用程序非常方便。2、支持PHP多进程为了充分发挥服务器多CPU的性能,WorkerMan默认支持多进程多任务。WorkerMan开启一个主进程和多个子进程对外提供服务, 主进程负责监控子进程,子进程独自监听网络连接并...

weixin_42126668的博客 475

PHP全局状态快照的智能过滤:深入解析sebastian/global-state的ExcludeList机制

在现代PHP开发中,**全局状态快照**是调试和测试的重要工具。sebastian/global-state库提供了一个强大的**ExcludeList机制**,能够智能地过滤掉不需要的快照内容,让你的测试更加精准高效。 ## 什么是全局状态快照? 全局状态快照指的是在特定时间点捕获PHP运行时的所有全局变量、静态属性、常量、函数、类等状态信息。这在单元测试中特别有用,可以确保测试之间的隔离性

gitblog_00415的博客 754

php安装phpdoc,phpdocmentor安装使用详解

安装phpDocumentor在pear下安装phpDocumentor是一件极其简单的事情,只需要在cmd窗口中cd 到php目录下,然后输入Pear install phpDocumentor即可。如果显示 Pear 不是内部或外部命令,也不是可运行的程序或批处理文件。则需要先运行 php文件夹里的 go-pear.bat 文件。直接按回车即可装好。期间需要输入一次y,再按任意键就可以了。然后...

weixin_39823676的博客 312

php 变量 详解,PHP变量详解

这个是我在初学php的时候对变量的一点认识,然后把自己的笔记稍微做了一下整理。没有具体的实例,但是在时候的项目中都会一一用到/**变量局部变量全局变量超级全局变量静态变量可变变量 $$a****/在全局范围内访问变量(也就是在函数内部访问外部的数据)1.通过全局变量时通过 global 关键字 来表示的在函数内部定义全局变量 global $a, $b;2.利用超级全局变量 $_GLOBALS ...

weixin_31766871的博客 334

php钩子是啥意思,demo实例解析php钩子原理

摘要:PHP钩子简单的说它是一种事件驱动的信息处理机制。一件事情,比如说你为了完成某个目的的程序,一次数据库查询,为了一次注册,为了一次登录,为了访问某个特定的网站等等。 1、什么是PHP钩子简单的说它是一种事件驱动的信息处理机制。一件事情,比如说你为了完成某个目的的程序,一次数据库查询,为了一次注册,为了一次登录,为了访问某个特定的网站等等。而事件驱动分为两个阶段:注册事件,目的是给未来可...

weixin_35691715的博客 499

PHPStan 错误 `closure.useSuperGlobal` 详解:闭包 use 子句禁止导入超全局变量

`closure.useSuperGlobal` 是 PHPStan 静态分析中针对闭包(closure)词法变量导入场景的错误标识符。当你在匿名函数的 `use (...)` 子句中试图导入 `$_GET`、`$_POST` 等超全局变量时,PHPStan 会报告该错误。本篇文章将讲解该错误的触发条件、背后的 PHP 语言语义、修复方式,并结合仓库中该标识符的文档结构与规则映射源码,说明这一检测

gitblog_01161的博客 739

php中post,PHP中$_POST和$_GET的用法

post和get是指:页面提交的两种方式get:参数都体现在url上,可以用于翻页,简单查询,get只能接收2M以下的内容,所以有局限性,另外由于内容是可见的,安全性就下降了,post:用于页面表单 提交,上传文件,这些操作。大小没有限制,也不会在地址栏上显示,安全性比较有保障,可以配合ssl使用,进行加密传输参数。都是php中超全局变量$_GET变量通过 URL 参数传递给当前脚本的变量的数组,...

weixin_34369521的博客 898
上一篇: PHP 中的use关键字
下一篇: MYSQL的常用命令和增删改查语句和数据类型
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值