批改状态:合格
老师批语:序列化是为了传输或存储方便
1.$_SERVER全部变量练习
效果图
运行代码
<?phpecho '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中,提高效率。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号