Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:变量过滤器, 要多多练习
php 中的变量作用域分为函数作用域和全局作用域,函数中创建的变量只能在函数作用域内生效,全局变量在函数外全局生效
php 中变量分为三种:全局变量,私有变量和超全局变量,对应由全局、函数内、系统预定义生成
php 中给出了一些超全局变量,由系统加载,在全局和函数内都可以调用
序号 | 变量名 | 描述 |
---|---|---|
1 | $GLOBALS |
引用全局作用域中可用的全部变量 |
2 | $_SERVER |
服务器和执行环境信息 |
3 | $_GET |
HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组 |
4 | $_POST |
HTTP POST 请求: 将变量以关联数组形式传入当前脚本 |
5 | $_FILES |
HTTP 文件上传变量,保存着上传文件的全部信息 |
6 | $_COOKIE |
通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
7 | $_SESSION |
当前脚本可用 SESSION 变量的数组 |
8 | $_REQUEST |
默认情况下包含了 $_GET ,$_POST 和 $_COOKIE 的数组 |
9 | $_ENV |
通过环境方式传递给当前脚本的变量的数组 |
示例:
<?php
// 声明全局变量
$a=1;
function aaa ():string{//7.0的函数声明方式functing:xxx():数据类型,用于限定返回值类型
// 声明局部变量
$a=2;
return '局部变量a='.$a.'<br>全局变量a='.$GLOBALS['a'].'当前文件路径为'.$_SERVER['SCRIPT_NAME'];
}
echo aaa();
运行结果:
示例:
<?php
namespace a;
//非静态变量,每次调用$a都会初始化
function aaa():int{
$a=1;
return $a++;
}
echo aaa(),'<br>';
echo aaa(),'<br>';
echo aaa(),'<hr>';
namespace b;
//静态变量
function aaa():int{
static $a=1;
return $a++;
}
echo aaa(),'<br>';
echo aaa(),'<br>';
echo aaa(),'<hr>';
运行结果:
PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入
常用过滤器:
filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
filter_input - 获取一个输入变量,并对它进行过滤
filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
代码示例:
<?php
// 用filter_var函数过滤10-90间的数
$a=10;
$b='20';//filter_var验证过程中会将变量转化为字符串,所以$b也会通过
$c=100;
var_dump(filter_var($a,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
var_dump(filter_var($b,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
var_dump(filter_var($c,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
echo '<hr>';
//过滤邮箱
$email='1adawara@qq.com';
var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));//FILTER_VALIDATE_EMAIL id 为274
echo '<br>';
var_dump(filter_var($email,274));//FILTER_VALIDATE_EMAIL id 为274,效果一样
echo '<hr>';
//filter_var_array同时过滤多个变量
$d=['11','22','33','sdaf'];
var_dump(filter_var_array($d,FILTER_VALIDATE_INT));
echo '<hr>';
//检测外部输入变量
//get方式在url地址中传参 例:127.0.0.1/demo1.php?page=1
//检测是否有get方式输入属性page
var_dump(filter_has_var(INPUT_GET, 'page'));
echo '<hr>';
//检测get方式输入的属性page值是否为整数
var_dump(filter_input(INPUT_GET,'page',FILTER_VALIDATE_INT));
echo '<hr>';
//检测多个外部输入变量
// url:127.0.0.1/demo.php?password=13214
$aaa=[
'username'=>FILTER_VALIDATE_INT,
'password'=>FILTER_VALIDATE_INT
];
var_dump(filter_input_array(INPUT_GET,$aaa));
运行结果:
定义方式 | 描述 |
---|---|
get_defined_constants() |
查看系统所有常量 |
defined() |
检测常量是否存在 |
define() |
创建常量 |
const |
创建常量 |
constant() |
获取常量值 |
预定义常量 | 描述 |
---|---|
PHP_VERSION |
PHP 版本 |
PHP_MAXPATHLEN |
PHP 路径最大长度:1024 |
PHP_OS_FAMILY |
操作系统:Windows/Darwin/Linux |
PHP_SAPI |
web 服务器与 php 之间接口: apache2handler |
PHP_EOL |
行尾结束符 |
PHP_INT_MAX |
最大整数: 9223372036854775807 |
PHP_INT_MIN |
最小整数: -9223372036854775808 |
PHP_INT_SIZE |
整数宽度: 8 |
PHP_FLOAT_MAX |
最大浮点数:1.7976931348623E+308 |
PHP_FLOAT_MIN |
整小浮点数: 2.2250738585072E-308 |
DEFAULT_INCLUDE_PATH |
默认 PHP 命令路径 |
PHP_EXTENSION_DIR |
默认 PHP 扩展路径 |
E_ERROR |
运行时错误: 致命中断 |
E_PARSE |
语法解析错误: 致命中断 |
E_NOTICE |
运行时提示: 不中断 |
E_WARNING |
运行时警告: 不中断 |
E_ALL |
所有级别错误(除E_STRICT ) |
E_STRICT |
更加严格的错误处理机制,高于E_ALL |
TRUE |
布尔真 |
FALSE |
布尔 |
NULL |
空 |
DIRECTORY_SEPARATOR |
目录分隔符 |
魔术常量 | 描述 |
---|---|
__LINE__ |
文件中的当前行号 |
__FILE__ |
文件的完整路径和文件名 |
__DIR__ |
文件所在目录 |
__FUNCTION__ |
当前的函数名称 |
__CLASS__ |
当前类名称 |
__TRAIT__ |
当前Trait 名称 |
__METHOD__ |
当前类方法名称 |
__NAMESPACE__ |
当前命名空间名称 |