`

PHP day4 请求request参数获取和input助手函数

 
阅读更多

1.    在apache 的   httpd.conf  中  更改

   LoadModule rewrite_module modules/mod_rewrite.so   放开注释

  apache的AllowOverride以及Options使用详解

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置
 
AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型. 

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override ,即 

复制代码代码如下:

<Directory /> 
AllowOverride None 
</Directory> 


在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 ".htaccess" 作用域的指令都允许出现在 .htaccess 文件中。 

而对于 URL rewrite 来说,至少需要把目录设置为 

复制代码代码如下:

< Directory /myblogroot/> 
AllowOverride FileInfo 
< /Directory> 


2.在要支持url rewirte的目录启用 Options FollowSymLinks和AllowOverride All 

复制代码代码如下:

Alias /php "c:/web/php/" 
<Directory "c:/web/php/"> 
Options Indexes FollowSymLinks 
AllowOverride All 
Order allow,deny 
Allow from all 
</Directory> 


这样通过http://localhost:8080/php/访问时,/php/和其下面的子目录将支持url rewrite

1  AuthConfig  允许使用所有的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile  AuthGroupFile  AuthName AuthTypeAuthUserFile和Require

2  FileInfo    允许使用文件控制类型的指令。它们包括AddEncoding AddLanguage  AddType  DEfaultType ErrorDocument LanguagePriority

3  Indexes     允许使用目录控制类型的指令。它们包括AddDescription  AddIcon  AddIconByEncoding AddIconByType  DefaultIcon  DirectoryIndex  FancyIndexing  HeaderName  IndexIgnore  IndexOptions ReadmeName

4  Limit       允许使用权限控制指令。它们包括Allow Deny和Order

5  Options     允许使用控制目录特征的指令.他们包括Options 和XBitHack

Options

1  All         准许以下除MultiViews以外所有功能

2  MultiViews  允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用

3  Indexes     若该目录下无index文件,则准许显示该目录下的文件以供选择

4  IncludesNOEXEC  准许SSI,但不可使用#exec和#include功能

5  Includes    准许SSI

6  FollowSymLinks  在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>;标记内设置,该选项会被忽略

7  SymLinksIfOwnerMatch  在该目录中仅仅跟踪本站点内的链接

8  ExecCGI     在该目录下准许使用CGI

2.  request   -->

$request->param();  会将 get  和 post 请求参数合并,一起获取到,注意使用提取自己需要使用的参数

tp5.0用$rquest->param()获取传递过来的参数,如果参数有重复的情况会覆盖,覆盖的规则如下:pathinfo参数会覆盖post中的参数,post中的参数会覆盖get中的参数

 public function index(Request $request)
    {
        echo 'admin Index index';

        # 获取浏览器输入框的值
        dump($request->domain());
        dump($request->pathinfo());
        dump($request->path());

        #请求的类型
        dump($request->method());
        dump($request->isGet());
        dump($request->isPost());
        dump($request->isAjax());

        #请求的参数
        dump($request->get());
        dump($request->param());
        dump($request->post());
        #session("akey","bvalue");
        dump($request->session());
        #cookie('email','123465@gmail.com');
        dump($request->cookie());

        #获取
        dump($request->param('type'));
        dump($request->cookie('email'));

        #获取模块 控制器 操作
        dump($request->module());
        dump($request->controller());
        dump($request->action());

        dump($request->url());
        dump($request->baseUrl());
    }

 

3.   input 助手函数的理解

  例如   input('post.')    相当于  $request->post();

            input('get.')    相当于  $request->get();

           input('id')   相当于 $request->param(‘id’);

此时就要注意,param会合并get和post  ,若请求中

get  : id=11   。。。 post  : id=122   。。。 则  input('id' ) 得到122

 

    function input($key = '', $default = null, $filter = '')
    {
        if (0 === strpos($key, '?')) {
            $key = substr($key, 1);
            $has = true;
        }
        if ($pos = strpos($key, '.')) {
            // 指定参数来源
            list($method, $key) = explode('.', $key, 2);
            if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete', 'param', 'request', 'session', 'cookie', 'server', 'env', 'path', 'file'])) {
                $key    = $method . '.' . $key;
                $method = 'param';
            }
        } else {
            // 默认为自动判断
            $method = 'param';
        }
        if (isset($has)) {
            return request()->has($key, $method, $default);
        } else {
            return request()->$method($key, $default, $filter);
        }
    }
}

 4. 在phpstrom中 敲完doc后按Tab键   快速HTML模板

 

5 tp5 的 view

 public function index()
    {
        # 默认模块的地址  app/index/view/index/index.html
        # (upload)          app/index/view/index/upload.html
        # public/upload   app/index/view/public/upload.html
        # ./123.html  因为tp是单入口文件,此时找到的是与index.php 同级的 123.html
        # ./ 开头 找到入口文件同级开始的模板文件
//   1.使用view助手函数跳转
//     return view('index',[
//            'email' =>  '123456@gmail.com'
//        ],[
//            'STATIC'=>'将页面所有STATIC替换成当前值的替换内容'
//        ]);
//   2.将当前类继承Controller (推荐使用这种)
//     使用fetch()方法
        //还可以用 $this->assign() 来传递遍历
        $this->assign('assign','assign传递的内容');
//        return $this->fetch('index',[
//           'email' =>  '123456@gmail.com'
//        ],[
//            'STATIC'=>'将页面所有STATIC替换成当前值的替换内容'
//        ]);
//   3. $->display()
         return $this->display('这是{$email}一个字符串',[
             'email'=> '132465@gmail.com'
         ]);
    }


    // 如果使用 fetch()方法是使用HTML文件来构建我们的模板,
    // 使用display(),直接传递字符串,来构建模板。

 

 6.   fetch()

1. $this->fetch();
1) 建立模板文件
   -- 建立模板文件 D:\tp5\application\index\view\test_fetch.html
2) 建立渲染测试控制器文件
   -- 建立模板测试文件D:\tp5\application\index\controller\Viewtest.php
      输出如下内容:
<?php
namespace app\index\controller;
use think\Controller;
class Viewtest extends Controller
{

    public function test_fetch(){
        return $this -> fetch();
    }

}
    发现跳到 方法名的 同名模板
此时fetch() 跳转到 view\test_fetch.html,

 

 

分享到:
评论

相关推荐

    SAP HR几个常用函数及宏

    - 当需要创建或更新某个对象时,首先通过此函数获取其唯一的标识符,以便进行更精确的操作。 - 在进行批量操作时,通过此函数可以有效地管理各个对象的标识符,避免重复或遗漏的情况发生。 #### 6. HR_HCP_READ_...

    常用函数速查(asp)

    userInput = Request.Form("dateInput") Dim dateOnly dateOnly = DateValue(userInput) ``` 在上述代码中,`userInput`可能包含一个带有时间的日期字符串,但`dateOnly`只会包含日期部分,不包括时间。 除了`Date...

    DAY16. 轮询与中断作业

    而中断则涉及到中断处理程序的注册,这通常在内核模块或驱动程序中完成,使用`request_irq()`函数请求特定中断,并定义中断处理函数。 在"KEY_POLLING_LED"这个示例项目中,我们可能有一个主循环负责轮询按键状态,...

    ZendFramework中文文档

    获取和控制插件 7.10.5. 包含在标准发行包中的插件 7.10.5.1. 动作堆栈 7.10.5.2. Zend_Controller_Plugin_ErrorHandler 7.10.5.2.1. 使用 ErrorHandler 作为一个 404 处理器(handler) 7.10.5.2.2. 处理以前...

    day07_file_upload.zip

    - **Python**:Django框架使用`request.FILES`来访问上传的文件,Flask框架则可以借助`flask.Request`对象的`files`属性。 5. **安全性考虑**: - **验证文件类型**:限制可接受的文件类型可以防止恶意文件上传,...

    通过Linux系统调用对设备文件进行操作

    文章将从理论基础出发,介绍Linux设备文件的基本概念、系统调用机制以及如何通过ioctl函数获取系统当前的时间日期信息。 ### Linux 设备文件概述 在Linux操作系统中,所有硬件设备都被抽象成文件的形式,即设备...

    Web文件的上传与下载源码

    Python的Django或Flask框架也有类似的处理方法,如Django的`request.FILES`和Flask的`request.files`。 接下来,文件下载的实现。在Web应用中,用户通常点击一个链接或按钮来触发文件下载。前端可以通过设置`&lt;a&gt;`...

    django的登录注册系统的示例代码

    - **Ticket系统**:在登录成功后,为用户生成一个ticket并存入浏览器Cookies和数据库中,用于后续请求的验证,保证了用户的登录状态。 - **数据验证**:在注册时需要验证用户提交的数据是否符合要求,例如用户名是否...

    在表单中动态生成日历

    在表单提交时,JSP可以解析请求参数,进行必要的业务逻辑处理,如日期范围检查,然后返回响应。 ```jsp SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date selectedDate = formatter....

    java面试题

    - **getParameter()**:获取请求参数。 - **getAttribute()**:获取请求范围内的属性。 ##### 11. jsp有哪些内置对象?作用分别是什么?分别有什么方法? - **out**:用于输出。 - **request**:获取客户端请求信息...

    asp中可用的日期控件

    ASP脚本接收到日期后,可以使用内置的日期函数,如`Date()`、`Month()`和`Day()`,对日期进行操作和计算。例如: ```vbscript Dim selectedDate selectedDate = Request.Form("datepicker") ' 假设日期是通过POST...

    ASP 编程中 20 个非常有用的例子

    &lt;input name='&lt;%= item %&gt;' type='hidden' value='(Request.Form(item)) %&gt;' /&gt; ``` ### 10. 在ASP中弹出警告框(MsgBox) 由于ASP在服务器端运行,无法直接弹出对话框,但可以通过JavaScript实现类似功能: ```...

    动易博客日历插件(20081212)

    4、自定义动态页面和动态函数标签代码如下: 4.1、自定义函数标签:{$MY_日期搜索({$pageinput(0)})} 参数说明:查询日期 查询语句:select ArticleID,Title,Author,Hits,UpdateTime,Content from PE_...

    Python实现股市信息下载的方法

    接着根据用户输入的股票代码构造 URL,并调用 `getURL()` 函数获取数据。最后,将获取到的数据按照逗号分隔符进行分割,并调用 `printInfo()` 函数输出结果。 ```python # 获取用户输入的股票代码 stockSymbol = ...

    JavaWeb总结

    要显示这些动态数据,需要通过Ajax异步请求从Servlet获取JSON数据,然后使用JavaScript(如jQuery)更新DOM元素。例如,设置一个链接的href属性: HTML: ```javascript $("#link").attr("href", ...

    在Python中使用HTML模版的教程

    例如,在Flask框架中,通过装饰器定义了处理不同URL的函数,这些函数作为控制器,处理用户请求并返回响应。当需要展示HTML页面时,控制器会调用模板渲染函数render_template,它加载对应的HTML模板文件,将模型中的...

    ASP.NET常用代码

    /// 格式后的异常信息字符串,包括异常内容和跟踪堆栈. /// /// public static String FormatException(Exception ex, String catchInfo) { StringBuilder strBuilder = new StringBuilder(); if (catchInfo != ...

Global site tag (gtag.js) - Google Analytics