12 06 2020
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://blog.csdn.net/odelia145/article/details/87258770

延伸阅读
  1. 用threejs展示stl格式3D模型
  2. php字符串截取