2013-01-03 2 views
-2

사용자가 페이지를 방문 할 때 데이터베이스에 자동으로 쿠키를 저장하려고합니다. 쿠키 "someCookie"는 이전에 다른 페이지에 설정되어 있습니다.데이터베이스에 쿠키 저장

제 아이디어는 쿠키를 변수에 저장 한 다음 양식을 통해 보내는 것입니다.

<?php 
$someCookie = $_COOKIE['somecookie']; 
echo $this->Form->create('Some object'); 
echo $this->Form->input('something', array('type' => 'hidden', 'value' => $someCookie)); 
echo $this->Form->end('Save this'); 
?> 

그리고 제출 버튼을 눌렀습니다. 그러나 이것은 이것에 관해가는 꽤 해커 같은 길을 느낀다.

이 작업을 수행하는 적절한 방법은 무엇입니까?

+3

, 왜 그냥 직접 데이터베이스에 저장하지 않습니다? – jeroen

+0

쿠키를 직접 저장하지 않는 이유는 무엇입니까? 'if (isset ($ somame [ 'somecookie'])) {// DO QUESY HERE}' – RageD

+0

왜 쿠키를 데이터베이스에 저장하겠습니까? 그 자체가 해키를 느낀다. – GolezTrol

답변

1

왜 현재 시간을 세션에 저장하지 않습니까? 그런 다음 다음 페이지에서 세션을 읽고 비교해보십시오. 많이 덜 '해키'보인다

$this->Session->write('pageStart', time()); 

다음 다음 페이지의 :

$timeOnPage = $this->Session->read('pageStart', time()) - time(); 

그리고 당신은 단지 뷰의 혼란없이 진행하고 $ timeOnPage 변수를 저장할 수 있습니다.

일부 읽기 : 당신은`$ someCookie`에서 쿠키가있는 경우 http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html

+1

세션에 시간을 저장하면 서버가 페이지를 처리 ​​한 시간이 기록되며 실제 페이지로드 시간 (onload 이벤트)은 계산되지 않습니다. –

+0

"사용자가 페이지에 착륙했을 때 내 데이터베이스에 자동으로 쿠키를 저장하고 싶습니다." 그가 원하는 유일한 정보는 사용자가 마지막 페이지에 머문 시간입니다. 각 페이지의 로딩 시간이 아닙니다. 스크립트 상단에 배치하면 실제 시간과 크게 다를 것입니다. –