2012-06-26 5 views
0

나는 인기있는 질문을 본 이유를 묻기 전에 여기에서 Google 검색을 시도했으나 대답했지만 시도했지만 여전히 실패했습니다. CodeIgniter 설정 쿠키, 쿠키 설정 안 함

내가 '$ this-> 입력 -> 쿠키()에 위해서 var_dump를 수행 할 때

$longlife = 60*60*24*60; //60 days 
$shortlife = 60*60*24*10; //10 days 
$this->input->set_cookie('AutoRemember', $user.'::'.$hashbrown, $shortlife, '.example.com', '/'); 
$this->input->set_cookie('LongRemember', $user.'::'.$hashbrown, $longlife, '.example.com', '/'); 

을 (도우미가 자동으로 적재되어 주) 쿠키를 설정하는 나의 시도`내가 부울 거짓 얻을 출력으로, 쿠키가 없음을 의미합니다. CI와 쿠키를 사용하여 시도한 것은 이번이 처음입니다.

note 참고 위의 예에서 실제 도메인을 example.com으로 변경했는데 검색에 도메인을 표시하지 않으려했습니다. 워드 프로세서

답변

2

좋아 __ Claritiy를 들어 편집 2013년 10월 3일 __, 나는 내 문제가 무엇인지 파악하고, 나는이뿐만 아니라 길 아래에 새로운 올 사람을 도움이 될 것입니다 확신 . 당신이 처음 설정 때, 당신의 당신은 라인을 찾을 수 application/config/config.php

:이 요구 사항의 자세한 내용을 밝혀 주어진 인상은 선택 사항이지만

$config['cookie_prefix'] = ""; 

이 설정된다. 항상 재현 할 수없는 버그가있는 것처럼 보이므로 그 이유와 이유를 추적하기가 어렵습니다. 그러나이 구성 항목이 설정되지 않았다면 결론이 나옵니다. 쿠키가 설정/가져 오는 동안 좋은 경우에는 두포에서 자동으로 중단됩니다. 그렇지 않을 때 일하고 있다는 인상을 남깁니다.

얼마나 실망 스러운지 상상해보십시오. 어쨌든, 원래 문제에 대한 내 수정 위에 언급 한 접두사 줄을 설정하는 것입니다. 아무거나 할 것이다, 코더 선택.

어쨌든 설정하려는 의도에 대해 언급 할 가치가 있습니다. 쿠키를 설정할 때 문서/가이드에 따라 정상적으로 수행합니다.

$this-input->set_cookie('myCookie'); 

그러나, 나는이 문서가 지정하지 않은 (또는 I 체크 지속되지 않았다) 발견 어떤 접두사는 사용자가 설정 한 것이 었습니다

$config['cookie_prefix'] = "cmh_";//example 

당신이 전화를 쿠키 값을받지 않습니다 의사가해야한다고 생각하는 사람은 다음과 같습니다.

$this->input->cookie('myCookie'); 

이렇게 값을 호출하면 화면에 아무 것도 표시되지 않습니다. 예를 들면 var_dump() 일 경우. bool(false)이됩니다. 즉, 참조하는 쿠키를 찾을 수 없음을 의미합니다. 뭐가 진실이지. 그것은 존재하지 않습니다, 접두사를 설정 기억하십시오. 그 시점에서 쿠키를 얻으려면

$this->input->cookie('cmh_myCookie'); 

과 같이해야합니다. 쿠키의 실제 값이 인쇄됩니다.

-1

:이 알 수 있듯이

This function is identical to the post function, only it fetches cookie data: 
$this->input->cookie('some_data', TRUE); 

음, 당신은 그것을 얻을 수있는 쿠키의 이름을 추가해야합니다. $this->input->cookie('AutoRemember')

+0

쿠키를 설정하는 경우 document.cookie 메서드를 사용하여 – chris

+0

을 볼 수 있습니다. – Shubham

+0

새벽으로 돌아와서 밤늦게 나갔고, 참으로 .. 내가하는 일은 쿠키를 만드는 것뿐입니다. 쿠키 설정에 PHP의 기본 명령을 사용하면 다른 요구에 세션을 사용함에 따라 헤더 문제가 발생합니다. – chris

0

참고하시기 바랍니다. 'yoursite.com'과 같은 다른 이름으로 도메인 (HTTP_HOST) 내에서 'example.com'도메인에 대한 쿠키를 설정할 수 없습니다. 그것은 보안 문제, 브라우저는 그것을 무시합니다. 모질라 파이어 버그로 확인하십시오. 'NET'탭에 응답 헤더가 있습니다. 쿠키가 존재하고 설정되어 있지 않다면, 맞습니다.

둘째, 쿠키를 설정 한 후에는 현재 $ _COOKIE가 아직 업데이트되지 않아 다음 요청시에만 서버 (PHP)에서 사용할 수 있습니다. CI가이를 다르게 구현 한 경우 이는 개념을 잘못 구현 한 것입니다.

+0

"위의 예에서 실제 도메인을 변경했음을 알립니다."쿠키가 설정 되어야만 한 페이지가 다른 페이지로 이동하기 때문에 거기에 덮여 있다고 생각합니다. – chris

+0

이 줄을 놓치지도 "메모 ...", 미안 해요. 방화범은 어떨까요 ??? 응답으로 쿠키 헤더를 보시겠습니까? 그리고 한 페이지에서 다른 페이지로의 의미는 무엇입니까? – arty

+1

그 ok는, 내가 초기에 썼던 것을 다시 읽은 후, 더 잘 말로 표현할 수 있었다. 어쨌든 그러나 나는 나의 문제가 어느 정도까지 있었는지 알았지 만, 여전히 약간의 문제가 있었지만,이 시점에서 로직 기반이고 쿠키가 아닌 것으로 생각합니다. 문제는 설정에서 쿠키에 접두사를 붙이기위한 설정이있는 것으로 판명 되었기 때문에 왼쪽 빈칸에 쿠키가 백그라운드에서 중단되어 설정되지 않는 경우가 있습니다. 설정 한 항목이 있으면 설정을 찾고 + 무엇을 할 것인가? 스크립트에서 쿠키라고 불렀습니다. 접두사 + 이름을 찾으려하지 않았습니다 – chris

0

대신 CodeIgniter의 세션 클래스를 사용하는 것이 좋습니다.

http://codeigniter.com/user_guide/libraries/sessions.html

+0

나는 10 일 후에 세션을 어떻게 확장합니까? 사용자가 처음에 브라우저를 닫았거나 컴퓨터를 다시 시작한 적이 있습니까? 세션에서이 모든 것이 가능하다면 :-) – chris

+0

config.php 파일에서 만료를 지정할 수 있습니다. $ config [ 'sess_expiration'] = (60 * 60 * 24 * 7 * 2); 제 경우에는 2 주 동안 유효 기간을 정했습니다. – marshall