TP5.0获取请求类和URL基本信息
1、如何获取请求类
系统函数:request();
系统类:
use think\Request;
$request = Request::instance();//因为request是单例模式 所以不能直接new
系统控制器类:
use think\Request;
public function index(Request $request){
dump($request);
}
2、获取用户请求信息
$request = Request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 获取当前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>';
// 获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
// 获取URL地址中的PATH_INFO信息 不含后缀
echo 'pathinfo: ' . $request->path() . '<br/>';
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>';
伪静态:将路径伪装成静态页面,让搜索引擎更好的收录网站,防止别人知道网站真实开发语言
3、获取请求模块/控制器/请求方法
模块:$request->module();
方法:$request->action();
控制器:$request->controller();
4、获取请求相关类型
请求类型:$request->method();
请求资源类型:$request->type();
访问地址:$request->ip();
是否是ajax请求:$request->isAjax();
获取请求参数:$request->param();
$request->only(['name','id']);//只获取特定字段
$request->except(['name','id']);//剔除取特定字段
5、获取变量
判断是否存在
$request->has('id','get');
input('?get.id');
读取变量
$request->get('id');
input('get.id');
读取所有 input('get.');
$request->get();
可读取数据类型:get、post、put、session、cookie等
6、变量过滤
作用:防止恶意输入,防止sql注入
使用:
全部数据过滤
$request->filter('htmlspecialchars');
$request->filter(['htmlspecialchars','strip_tags']);
针对变量过滤
$request->get('name','','htmlspecialchars');
过滤之后加密
$request->get('name','','htmlspecialchars,md5');
7、变量的排除和获取
$request->only('name');
$request->except('name');
8、变量的修饰符
修饰符 作用
s 强制转换为字符串类型
d 强制转换为整型类型
b 强制转换为布尔类型
a 强制转换为数组类型
f 强制转换为浮点类型
input('get.id/d');//强制转换成整型
input('get.name/s');//强制转换成字符串
9、变量的更改
地址栏访问:http://www.tp5.net/index.php/index/index/index?id=10
$request->get(['id'=>9]
10、判断请求类型
// 是否为 GET 请求
if ($request->isGet()) echo "当前为 GET 请求";
// 是否为 POST 请求
if ($request->isPost()) echo "当前为 POST 请求";
// 是否为 PUT 请求
if ($request->isPut()) echo "当前为 PUT 请求";
// 是否为 DELETE 请求
if ($request->isDelete()) echo "当前为 DELETE 请求";
// 是否为 Ajax 请求
if ($request->isAjax()) echo "当前为 Ajax 请求";
// 是否为 Pjax 请求
if ($request->isPjax()) echo "当前为 Pjax 请求";
// 是否为手机访问
if ($request->isMobile()) echo "当前为手机访问";
// 是否为 HEAD 请求
if ($request->isHead()) echo "当前为 HEAD 请求";
// 是否为 Patch 请求
if ($request->isPatch()) echo "当前为 PATCH 请求";
// 是否为 OPTIONS 请求
if ($request->isOptions()) echo "当前为 OPTIONS 请求";
// 是否为 cli
if ($request->isCli()) echo "当前为 cli";
// 是否为 cgi
if ($request->isCgi()) echo "当前为 cgi";
request()->isGet();
11、模拟put、delete请求
使用:
<form action="" method="post" >
<input type="hidden" name ="_method" value="PUT">
</form>
注意:
表单的请求类型必须是post
需要设置隐藏域传递模拟请求类型
12、伪静态
作用:满足更好的seo优化,为了网站的安全
修改伪静态:'url_html_suffix' => 'html'
获取伪静态后缀:$request->ext();
13、参数绑定
使用:public function bingding($name){
echo $name;
}
注意:参数绑定的个数少于地址栏参数的个数,
参数绑定的名字必须和地址栏的参数名一致,
参数绑定可以设置默认值
原文出处:https://jingyan.baidu.com/article/77b8dc7fa46dc46174eab637.html