2012-07-22 24 views
0

我不知道什麼Agavi的,有可能在這個很多錯誤..

我想建立一個cookie:的Agavi設置cookie的

$this->getResponse()->setCookie(ID, 'ID=2342&ClickBannerID=634&SubID=&ClickDateTime=' + time(), mixed $lifetime = time() * 2, string $path = '/', string $domain = 'mydomain', bool $secure = null) 


我得到: 解析錯誤:語法錯誤,意想不到的T_VARIABLE

它的形式:http://www.agavi.org/apidocs/index.html 我究竟做錯了

+0

哇我真的不知道 – 2012-07-22 11:47:05

回答

0

你混其運行ED功能來聲明

$this->getResponse()->setCookie('your-cookie-id','ID=2342&ClickBannerID=634&SubID=&ClickDateTime=' . time(), time() * 2, '/', 
'mydomain', null) 

和OCUS在評論說 - 大概聘請PHP開發人員

+0

感謝耶,現在我越來越:解析錯誤:語法錯誤,意外「}」在該行.. 和我的PHP開發人員正在休假的接下來的2周,所以我想我會請求幫助1行.. – 2012-07-22 12:41:32

+0

加;在這行結尾 – 2012-07-22 14:28:24

+0

如果這不會幫助 - 顯示下一行 – 2012-07-22 14:28:40

2

一般於Agavi的你通過其setCookie方法設置AgaviWebResponse物件上AgaviView餅乾方法。該方法的簽名如下:

public function setCookie($name, $value, $lifetime = null, $path = null, $domain = null, $secure = null, $httponly = null) 

這意味着,你可以使用下面的語法設定一個簡單的cookie:

$this->getResponse()->setCookie('cookieName', $cookieValue); 

您可以使用PHP's strtotime function來設置易於閱讀的一生如果您想要一個僅在一定時間內有效的Cookie,則Cookie:

$this->getResponse()->setCookie('cookieName', $cookieValue, '+14 days'); 

你的問題指出,你可能需要使用額外的參數(域名等)爲好。讀你的問題,也有可能,要設置多個cookie,而不是一個由含有IDClickBannerId等字符串,但只有你和你的應用程序(或您的開發),可以告訴大家。

請注意,您可以爲每個cookie設置附加參數,或者在app/config/factories中爲您的應用程序配置一些理智的默認值。XML每環境(通常爲方面 _web_)文件保存在您的意見中鍵入:

<response class="AgaviWebResponse"> 
    <ae:parameters name="cookie_httponly">true</ae:parameters> 
</response> 

有效的參數名稱是:

  • cookie_lifetime(以秒爲一生)
  • cookie_path(服務器上cookie應該可用的路徑)
  • cookie_domain(域餅乾可以用)
  • cookie_secure(將其設置爲如果cookie只應通過HTTPS提供)
  • cookie_httponly(確定Cookie是否應只允許通過HTTP,而不是客戶端腳本使用)

請注意,該AE命名空間是不能在較早的Agavi版本必需的,因此可能需要您使用參數而不是AE:參數

要刪除cookie,您只需撥打unsetCookie,其中所有參數都用於設置Cookie。要獲取cookie值,只需致電getCookie($ name)。由於Cookie是不可信的用戶提供的信息,通常Agavi要求您驗證所有傳入參數,文件,標題和Cookie,然後才能在您的動作視圖中訪問它們。這意味着您可能需要在訪問其值之前驗證您的Cookie。你可以通過一個validate.xml文件做到這一點:

<validator class="string" source="cookie" required="false"> 
    <argument>cookieName</argument> 
</validator> 

這個例子是簡化的,不應在生產中使用。使用來源 _cookie_和參數的cookie名稱,然後根據您的規則(格式等)驗證您的Cookie值。如果內建的類(如字符串,正則表達式等)不夠用,可能需要編寫自定義驗證器,但這是另一天的主題。您可能會發現Agavi User FAQ有所幫助。對不起,無恥的插頭,祝你手頭有問題。 :-)