1. 在apache 的 httpd.conf 中 更改
LoadModule rewrite_module modules/mod_rewrite.so 放开注释
再
apache的AllowOverride以及Options使用详解
通常利用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,
相关推荐
- 当需要创建或更新某个对象时,首先通过此函数获取其唯一的标识符,以便进行更精确的操作。 - 在进行批量操作时,通过此函数可以有效地管理各个对象的标识符,避免重复或遗漏的情况发生。 #### 6. HR_HCP_READ_...
userInput = Request.Form("dateInput") Dim dateOnly dateOnly = DateValue(userInput) ``` 在上述代码中,`userInput`可能包含一个带有时间的日期字符串,但`dateOnly`只会包含日期部分,不包括时间。 除了`Date...
而中断则涉及到中断处理程序的注册,这通常在内核模块或驱动程序中完成,使用`request_irq()`函数请求特定中断,并定义中断处理函数。 在"KEY_POLLING_LED"这个示例项目中,我们可能有一个主循环负责轮询按键状态,...
获取和控制插件 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. 处理以前...
- **Python**:Django框架使用`request.FILES`来访问上传的文件,Flask框架则可以借助`flask.Request`对象的`files`属性。 5. **安全性考虑**: - **验证文件类型**:限制可接受的文件类型可以防止恶意文件上传,...
文章将从理论基础出发,介绍Linux设备文件的基本概念、系统调用机制以及如何通过ioctl函数获取系统当前的时间日期信息。 ### Linux 设备文件概述 在Linux操作系统中,所有硬件设备都被抽象成文件的形式,即设备...
Python的Django或Flask框架也有类似的处理方法,如Django的`request.FILES`和Flask的`request.files`。 接下来,文件下载的实现。在Web应用中,用户通常点击一个链接或按钮来触发文件下载。前端可以通过设置`<a>`...
- **Ticket系统**:在登录成功后,为用户生成一个ticket并存入浏览器Cookies和数据库中,用于后续请求的验证,保证了用户的登录状态。 - **数据验证**:在注册时需要验证用户提交的数据是否符合要求,例如用户名是否...
在表单提交时,JSP可以解析请求参数,进行必要的业务逻辑处理,如日期范围检查,然后返回响应。 ```jsp SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date selectedDate = formatter....
- **getParameter()**:获取请求参数。 - **getAttribute()**:获取请求范围内的属性。 ##### 11. jsp有哪些内置对象?作用分别是什么?分别有什么方法? - **out**:用于输出。 - **request**:获取客户端请求信息...
ASP脚本接收到日期后,可以使用内置的日期函数,如`Date()`、`Month()`和`Day()`,对日期进行操作和计算。例如: ```vbscript Dim selectedDate selectedDate = Request.Form("datepicker") ' 假设日期是通过POST...
<input name='<%= item %>' type='hidden' value='(Request.Form(item)) %>' /> ``` ### 10. 在ASP中弹出警告框(MsgBox) 由于ASP在服务器端运行,无法直接弹出对话框,但可以通过JavaScript实现类似功能: ```...
4、自定义动态页面和动态函数标签代码如下: 4.1、自定义函数标签:{$MY_日期搜索({$pageinput(0)})} 参数说明:查询日期 查询语句:select ArticleID,Title,Author,Hits,UpdateTime,Content from PE_...
接着根据用户输入的股票代码构造 URL,并调用 `getURL()` 函数获取数据。最后,将获取到的数据按照逗号分隔符进行分割,并调用 `printInfo()` 函数输出结果。 ```python # 获取用户输入的股票代码 stockSymbol = ...
要显示这些动态数据,需要通过Ajax异步请求从Servlet获取JSON数据,然后使用JavaScript(如jQuery)更新DOM元素。例如,设置一个链接的href属性: HTML: ```javascript $("#link").attr("href", ...
例如,在Flask框架中,通过装饰器定义了处理不同URL的函数,这些函数作为控制器,处理用户请求并返回响应。当需要展示HTML页面时,控制器会调用模板渲染函数render_template,它加载对应的HTML模板文件,将模型中的...
/// 格式后的异常信息字符串,包括异常内容和跟踪堆栈. /// /// public static String FormatException(Exception ex, String catchInfo) { StringBuilder strBuilder = new StringBuilder(); if (catchInfo != ...