1.$_SERVER全部变量练习
效果图
运行代码
<?php
echo '1.当前运行脚本所在的服务器的 IP 地址'.$_SERVER['SERVER_ADDR'].'<br>';
echo '2.服务器使用的 CGI 规范的版本'.$_SERVER['GATEWAY_INTERFACE'].'<br>';
echo '3.当前运行脚本所在的服务器的主机名'.$_SERVER['SERVER_NAME'] .'<br>';
echo '4.服务器标识字符串'.$_SERVER['SERVER_SOFTWARE'].'<br>';
echo '5.请求页面时通信协议的名称和版本'.$_SERVER['SERVER_PROTOCOL'].'<br>';
echo '6.请求开始时的时间戳'.$_SERVER['REQUEST_TIME'].'<br>';
echo '7.查询字符串'.$_SERVER['QUERY_STRING'].'<br>';
echo '8.当前运行脚本所在的文档根目录'.$_SERVER['DOCUMENT_ROOT'].'<br>';
echo '9.当前请求头中 Accept内容'.$_SERVER['HTTP_ACCEPT'].'<br>';
echo '10.浏览当前页面的用户的主机名'.$_SERVER['HTTP_HOST'].'<br>';
echo '11.用户机器上连接到 Web 服务器所使用的端口号'.$_SERVER['REMOTE_PORT'].'<br>';
echo '12.经验证的用户'.$_SERVER['REMOTE_USER'].'<br>';
echo '13.当前执行脚本的绝对路径'.$_SERVER['SCRIPT_FILENAME'].'<br>';
echo '14.指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数'.$_SERVER['SERVER_ADMIN'].'<br>';
echo '15.Web 服务器使用的端口'.$_SERVER['SERVER_PORT'].'<br>';
echo '16.包含了服务器版本和虚拟主机名的字符串'.$_SERVER['SERVER_SIGNATURE'].'<br>';
echo '17.当前脚本的路径'.$_SERVER['SCRIPT_NAME'].'<br>';
echo '18.URI 用来指定要访问的页面'.$_SERVER['REQUEST_URI'].'<br>';
echo '19.使用 HTTP 认证功能de变量便是认证的类型'.$_SERVER['AUTH_TYPE'].'<br>';
echo '20.包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息'.$_SERVER['PATH_INFO'].'<br>';
echo '21.在被 PHP 处理之前,"PATH_INFO" 的原始版本。'.$_SERVER['ORIG_PATH_INFO'].'<br>';
2.对常用验证器进行测试
效果图
运行代码
<?php
//过滤器的使用
//对于邮箱的过滤
$email = 'adming';
echo filter_var($email,FILTER_VALIDATE_EMAIL)? '邮箱格式正确' : '邮箱格式错误';
echo '<hr>';
//外部变量过滤
echo $_SERVER['SCRIPT_NAME'].'<br>';
echo filter_input(INPUT_SERVER, 'SCRIPT_NAME') . '<br>';
echo '<hr>';
//过滤掉路径信息
echo filter_input(INPUT_SERVER, 'PATH_INFO') . '<br>';
echo '<hr>';
//URI 的一个实例或实现
echo $_SERVER['SCRIPT_URI'].'<br>';
echo filter_input(INPUT_SERVER, 'REQUEST_URI') . '<br>';
echo '<hr>';
//服务器接口过滤,接口没问题两者结果一致
echo $_SERVER['SERVER_PORT'].'<br>';
echo filter_input(INPUT_SERVER, 'SERVER_PORT') . '<br>';
echo '<hr>';
// 获取当前请求的URL完整地址
$port = filter_input(INPUT_SERVER, 'SERVER_PORT');
$scheme = intval($port) === 443 ? 'https://' : 'http://';
$host = filter_input(INPUT_SERVER, 'HTTP_HOST');
// echo $host;
$uri = filter_input(INPUT_SERVER, 'REQUEST_URI');
echo $scheme . $host . $uri;
echo '<hr>';
echo filter_has_var(INPUT_GET, 'id') ? '存在id' :'不存在id';
echo '<hr>';
//验证ID是否为整数,过滤器对整数的过滤
if (filter_has_var(INPUT_GET, 'id')) {
if (filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)) {
echo 'id通过';
} else {
echo 'id失败';
}
} else {
echo '不存在id';
}
echo '<hr>';
// 自定义过滤器,将'php.cn'用'php中文网'代替的过滤器
function filter_words($str)
{
return str_replace('php.cn', 'php中文网', $str);
}
$str = 'php.cn是一个专业的php学习与分享平台';
echo $str . '<br>';
//ILTER_CALLBACK 过滤器调用用户自定义函数来过滤数据。该过滤器为我们提供了对数据过滤的完全控制。
echo filter_var($str, FILTER_CALLBACK, ['options'=>'filter_words']);
3.数据序列化与反序列化基本操作
效果图
运行代码
<?php
// 序列化
$var = 999;
// 变量序列化
echo serialize($var);
echo '<hr>';
// 数组序列化
$arr = [
999,
'pyp',
'true',
9.99
];
echo serialize($arr);
echo "<hr>";
// 反序列化
$a1 =unserialize('a:4:{i:0;i:999;i:1;s:3:"pyp";i:2;s:4:"true";i:3;d:9.99;}');
var_dump($a1);
echo "<hr>";
setcookie('user', serialize($arr));
$add=unserialize($_COOKIE['user']);
var_dump($add);
4.小结
我觉得过滤器的主要作用是准确的获取,过滤的值。而序列化可以快速的将值放入cookie中,提高效率。