【发布时间】:2012-08-23 20:30:47
【问题描述】:
我有一个弹出窗口在加载后出现在主页上,我需要确保每个新访问者只发生一次。
最好的方法是什么?我对 jQuery 和 PHP 非常熟悉,但老实说,我已经有一段时间没有使用过任何类型的 cookie。
欢迎所有建议。
谢谢
【问题讨论】:
-
我猜 if(isset($_SESSION['views'])) 不会工作,因为你已经设置了会话?
我有一个弹出窗口在加载后出现在主页上,我需要确保每个新访问者只发生一次。
最好的方法是什么?我对 jQuery 和 PHP 非常熟悉,但老实说,我已经有一段时间没有使用过任何类型的 cookie。
欢迎所有建议。
谢谢
【问题讨论】:
我能想到 3 种可能性:
PHP 会话:
当事件触发时,向服务器发送一个 AJAX 调用。将用户的 session_id 存储在某处,例如在数据库中(带有 sessionid 的简单 1 列表就足够了)。如果您检查数据库并在那里找到 sessionid,您就知道用户已经触发了该事件。
Javascript Cookie:
只需将信息存储在 JS cookie 中。如果你想坚持使用 jQuery,可以使用 nice plugin for this kind of purpose。
浏览器商店:
这可以是sessionStore or localStore,您可以在其中轻松保存识别触发事件所需的信息。
就个人而言,如果您知道访问者的浏览器,我会选择 2 甚至 3,因为并非周围的每个浏览器都能够做到这一点(尽管我怀疑是否有人仍然想要支持 IE6/7)
【讨论】:
在这种情况下,您可以使用会话或 cookie。
1.检查cookievisited_already是否存在。
2.如果存在,他已经访问过我们的网站,什么也不做。
3.Else,第一次访问:做某事并创建visited_already cookie。
例如:
if(!isset($_COOKIE['visited_already']))
{
setcookie('visited_already' , 'true' , time()+60*60*24*7*365); //Will expire in a year (or when the user delete cookies)
//pop-up code here.
}
【讨论】:
感谢你们的贡献。
我找到了另一个完美的解决方案。 这个链接对我帮助很大: How to set cookies in Javascript
jQuery(window).load(function() {
var cookie_mesage = jQuery.cookie('welcome');
if (cookie_mesage != 'hide') {
jQuery('.ceebox').trigger('click');
jQuery.cookie('welcome', 'hide');
};
});
它速度快,运行良好,正是我所需要的。
【讨论】: