我正在使用 Code Igniter 开发一个网站。我想在用户第一次访问我的网站时显示一个弹出窗口。如果他再次刷新,它不应该再次出现。现在我正在检查会话变量,如果它不存在,我将显示该弹出窗口。之后,我强迫该用户单击一个按钮以关闭弹出窗口。然后我向服务器发送请求以设置该会话变量。这样,如果该用户刷新页面,该弹出窗口将不会再次出现。
有没有最好的方法来完成这个动作?
我正在使用 Code Igniter 开发一个网站。我想在用户第一次访问我的网站时显示一个弹出窗口。如果他再次刷新,它不应该再次出现。现在我正在检查会话变量,如果它不存在,我将显示该弹出窗口。之后,我强迫该用户单击一个按钮以关闭弹出窗口。然后我向服务器发送请求以设置该会话变量。这样,如果该用户刷新页面,该弹出窗口将不会再次出现。
有没有最好的方法来完成这个动作?
我不认为你描述的是一个好主意。从用户体验的角度来看——在页面打开时弹出一个窗口根本不是很酷的体验。
很少有网站使用这种方法,而且通常是有原因的。什么是弹出窗口?它通常是用户采取的行动的结果,或者至少是这样的想法。如果您按下该按钮并出现一个弹出窗口,那很好。但是,如果您第一次访问这个新站点,并且在您决定是否访问该站点之前就出现了一个弹出窗口,那么这对您来说并不好。
如果您坚持这样做,我宁愿建议通过javascript cookie运行它。它不需要为每个唯一用户在您的服务器上提供额外的性能,并且不包含敏感数据。在最坏的情况下,他们会操纵 cookie 并再次弹出。
就个人而言,我更喜欢像 Youtube 那样做;我进入该站点并获得一个清晰标记的框,其中包含我可以主动选择单击以获取更多信息的信息:
(此帐户由 castlin.se 处理。阅读更多)
这种方法可以有效地通知用户,让他们能够获得更多信息,同时又不会妨碍用户经常想要做的事情。
有没有最好的方法来完成这个动作?
不,有几种方法,它们的原因和优点。我们可以为您提供解决方案,但我们不能说“这是您必须使用的”。其中potentiel sql注入除外;它们是“必须”处理的:)
我在自己的(codeigniter)网站上使用 cookie。
我使用了jquery modal dialog插件。和JQUERY 饼干
我做了这样的事情:
$(function() {
if ($.cookie('showDialog') == undefined || $.cookie('showDialog') == null || $.cookie('showDialog') != 'false') {
$("#dialog").dialog({
width: 450,
modal: "true",
hide: "fade",
show: "fade",
closeOnEscape: false,
draggable: true,
resizable: false,
title: 'Welcome to my site',
close: function(event, ui){
location.reload(true);
},
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
}).dialog("open");
$(".ui-widget-overlay").css({background: "#000", opacity: 0.8});
$.cookie('showDialog', 'false', { expires: 365 }); // set the cookie, with expiry after 1 day
}
我的对话代码:
<div id="dialog" class="hidden" title="Welcome to my website">
// Content for dialog
// Content for dialog
</div>
现在,当您单击“关闭”按钮或按钮显示的任何内容时。cookie 将被设置,如果设置了 cookie,则不会显示对话框。我添加了 1 年的到期时间。因此,如果人们不删除他们的 cookie,则今年不会显示该对话框。