myReq.class.php 用于处理 get, post, request, file, cookie, session, server, env, globals 等各类系统预定义变量,以及相关服务器交互响应,该类相关方法均可以静态调用。
变量调用
可以通过静态方法直接调用相关预定义变量,如 myReq::get('para_name') , myReq::server('query_string') 等,其中server项下变量名称会自动转换为大写。如果传入参数为“[ALL]”,则返回对应预定义变量的所有子项(如:myReq::POST('[ALL]'))。
此外,为保证系统安全,避免注入攻击,可以在获取变量时设置第二个格式参数,此参数可设置项目如下:
1 | int | 整数型 |
2 | url | 标准网址(不含协议名) |
3 | char | 数字加字母组合 |
4 | str | 默认值,任意字符串,但将过滤掉 eval 等敏感字符,并进行html实体转换 |
5 | 函数名 | 用于检测数据合法性的自定义函数 |
6 | 正则式 | 用于检测数据合法性的正则表达式 |
为便于开发,本类默认别名定义如下:
$func_alias = array(
'g' => 'get',
'p' => 'post',
'f' => 'files',
'r' => 'request',
'c' => 'cookie',
's' => 'session',
'e' => 'env',
'svr' => 'server',
'gl' => 'globals',
);
也就是 r::g('name‘) 等效于 myReq::get('name') ,r::svr('query_string’) 等效于 myReq::server('QUERY_STRING') ,其中 r 为 myReq 的别名,和方法别名均可通过系统后台设置,相关设置请见专题介绍。
Cookie处理
初始化
首先需要通过 setCookieOpt 方法,初始化 cookie 相关参数,参数为一个设置信息数组,包含以下元素:
1 | path | cookie生效的路径,相对于网站根,默认为“/” |
2 | domain | cookie生效的域名,如为空则默认为当前域名,如需跨二级域,需要设置为“.”加主域名的方式 |
3 | prefix | cookie前缀,为避免不同应用或域名下的名称冲突,针对每个cookie名称都将加上此前缀,设置好后,cookie操作直接使用定义名称即可,本类会自动处理前缀操作 |
初始化代码如下:
myReq::setCookieOpt([
'path' => '/',
'prefix' => ‘pre’
]);
添加cookie
设置方法为:
myReq::setCookie($name, $value, $expire, $path, $domain, $httponly);
myReq::setCookie_nopre($name, $value, $expire, $path, $domain, $httponly);
其中第二个方法为设置取不带前缀的cookie,以便于某些特殊需要。对应参数意义如下:
1 | $name | cookie名称,必填项 |
2 | $value | cookie内容 |
3 | $expire | 过期时间,默认为零,如小于等于0,则表示删除当前名称的cookie |
4 | $path | cookie作用路径,如为空则依照初始化参数 |
5 | $domain | cookie作用域名,如为空则依照初始化参数 |
6 | $httponly | 仅限于后台读取,无法被客户端javascript等脚本读取 |
删除cookie
删除cookie有三种方式,如下:
myReq::setCookie($name); // 用于删除带前缀的cookie
myReq::setCookie_nopre($name); // 用于删除无前缀的cookie
myReq::removeCookie($name, $pre); // $pre 为 bool 值,表示是否带前缀
读取cookie
读取 cookie,如同本节开头所述,代码为:myReq::cookie('name') 。
Session处理
初始化
首先需要通过setSessionOpt 方法,初始化 session 相关参数,sessionStart参数为一个设置信息数组,包含以下元素:
1 | id | 非必选项,自行设置session_id,可以实现不同电脑共享session,如不了解不建议设置 |
2 | expire | session 过期时间,单位是分钟,默认是30 |
3 | gc | 是否进行定期过期资源回收,默认是 false |
4 | trans_sid | 是否在网址中传递 session ID,默认是 false,如非必要不建议设置为 true |
5 | name | 非必选项,用于把 session ID 存储在cookie中的cookie名称 |
6 | path | 设置session以文件存贮时的存储目录 |
启动及停止
启动 session 的方法为:myReq::sessionStart($handle, $httponly) ,其中 $handle 为一个包含 open, close, read, write, destroy, gc 等六个静态方法的类名,如为空则由PHP系统管理session;$httponly 默认值为 true,即保证存储于cookie中的 session ID 只能在服务器端读取到。
重启 session 的方法为:myReq::sessionRestart($id, $delete_old_session) ,其中 $id 默认为空,即由PHP系统自动生成ID,如设置请参考初始化中的id属性;$delete_old_session 用于表明是否删除原有 session 信息,默认为 true。
关闭 session 的方法为:myReq::sessionEnd() ,本方法无参数,执行后将删除所有当前 session 信息。
读取与设置
读取 session,如同本节开头所述,代码为:myReq::session('name') ,如果传递第二个参数,则表示设置以第一个参数为名称的session,其值为第二个参数,即:myReq::session('name', 'value') 。需要补充的是,如果两个参数都没有测试,则将返回整个 session 编码,可参考 session_encode() 。
删除 session 的方法为:myReq::removeSession(‘name’) ,将删除指定名称的 session 。
本类还提供一个批量设置 session 的方法:myReq::setSessions($data) ,通过此方法可以立即将某类身份分配或转移给某个访客,其中 $data 参数为 session 编码,可通过myReq::session() 获取。
编码解码
针对session存储源码,本类还提供了解码和编码的方法,即 myReq::sessionDecode($str) 和 myReq::sessionEncode($array) ,可以方便地将session源码转为数据,或将数组转为session源码,以便于各类高级应用。
其他功能
1 | check | 检测某个预定义变量是否存在,并返回其子变量个数,参数为预定义变量名称(不含下划线,小写即可) |
2 | ip | 获取客户点IP,无参数 |
3 | ping | 检测某IP是否可以联通,并返回响应时间,参数是IP:PORT,其中端口默认是80,参数二用户获取响应信息 |
4 | pingURL | 检测某网址是否可以联通,并返回响应时间,参数是网址,参数二用户获取响应信息 |