2013-01-03 65 views
-2

我想在用户登录页面时自动将cookie存储在数据库中。 cookie“someCookie”先前设置在不同的页面上。在数据库中存储cookie

我的想法是将cookie存储在一个变量中,然后通过表单发送它。

<?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

如果你在'$ someCookie' cookie的,你为什么不只是将其存储在直接对数据库? – jeroen

+0

你为什么不直接保存cookie? 'if(isset($ _ COOKIE ['somecookie'])){//查询此处}'的效果' – RageD

+0

为什么要将cookie保存在数据库中?这本身就让人感到不舒服。 – GolezTrol

回答

1

为什么不把当前时间保存在会话中?然后在下一页阅读会话并进行比较? 这似乎很多少“哈克”

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

那么接下来的页面上:

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

然后你可以先走一步,节省$ timeOnPage变量,没有意见的混乱。

一些阅读:http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html

+1

在会话中存储时间将写入服务器处理页面的时间,它不会计算实际的页面加载时间(onload事件)。 –

+0

作者:“我想在用户登录页面时自动在我的数据库中存储cookie”。我认为他想要的唯一信息是用户在最后一页上的时间。不是任一页面的加载时间。如果放在脚本的顶部,它不会离实际时间太远。 –