2012-08-09 2 views
0

우리 사이트를 방문하는 각 사용자마다 고유 한 ID를 만들려고합니다. 저는 Zend와 MVC 패턴에 비교적 익숙합니다. 그래서 쿠키를 어디에 설정해야하는지 잘 모르겠습니다.젠드 컨트롤러에서 쿠키 설정

PHP는 매우 정직 :

if(!isset($_COOKIE['mx_uid'])){ 
    $expire = time()+60*60*24*30; 
    setcookie('mx_uid', uniqid('mx_'), $expire); 
} 

$lxid = $_COOKIE['mx_uid']; 

가 20로 이동, 그래서 만약 내가보기에이를 배치하는 시도 쿠키가로드 될 때마다 새로운 페이지에서 재생되는 문제에 달렸다 사이트의 페이지에는 20 개의 쿠키가 있습니다.

또한 자바 스크립트 스 니펫이 쿠키 내용을 캡처하기 때문에 새로 고침하지 않고 각 페이지에서 "$ lxid"변수를 인라인으로 사용해야합니다.

누구나 Zend에서 쿠키를 이런 식으로 사용 했습니까?

답변

1

쿠키를 한 세션에서 한 번만 설정해야 할 경우 frontController 플러그인에 배치하십시오.
resources.frontController.plugins.a.class = "YourNamespace_Plugin_Cookies"

그리고 다음 플러그인이

class YourNamespace_Plugin_Cookies extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     $cookie = $request->getCookie('mx_uid'); 
     if(empty($cookie)){ 
      setcokkie('mx_uid',$lxid,$expire, '/'); 
     } 
    } 
} 
0

당신은 (4 PARAM)뿐만 아니라 쿠키 경로를 설정할 수 있습니다 :

setcookie('mx_uid', uniqid('mx_'), $expire, '/'); 

당신은 당신이 그것을 설정하는 동일한 스크립트 내에서 쿠키에 액세스하지 못할 수 있습니다주의하십시오 (즉 그들은 그들이 방문하는 다음 페이지까지 작동하지 않을 것입니다). 그래서 더 나은 논리는 다음과 같을 수 있습니다

if (isset($_COOKIE['mx_uid'])){ 
    $lxid = $_COOKIE['mx_uid']; 
} else { 
    $lxid = uniqid('mx_'); 
    $expire = time()+60*60*24*30; 
    setcookie('mx_uid', $lxid, $expire, '/'); 
} 

$lxid 항상 값을 포함 할 수 있도록.

+0

감사합니다 팀과 같이됩니다있는 App.ini 추가! MVC가가는 한 컨트롤러 나 뷰에서 이것을 설정해야합니까 ?? – HjalmarCarlson

+0

보기가 아닙니다. 고유 한 값을 알지 못하고 어디에서 적절한 지 알기는 어렵지만 컨트롤러를 한 번만 사용하는 경우 컨트롤러를 사용하고 사이트 전체에서 컨트롤러를 사용하려면 (또는 설정해야하는 경우) 아마 컨트롤러 일 것입니다. –