大寫字母的用法
- A函數用於實例化控制器
- 格式:[資源://][模組/]控制器A($name,$layer='',$level ='')
@param string $name 资源地址 @param string $layer 控制层名称 @param integer $level 控制器层次 @return Controller|false登入後複製
B執行某個行為B($name,$tag='',&$params=NULL)
@param string $name 行为名称 @param string $tag 标签名称(行为类无需传入) @param Mixed $params传入的参数 @return void登入後複製
這是隨著行為應運而生的新生函數,可以執行某個行為,例如B('app_begin');
就是在專案開始之前,執行這個行為定義的所有函數,支援2個參數,第二個參數支援需要接受一個陣列
例如
B('app_begin',array("name"=>"tdweb","time"=>time()));登入後複製
#C 讀取及設定組態參數C($name= null,$value=null,$default=null)
@paramstring|array $name 配置变量 @param mixed $value 配置值 @param mixed $default 默认值 @return mixed登入後複製
取得值:
- 取得所有設定:C(); 不傳遞任何參數,傳回一個包含所有設定的陣列。
- 取得指定配置:C('URL_MODEL') 這樣就能得到URL_MODEL的設定資訊
- 取得指定二維陣列配置:C("array.name"),這樣就傳回數組array下的key為name所對應的值
設定值:
- 為二維陣列賦值C("array.name", "value"),原理同上(取得array.name的值),後邊的value是值
- 批次賦值:
$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true"); C($test); 这样直接将数组里的值赋值了登入後複製判斷是否賦值:
C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true登入後複製需要說明的是,這裡雖然更改了配置的值,但是僅僅是這個頁面做了更改,到下個頁面就不起作用了,
如果想改就永久更改,那麼需要配合F函數,將設定檔寫入config. PHP才行。
D函數用於實例化模型類別格式[資源://][模組/]模型D($name='',$ layer='')
@param string $name 资源地址 @param string $layer 模型层名称 @return Model登入後複製D函數有2個優點:
- 一是如果之前實例化過這個Model,那麼就不再實例化了,省資源;
- 二是方便除錯,如果不存在這個Model,會拋出TP異常,非常人性化。
如果訪問本項目的Model直接D("Model名稱");就可以了,如果打算跨項目訪問,就使用D("Model名稱","項目名稱");
E拋出例外處理E($msg, $code=0)
@param string $msg异常消息 @param integer $code 异常代码默认为0 @return void登入後複製
F快速檔案資料讀取與儲存針對簡單型別資料字串、陣列F($name, $value='',$path=DATA_PATH)
@param string $name 缓存名称 @param mixed $value 缓存值 @param string $path 缓存路径 @return mixed登入後複製
G記錄和統計時間(微秒)和記憶體使用情況
G($start,$end='',$dec=4)登入後複製使用方法:
G('begin'); // 记录开始标记位 // ... 区间运行代码 G('end'); // 记录结束标签位 echo G('begin','end',6); //统计区间运行时间精确到小数后6位 echo G('begin','end','m'); // 统计区间内存使用情况 如果end标记位没有定义,则会自动以当前作为标记位登入後複製其中統計記憶體使用需要MEMORY_LIMIT_ON 常數為true才有效
@param string $start 开始标签 @param string $end 结束标签 @paraminteger|string $dec小数位或者m @return mixed登入後複製
#I取得輸入參數支援過濾和預設值
I($name,$default='',$filter=null)登入後複製使用方法:
I('id',0); //获取id参数自动判断get或者post I('post.name','','htmlspecialchar s'); //获取$_POST['name'] I('get.'); //获取$_GET登入後複製
#L()取得與設定語言定義(不區分大小寫)
L($name=null,$value=null)登入後複製@paramstring|array $name 语言变量 @param mixed $value 语言值或者变量 @return mixed登入後複製語言定義函數,L("intro")取得定義成intro的語言,l("intro" ,"介紹")為intro賦值
M函式用來實例化一個沒有模型檔的Model
M($name='',$tablePrefix='',$connection='')登入後複製@param string $name Model名称支持指定基础模型例如MongoModel:User @param string $tablePrefix表前缀 @param mixed $connection 数据库连接信息 @return Model登入後複製
N設定與取得統計資料
N($key,$step=0,$save=false)登入後複製使用方法:
N('db',1); // 记录数据库操作次数 N('read',1); // 记录读取次数 echo N('db'); // 获取当前页面数据库的所有操作次数 echo N('read'); // 获取当前页面读取次数登入後複製@param string $key 标识位置 @param integer $step 步进值 @return mixed登入後複製
#R遠端呼叫控制器的操作方法URL 參數格式[資源://] [模組/]控制器/操作
R($url,$vars=array(),$layer='')登入後複製@param string $url调用地址 @paramstring|array $vars调用参数支持字符串和数组 @param string $layer 要调用的控制层名称 @return mixed登入後複製
T取得模版檔案格式資源://模組@ 主題/控制器/操作
T($template='',$layer='')登入後複製@param string $name 模版资源地址 @param string $layer 视图层(目录)名称 @return string登入後複製
#U()URL組裝支援不同URL模式
U($url='',$vars='',$suffix=true,$domain=false)登入後複製@param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...' @paramstring|array $vars传入的参数,支持数组和字符串 @param string $suffix 伪静态后缀,默认为true表示获取配置值 @paramboolean $domain 是否显示域名 @return string登入後複製
#使用方法:
跨项目访问:
U("appname://Other/otherMethod");登入後複製使用路由访问:
U("appName://routeName@moduleName/actionName?params");登入後複製另外,如果想直接跳转,那么就在第二个参数写1
U("/nowMethod",1)登入後複製这样就直接调转到指定URL了
W渲染输出Widget
W($name,$data=array())登入後複製@param string $name Widget名称 @param array $data 传入的参数 @return void登入後複製
S缓存管理
S($name,$value='',$options=null)登入後複製@param mixed $name 缓存名称,如果为数组表示进行缓存设置 @param mixed $value 缓存值 @param mixed $options 缓存参数 @return mixed登入後複製
当网站不涉及复杂的用户交互时,可以对用户所有提交的文本进行htmlspecialchars函数处理。
例子
M('Member')->save(array('content'=>I('post.content')));
- cookie的信息一但被别人通过XSS攻击获取后也一样等同于把自己的帐号密码给了别人。
- 对cookie进行IP绑定,(当然也可以获取用户客户端更多的其它信息进行同时绑定)可以根据用户的IP来判断这个cookie是不是来原始授权用户。
示例
$auto=I('post.auto');//用户设置了自动登录 if(!empty($auto)){ cookie('auto',encrypt(serialize($data)));//将登录信息保存到cookie,其中$data里含有加密后的帐号,密码,和用户的IP,这里的cookie已在全局中设置过期日期为一周 }
if (!is_login()) {//是否未登录状态? $auth=cookie('auto'); if(!empty($auth)){//是否未有自动登录cookie? $data=unserialize(decrypt($auth)); if(!empty($data) && !empty($data['username']) && !empty($data['password']) && !empty($data['last_login_ip'])){ $user=M('Member')->where(array('username'=>$data['username'],'password'=>$data['password']))->find(); if(!empty($user['id'])&&($user['last_login_ip']==get_client_ip())){//cookie帐号密码是否有效?//IP来源是否相同? login_session($user['id'], $user['username'], $data['last_login_ip']);//用户自动登录成功 } } } }
- 优点:大多数场景下可使被XSS攻击盗取的cookie失效。
- 缺点:由于IP存在多台电脑共用的可能,对绑定做不到十分精细
可以保证cookie只在http请求中被传输,而不被页面中的脚本获取,现市面上绝大多数浏览器已经支持。
<iframe src="http://alibaba.com" sandbox>
为iframe的增加的sandbox属性,可以防止不信任的Web页面执行某些操作.相信这个方法以后会被广泛使用。
以上是tp 框架開發整理總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!