Yii CHttpRequest 處理請求

2021-06-23 01:15:05 字數 2058 閱讀 1353

————在yii中我們可以使用php超級全域性變數像$_server,$_get或者$_post來直接響應請求資料,但是是更好的方法是使用yii強大的 chttprequest 類,它解決了在各種不同伺服器中的不一致性,管理cookies,提供一些額外的安全性和一套給力的物件導向方法。

—下面是 chttprequest 對 url 操作的一些方法。在下面的**中,我們用粗體字樣標記了返回的部分。

geturl

test/index?var=val

gethostinfo

/test/index?var=val

getpathinfo

test/index?var=val

getrequesturi

test/index?var=val

getquerystring

test/index?var=val

—chttprequest確保請求型別的方法

——getispostrequest——返回是否這是乙個post請求。

——getisajaxrequest——返回這是否是乙個ajax請求。

——getrequesttype——返回請求型別,比如 get  post head put  delete.。

例如,我們可以使用 getisajaxrequest 來根據請求型別響應不同的內容:

class testcontroller extends ccontroller

}

在上面的**中,如果請求是通過ajax,我們就渲染了乙個沒有布局的檢視。

—儘管php為post和get都提供了超全域性變數,但 chttprequest 的對應方法則允許我們省略一些額外的檢查:

——getparam——返回指定get或post引數值。(public mixedgetparam(string $name, mixed $defaultvalue=null)

——getquery——返回指定get引數值。(getquery(string $name, mixed $defaultvalue=null)

——getpost——返回指定post引數值。(string $name, mixed $defaultvalue=null)

上面的 defaultvalue 在預設引數值不存在時生效。下面是個簡單的例子:

class testcontroller extends ccontroller

}

——延伸一下:sendfile()方法。向使用者傳送乙個檔案。

class testcontroller extends ccontroller

}

——最後要看一下 getcookies 方法。它返回乙個ccookiecollection類例項,這個例項允許我們處理 cookies。因為ccookiecollection繼承自cmap,所以我們可以使用一些原始的php方法:

class testcontroller extends ccontroller

}}

class cookie

public static function set($name, $value, $expiration=0)

}

在你把這份**放到 protected/components/cookie.php 後,我們就可以這樣做:

class testcontroller extends ccontroller

}

Servlet生命週期(Tomcat處理請求中)

從tomcat處理使用者請求,我們可以清晰的看到容器servlet的生命週期管理過程 1 客戶發出請求 web 伺服器 到web容器tomcat 2 tomcat主線程對 來使用者的請求做出響應建立兩個物件 httpservletrequest和httpservletresponse 3 從請求中的...

請不要哭泣

朋友,請不要哭泣,即使此刻你很受傷。傷害你的,不需要太多力量,而是他的一句話。你還是找乙個更好的人過日子吧 我知道這句話是怎樣把你的心靈震碎。而這殘忍的話語竟然出自自己深愛的男人之口。我知道你此刻有多痛心,曾經多收風風雨雨都走過了,如今卻要別離,別離,只因這句話刺耳的話。你憔悴的臉龐,劃過道道淚痕,...

請不要折騰

下午看電視,吉林台老梁說事 不記得什麼節目,就是老梁說說自己的看法 講的是高校擴招的利弊。比較喜歡他的節目,一口東北腔,相貌憨厚,評說切中要害。其中提到一點,我很有體會 很多措施在實施時,基礎可能都不夠牢靠,強行上馬,屬於 折騰 在實施後,都要有個階段償還以前欠下的 債務 只有經過這個較長時期的修養...