来自用户可控的输入 —永远不要相信用户的输入

    变量/常量/函数/等 描述
    $_SERVER 包含 服务器信息 环境变量 用户传入的http头和uri路径等信息
    $_GET $HTTP_GET_VARS 包含 用户传入的URL参数
    $_POST$HTTP_POST_VARS 包含 用户传入的POST BODY的参数 (当 HTTP头中Content-Type 值为 application/x-www-form-urlencoded 或 multipart/form-data时才会被传入)
    $_FILES$HTTP_POST_FILES 包含 用户上传文件信息 文件内容 原文件名 临时文件名 大小 等信息
    $_COOKIE$HTTP_COOKIE_VARS 包含 用户传入的HTTP头中的Cookies kv值
    $_REQUEST 同时包含 $_GET $_POST $_COOKIE
    php://input$HTTP_RAW_POST_DATA 包含 用户POST请求中BODY 的完整数据 常见用法 file_get_contents(‘php://input’);
    apache_request_headers()getallheaders() 包含 用户传入的http头 (Apache ONLY)
    下方为PHP框架常见输入
    Request::instance()->get();input(‘get.’);input(‘变量类型.变量名/修饰符’)详见官方文档 获取用户传入的URL参数 可用过滤器和类型转换 THINKPHP框架5 例子:获取url参数中的id值 Request::instance()->get(‘id’); 调用时如不传入参数默认获取全部 Request::instance()->get(); input(‘get.id’); 调用时如传入get.则获取全部 input(‘get.’); input(‘get.id/d’);// 强制变量转换为整型 Request::instance()->get(‘name’,’’,’htmlspecialchars’); //过滤器 input(‘get.name/s’);// 强制转换变量为字符串 input(‘get.ids/a’);// 强制变量转换为数组 默认为/s
    Request::instance()->post();input(‘post.’); 获取用户传入的POST参数 THINKPHP框架5 例子:获取post请求body中的name值 Request::instance()->post(‘name’); input(‘post.name’); 同get
    Request::instance()-> param();input(‘param.’);input(‘’); 自动判断用户提交方法(POST GET PUT)获取参数 THINKPHP框架5 用法同get 除此之外 可直接调用input(‘’);获取全部参数 或使用 input(‘name’);获取单个参数 注:input方法默认获取param
    Request::instance()->request(); input(‘request.’); 用法同get 获取$_REQUEST 变量 THINKPHP框架5
    Request::instance()->server(); input(‘server.’); 用法同get 获取$_SERVER 变量THINKPHP框架5
    Request::instance()->cookie(); input(‘cookie.’); Cookie::get(‘name’); cookie(‘name’); 用法同get 获取$_COOKIE 变量THINKPHP框架5
    Request::instance()->header(); input(‘header.’); 用法同get 获取用户传入的HTTP头THINKPHP框架5
    Request::instance()->file(); 用法同get 获取$_FILES 变量THINKPHP框架5
    I(‘变量类型.变量名/修饰符’,[‘默认值’],[‘过滤方法或正则’]) 获取变量 THINKPHP框架3.* 例子 I(‘get.id’); I(‘get.’); 使用方法同input
    request(); 实例化request对象THINKPHP框架5 例$req=request();
    相当于$req=Request::instance()
    这种使用方法比较常见 还可以获取用户传入的请求信息 可将前面的Request::instance()直接替换成request() 例 request()->post();
    {$Request.变量类型.变量名} THINKPHP框架 在模板中获取参数
    路由传入值 (Action参数绑定)
    namespace Home\Controller;
    use Think\Controller;
    class BlogController extends Controller
    {
    public function read($id)
    { echo ‘id=’.$id; }
    public function archive($year=’2013’,$month=’01’)
    {echo ‘year=’.$year.’&month=’.$month;}}
    THINKPHP框架 (Action参数绑定)
    通过路由传入
    /index.php/Home/Blog/read/id/5 /index.php/Home/Blog/archive/year/2013/month/11 ?c=Blog&a=read&id=5
    ?c=Blog&a=archive&year=2013&month=11
    来自 <https://www.kancloud.cn/manual/thinkphp/1715>
    Request::instance() 其他用户变量 https://www.kancloud.cn/manual/thinkphp5/158834
    THINKPHP框架5 见官方文档 略
    $this->input->post() $this->input->get() $this->input->cookie() $this->input->server() $this->input->user_agent(); $this->input->request_headers(); $this->input->get_request_header(‘some-header’, TRUE); $this->input->ip_address(); $this->input->raw_input_stream; $this->input->input_stream(‘key’); (POST BODY) Codeigniter2/3框架 $this->input->input_stream(‘key’, TRUE); // XSS 过滤器开关 $this->input->cookie(‘some_cookie’); 3.官方文档
    [2.
    官方文档](https://codeigniter.org.cn/userguide2/libraries/input.html)
    文件上传 https://codeigniter.org.cn/userguide2/libraries/file_uploading.html
    https://codeigniter.org.cn/userguide3/libraries/file_uploading.html?highlight=%E6%96%87%E4%BB%B6#id5
    $request->getGet() $request->getPost() $request->getServer() $request->getCookie() $request->getPostGet()- 先 $POST, 后 $_GET $request->getGetPost()- 先 $_GET, 后 $_POST $request->getJSON(); $this->request->getFiles(); $this->request->getFile(‘123’); 获取post body json数据_ $request->getRawInput() 同php://input Codeigniter4框架 https://codeigniter.org.cn/user_guide/incoming/incomingrequest.html?highlight=post#id4
    $this->request->getQuery(‘page’); (GET参数) $this->request->getQueryParams(); 全部get参数 $this->request->getData(‘title’); (POST 参数) $this->request->getParsedBody(); 全部post参数 $this->request->getUploadedFile(‘attachment’); $jsonData=$this->request->input(‘json_decode’); $request->getUploadedFiles(); $data=$this->request->input(‘Cake\Utility\Xml::build’,[‘return’=>’domdocument’]); $userAgent=$this->request->getHeaderLine(‘User-Agent’);// Get an array of all values.$acceptHeader=$this->request->getHeader(‘Accept’); $this->request->getCookie(‘remember_me’); Cakephp 4.* 框架 文件上传 https://book.cakephp.org/4/en/controllers/request-response.html#file-uploads
    $request= Yii::$app->request;
    $get= $request->get(); // 等价于: $get = $GET;
    $id= $request->get(‘id’); // 等价于: $id = isset($GET[‘id’]) ? $GET[‘id’] : null;
    $id= $request->get(‘id’, 1); // 等价于: $id = isset($GET[‘id’]) ? $GET[‘id’] : 1;
    $post= $request->post(); // 等价于: $post = $POST;
    $name= $request->post(‘name’); // 等价于: $name = isset($POST[‘name’]) ? $_POST[‘name’] : null;
    $name= $request->post(‘name’, ‘’); // 等价于: $name = isset($_POST[‘name’]) ? $_POST[‘name’] : ‘’;
    $request= Yii::$app->request; // 返回所有参数
    $params= $request->bodyParams; // 返回参数 “id”
    $param= $request->getBodyParam(‘id’); // $headers 是一个 yii\web\HeaderCollection 对象
    $headers= Yii::$app->request->headers; // 返回 Accept header 值
    $accept= $headers->get(‘Accept’); if($headers->has(‘User-Agent’)) { /
    这是一个 User-Agent 头 /}
    $userHost= Yii::$app->request->userHost; $userIP= Yii::$app->request->userIP;
    _[_https://www.yiichina.com/doc/guide/2.0/runtime-requests_](https://www.yiichina.com/doc/guide/2.0/runtime-requests)__
    Yii 2.0框架
    $name=$request->input(‘name’); 所有请求
    $name=$request->query(‘name’); get url参数
    $query=$request->query(); $value=$request->cookie(‘name’); Use Illuminate\Support\Facades\Cookie;
    $value=Cookie::get(‘name’); $file=$request->file(‘photo’); $file=$request->photo; <https://learnku.com/docs/laravel/8.x/requests/9369>
    Laravel 框架