入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

thinkphp5.0学习(六): 获取请求类和URL基本信息

创建时间:2017-10-30 投稿人: 浏览次数:854

一、系统类(thinkphplibrary hink)

Config
Controller
Env
Route
Url
View
Request

二、系统方法(thinkphphelper.php)

  • dump();格式化输出
  • controller();调用控制器
  • action();调用方法
  • config();读取和设置配置文件
  • url();生成url地址
  • view();加载页面
  • request();实例化Request类

三、如何获取请求类

1.系统方法

$request=request();

2.系统Request类

use thinkRequest;
//因为Request=Request类属于单例模式,所以不能直接new
$request=Request::instance();
dump($request);

3.系统Request类

use thinkRequest;
function index(Request $request)
{
    dump($request);
}

四.获取用户请求信息

// 获取url请求
public function getUrl(Request $request){
    // 1.获取域名
    dump($request->domain());
    // 2.获取url地址 除域名以外
    dump($request->url());
    // 3.获取入口文件
    dump($request->baseFile());
    // 4.获取PathInfo路径
    dump($request->pathinfo());
    // 5.获取pathInfo路径 无后缀
    dump($request->path());
    // 6.url地址伪静态后缀
    dump($request->ext());
}

伪静态就是将路径伪装成静态页面,让搜索引擎更好收录网站,方式别人知道网站真实开发语言

五.获取请求模块控制器方法

1.控制器

// 当前控制器
dump($request->controller());

2.方法

// 当前方法
dump($request->action());

3.模块

// 当前模块
dump($request->module());

六.获取请求相关类型

1.请求类型

    $request->mothod();

2.请求资源类型

    $request->type();

3.访问地址

    $request->ip();

4.是否ajax请求

    $request->isAjax();

5.获取所有地址栏参数

    $request->param();

6.获取特定字段

    $request->only(["name","age"]);

7.剔除字段

    $request->except(["name","age"]);

七.获取地址栏变量

1.判断是否存在

    // 判断get类型中id是否存在,存在返回true
    dump($request->has("id","get"));
    dump(input("?get.id"));

2.读取参数

    // 读取参数
    dump($request->get("id"));
    dump(input("get.id"));
    // 读取所有参数
    dump($request->get());
    dump(input("get."));

3.可以读取数据类型

    get,post,delete,put,seeion,cookie,server,env,file等

    $request->get();
    $request->post();
    $request->put();
    $request->delete();
    $request->request();
    $request->session();
    $request->cookie();

八.变量过滤

1.作用

    防止恶意输入、防止sql注入

2.使用

1.全部数据进行过滤

    // 过滤一次
    // $request->filter("htmlspecialchars");
    // $request->filter("strip_tags");
    // 多重方法过滤
    $request->filter(["htmlspecialchars","strip_tags"]); 

2.针对变量过滤

    // 设置单个变量过滤
    $request->get("name","","htmlspecialchars");

3.密码过滤之后加密

    $request->get("name","","htmlspecialchars,md5");

九.变量的排除和获取

1.获取

    $request->only("name");
    $request->only("name","get");
    $request->only(["name","pass"],"get");

2.排除

    $request->except(["name","pass"],get);
    $request->except(["name","pass"]);
    $request->except("name");

十.变量修饰符

1.修饰变量的类型

    s 字符串
    d 整型
    b 布尔
    a 数组
    f 浮点型

2.使用

    dump(input("get.id/d"));/制转换整型
    dump(input("get.name/s"));/制转换成字符串

    dump($request->get("id/d"));

十一.更改变量

//地址栏访问http://www.tp.com/index/index/xiugai?id=5
// 修改变量
public function xiugai(Request $request){
    dump($request->get("id"));           //5
    dump($request->get(["id"=>20]));     //数组
    dump($request->get("id"));           //20
}

十二.请求类型判断

1.系统类

dump($request->isGet());
dump($request->isPost());
dump($request->isMobile());

2.助手函数

dump(request()->isGet());
dump(request()->isPost());
dump(request()->isMobile());

十三.模拟put、delete请求

1.使用

<form action="{:url("leixing")}" method="post">
    <p>
        User:<input type="text" name="name">
        <input type="hidden" name="_method" value="put">
    </p>
    <p>Pass:<input type="password" name="pass"></p>
    <p><input type="submit" value="提交"></p>
</form>

2.注意

1.表单类型必需是post
2.需要设置隐藏域传递模拟的请求类型

十四.模拟ajax请求和Pjax请求

1.模拟ajax请求

http://www.tp.com/index/index/leixing.html?_ajax=10

2.模拟Pjax请求

http://www.tp.com/index/index/leixing.html?_pjax=10

十五.伪静态

1.作用

  • url伪静态通常是为了满足更好的SEO效果
  • 为了网站的安全

2.如何使用

在配置文件中进行修改

// URL伪静态后缀
"url_html_suffix"        => "html",

3.获取当前的伪静态后缀

$request->ext();

十六.参数绑定

1.使用

// 参数绑定
public function bangding($id,$names){
    var_dump($id);
    var_dump($names);
}
//http://www.tp.com/index/index/bangding?id=1&names=ttt
//http://www.tp.com/index/index/bangding/id/1/names/ttt

2.注意

1.参数绑定的格式,少于地址栏参数的个数
2.参数绑定的名字,必须和地址栏参数名字一一对应
3.参数绑定可以设置默认值

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。