방금 1.1에서 업그레이드 한 CakePHP 1.2 빌드가 있습니다. 아쉽게도 세션이 제대로 작동하지 않습니다.CakePHP 1.2에서 세션 리디렉션이 수행되지 않습니다.
나는 stackoverflow에서 다른 스레드에 시간을 보냈다. 해결책을 제시했으나 지금까지 아무 것도 효과가 없었다.
사용자가 accounts/login에서 로그인하면 나는 다음과 같이 accounts_controller.php에서 세션을 설정합니다.
$this->Session->write('Account', $someone['Account']);
print_r($this->Session->read());
$this->redirect("/accounts/profile");
exit;
올바른 세션 정보가 모두 표시되므로 세션을 저장해야합니다. /profile로 리다이렉트되면 모든 것이 사라집니다.
function profile() {
print_r($this->Session->Read());
이의 출력은 : 나는 핵심 낮은에 케이크 보안 수준을 설정 한
Array ([Config] => Array ([userAgent] => [time] => 1376738563 [timeout] => 10))
, 그것은 여전히 작동하지 않습니다.
Configure::write('Security.level', 'low');
내 문제는 이것과 본질적으로 동일하다 : Cakephp session is destroyed after redirect
그러나 나는 확실히 내 세션 (내가 확인하기 위해 하드 디스크에 세션 파일을 열)에 저장되는 것을 알고있다. 그리고 그 문제에 다른 해결책이 주어지지 않았습니다.
나는이 스레드가 매우 도움이 찾았지만, 거기에 주어진 솔루션은 나를 중 근무하지 않은 : 나는 php.ini의 설정에 매우 숙련 된 아니에요 cakephp lost session variable when redirect
. 나는 아주 간단한 것을 놓칠 수도 있지만, 나는 머리카락을 꺼내려고합니다. 제가 누락 된 부분에 대한 단서를 제게 줄 수 있습니까?
아무도 도움이된다면 내 php.ini 파일과 core.php 케이크 파일을 게시하게되어 기쁩니다.
Configure::write('Session.save', 'cake'); //I have tried 'php' also
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');
나는이 스레드를 읽은 후 아래 다음을 추가 : 여기
는 관련 핵심 설정입니다 cakephp lost session variable when redirect 그것은 이전 또는 이후에 작동하지 않았다. :)Configure::write('Security.cookie', 'cakephpfdebackend');
Configure::write('Session.cookieTimeout', 10000);
Configure::write('Session.cookie_secure',false);
Configure::write('Session.referer_check' ,false);
Configure::write('Session.defaults', 'php');
쿠키가 파이어 폭스와 크롬을 모두 시도했습니다. 현재 localhost에서 작업 중이므로 모든 파일에 대한 전체 액세스 권한이 있습니다. 질문이 있으시면 언제든지 문의하십시오. 필사적입니다.
EDIT : 서버의 다른 사이트에서 작동하는 모든 서버가 작동하는 것으로 알고있는 실제 서버까지 사이트를 푸시 할 수있었습니다. 그리고 내 사이트는 그 서버에서 잘 작동합니다. 이 문제는 내 컴퓨터/apache/php의 설정과 관련이 있는지 확인합니다.
리디렉션 전후에'$ this-> Session-> id()'의 값을 확인하면 일치하는지 아닌지에 따라 가능한 원인을 좁힐 수 있습니다 ('Security .Level = low'). 그리고'$ this-> Session-> errors'에 뭐가 있습니까? 또한 쿠키가 실제로 저장되고 전송되는지 여부를 확인 했습니까? 참고로, 1.2 이상에서 1.3 이상으로 업그레이드해야합니다. – ndm
'2013-08-17 10:38:05 디버그 : cab9q09rbpkft8r2ngjll3qdt3' '2013-08-17 10:38:06 디버그 : l0iibb23201b47b2pq6ervj1i4' ' 2013-08-17 10:38:06 디버그 : ' 첫 줄은 리디렉션 전의 ID입니다. 두 번째 줄은 리디렉션 후 ID입니다. (동일하지 않음). 세 번째 줄은 $ this-> Session-> errors의 출력입니다. (공란) 나는 쿠키에 익숙하지 않다. 쿠키가 저장되고 전송되었는지 확인하려면 어떻게해야 할까? 위의 편집을 참조하십시오. 라이브 서버에서도 작동합니다. @ndm – dwlorimer
쿠키를 보려면 파이어 폭스에서'마우스 오른쪽 버튼 클릭> 페이지 정보보기> 보안> 쿠키보기'를 선택하십시오. 'Firefox 버튼 또는 도구> 웹 개발자> 웹 콘솔> 콘솔'은 페이지를 새로 고침하고 요청과 일치하는 적절한 목록 항목을 클릭 한 다음 팝업 메뉴에서 '보낸 편지함/수신 됨'을 참조하십시오. 쿠키. – ndm