這篇文章主要介紹了YII使用url元件美化管理的方法,結合實例形式較為詳細的分析了urlManager元件的具體功能及相關使用技巧,需要的朋友可以參考下
本文實例講述了YII使用url元件美化管理的方法。分享給大家供大家參考,具體如下:
urlManager元件
yii的官方文件對此的解釋如下:
urlSuffix 此規則使用的url後綴,預設使用CurlManger::urlSuffix,值為null。例如可以將此設定為.html,讓url看起來「像」是一個靜態頁面。
caseSensitive 是否大小寫敏感,預設使用CUrlManager::caseSensitive,值為null。
defaultParams 此規則使用的預設get參數。當使用此規則來解析一個請求時,這個參數的值會被注入到$_GET參數中。
matchValue 當建立一個URL時,GET參數是否符合對應的子模式。預設使用CurlManager::matchValue,值為null。
如果該屬性為 false,那麼表示當路由和參數名稱符合給定的規則時,將以此來建立一個URL。
如果該屬性為true,那麼給定的參數值夜必須符合對應的參數子模式。
注意:將此屬性設為true會降低效能。
我們使用一些範例來解釋網址工作規則。我們假設我們的規則包含以下三個:
array( 'posts'=>'post/list', 'post/<id:\d+>'=>'post/read', 'post/<year:\d{4}>/<title>'=>'post/read', )
呼叫$this->createUrl('post/list')產生/index.php/posts 。第一個規則適用。
呼叫$this->createUrl('post/read',array('id'=>100))產生/index.php/post/100。第二個規則適用。
呼叫$this->createUrl('post/read',array('year'=>2008,'title'=>'a sample post'))產生/index.php/post /2008/a sample post。第三個規則適用。
呼叫$this->createUrl('post/read')產生/index.php/post/read。請注意,沒有規則適用。
總之,當使用createUrl產生網址,路線和傳遞給該方法的GET參數被用來決定哪些網址規則適用。如果關聯規則中的每個參數可以在GET參數找到的,將傳遞給createUrl ,如果路線的規則也符合路線參數,則規則將用來產生網址。
如果GET參數傳遞到createUrl是以上所要求的一項規則,其他參數將出現在查詢字串。例如,如果我們呼叫$this->createUrl('post/read',array('id'=>100,'year'=>2008)) ,我們將獲得/index.php/post/100? year=2008。為了使這些額外參數出現在路徑資訊的一部分,我們應該給規則附加/* 。因此,該規則post/
正如我們所提到的,URL規則的其他用途是解析請求網址。當然,這是URL生成的一個逆過程。例如, 當使用者請求/index.php/post/100 ,上面範例的第二個規則將適用來解析路線post/read和GET參數array('id'=>100) (可透過$_GET取得) 。
提示:此網址透過createurl方法所產生的是一個相對位址。為了得到一個絕對的url ,我們可以用前綴yii: :app()->hostInfo ,或呼叫createAbsoluteUrl 。
附註:使用的URL規則將降低應用的效能。這是因為當解析請求的URL ,[ CUrlManager ]嘗試使用每個規則來匹配它,直到某個規則可以適用。因此,高流量網站應用應盡量減少其使用的URL規則。
test.com/vthot 想產生test.com/vthot/
'urlSuffix'=>'/',
要更改URL格式,我們應該配置urlManager應用程式元件,以便createUrl可以自動切換到新格式和應用程式可以正確理解新的網址:
'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'urlSuffix'=>'.html', 'rules'=>array( 'posts'=>'post/list', 'post/<id:\d+>'=>array('post/show','urlSuffix'=>'.html'), 'post/<id:\d+>/<mid:\w+>'=>array('post/view','urlSuffix'=>'.xml'), ), ),
範例一
Rule程式碼
'posts'=>'post/list',
Action程式碼
echo $this->createAbsoluteUrl('post/list');
輸出
http://localhost/test/index.php/post
範例二
Rule程式碼
'post/<id:\d+>'=>array('post/show','urlSuffix'=>'.html'),
Action程式碼
echo $this->createAbsoluteUrl('post/show',array('id'=>998, 'name'=>'123'));
輸出
http://localhost/test/index.php/post/998.html?name=123
範例三
#Rule程式碼:
'post/<id:\d+>/<mid:\w+>'=>array('post/view','urlSuffix'=>'.xml'),
Action程式碼
echo $this->createAbsoluteUrl('post/view',array('id'=>998, 'mid'=>'tody'));
輸出
http://localhost/test/index.php/post/998/tody.xml
範例四
Rule程式碼
'http://<user:\w+>.vt.com/<_c:(look|seek)>'=>array('<_c>/host','urlSuffix'=>'.me'),
Action程式碼:
#echo $this->createAbsoluteUrl('look/host',array('user'=>'boy','mid'=>'ny-01')); echo ''; echo $this->createAbsoluteUrl('looks/host',array('user'=>'boy','mid'=>'ny-01'));
輸出
http://boy .vt.com/look.me?mid=ny-01
http://localhost/test/index.php/looks/host/user/boy/mid/ny-01
1) controller/Update/id/23
public function actionUpdate(){ $id = Yii::app()->request->getQuery('id') ; 经过处理的$_GET['id'] } //$id = Yii::app()->request->getPost('id'); 经过处理的$_POST['id'] //$id = Yii::app()->request->getParam('id'); //CHttpRequest更多
2)public function actionUpdate($id) 這種不支援多主鍵,會檢查一下到底GET裡面有沒有id,沒有id就直接不允許存取
'sayhello/<name>' => 'post/hello', name是PostController actionHello($name)的参数 'post/<alias:[-a-z]+>' => 'post/view', domain/post/e文小写 其中:前面的alias是PostController actionView($alias)的参数 '(posts|archive)/<order:(DESC|ASC)>' => 'post/index', domain/posts/DESC或domain/posts/ASC '(posts|archive)' => 'post/index', domain/posts或domain/archive 'tos' => array('website/page', 'defaultParams' => array('alias' =>'terms_of_service')),
When the URL is /tos, pass terms_of_service as the alias parameter value.
隐藏 index.php
还有一点,我们可以做进一步清理我们的网址,即在URL中藏匿index.php 入口脚本。这就要求我们配置Web服务器,以及urlManager应用程序元件。
1.add showScriptName=>false
2.add project/.htaccess
RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php
3.开启rewrite
简单的说,在main.php中简单设置urlManager,然后讲了3条规则,基本都覆盖到了。最后是隐藏index.php,请记住.htaccess位于index.php同级目录 ,而不是protected/目录。其他就简单了。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上是YII如何使用url元件美化管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。