我在每个页面上都设置了Bootstrap模态窗口,背景上有隐藏的滚动条,以捕获访客详细信息以产生潜在客户,因为我们获得了足够的访问量。
我每次都使用加载弹出窗口使用header.php进行所有编码。 单击关闭或提交选项后,弹出窗口应隐藏。单击关闭或立即提交后,任何页面上都没有弹出窗口。
我正在使用会话在关闭或提交点击后隐藏弹出窗口。 一切正常。
会议安全吗?还有什么其他选择?
我遇到什么样的问题-重新加载后出现弹出窗口,而不是加载窗口。
看起来像Cookie问题,标头缓存问题。我不知道
研究后,我完成了一次窗口刷新。它在url中提供了一些变量
在这里检查:https://www.carlo.in/new-cars-test
请给我建议其他选择或提供解决方案。
答案 0 :(得分:0)
在客户端打开浏览器的其余时间中,或者直到会话在服务器端过期/关闭(短期)之前,会话将阻止该模式再次出现。只要不从其计算机上删除Cookie(长期),该Cookie就会阻止该模式再次出现
这是我使用引导模式和cookie的方法:
header.php
# check if "Got-It!" button has been pressed
if (isset($_POST['btn_modal'])) {
$nameofCookie = $_POST['btn_modal'] . '-' . $_SERVER['REMOTE_ADDR']; // store name of modal with client's IP for the cookie's name
$cookieExp = (86400 * 365); // time in seconds for cookie to expire
# check if this cookie exists already
if (!array_key_exists($nameofCookie, $_COOKIE)) {
setcookie($name, '_any_value_goes_here_to_store_in_cookie', $cookieExp, '/'); // create cookie
header('Location: https://' . $_SERVER['HTTP_HOST'] . URI); // refresh the current page after they click "Got It!"
die();
}
}
如果用户已登录,我个人更喜欢使用用户名,但是如果未在会话中存储用户名,则可以使用其IP,如上所示。这是用户名,只有一行不同。
# check if "Got-It!" button has been pressed
if (isset($_POST['btn_modal'])) {
$nameofCookie = $_POST['btn_modal'] . '-' . $_SESSION['username']; // store name of modal with client's username for the cookie's name
$cookieExp = (86400 * 365); // time in seconds for cookie to expire
# check if this cookie exists already
if (!array_key_exists($nameofCookie, $_COOKIE)) {
setcookie($name, '_any_value_goes_here_to_store_in_cookie', $cookieExp, '/'); // create cookie
header('Location: https://' . $_SERVER['HTTP_HOST'] . URI); // refresh the current page after they click "Got It!"
die();
}
}
index.php (或该模式正在运行的任何页面)
<!-- code... -->
<!-- begin: What's New? [Modal] -->
<div class="modal fade" id="newModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">What's new</h5>
</div>
<div class="modal-body">
<ul>
<li>NEW THIS</li>
<li>NEW THAT</li>
<li>NEW EVERYTHING</li>
</ul>
</div>
<div class="modal-footer">
<form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
<button type="submit" class="btn btn-primary" name="btn_modal" value="newModal">Got It!</button>
</form>
</div>
</div>
</div>
</div>
<!-- end: What's New? [Modal] -->
<!-- more code... ->
footer.php
if(array_key_exists($nameofCookie, $_COOKIE)) {
echo "<script>
$(window).on('load',function(){
$('#newModal').modal('show');
});
</script>";
}
设置cookie的脚本必须放在标题中,最好将检查和运行模式的脚本放在模式的html代码之后,最好放在页脚。