我有一个模块应该使用php创建一个cookie,如果它还没有存在。如果它没有确认cookie的存在,则会创建它并实现一个js文件,然后显示一个叠加层。否则该功能应该结束。问题是,js会在每次刷新时加载,即使它不应该。请帮助,我非常感谢,谢谢。
Cookie PHP
<?php
/**
* @file
* Checks for cookie, non-existent: creates cookies + implements js, else
* removes specfic content
*/
/*
* Implements hook_preprocess_page().
*/
function cookie_check_preprocess_page($hook, &$variables) {
// Check for cookie
if (!isset($_COOKIE['firsttime'])) {
// Set variables for setcookie
$name = 'firsttime';
$value = 'no';
// six months
$expire = time()+(15768000);
// Directory
$path = '/~wolfden/';
$domain = 'hitechwolf.com';
// Create cookie
setcookie($name, $value, $expire, $path, $domain, true, true);
// Implement the js
// Welcome Overlay/Button Functionality ONLY ON FIRST TIME VISIT
$path = drupal_get_path('module', 'cookie_check');
drupal_add_js($path . '/js/welcome_button.js');
}
else {
return '';
}
}
重叠JS
/**
* @file
* Appends Welcome Overlay to page, upon button
* click closes overlay
*/
(function ($, Drupal){
Drupal.behaviors.welcomeOverlay = {
attach : function() {
$('#block-panels-mini-welcome-overlay').appendTo('body');
function clickButton() {
$('.welcome-content').fadeTo('500', 0, 'linear', function(){
$('.welcome-overlay').slideToggle('700', 'linear', function(){
$('#block-panels-mini-welcome-overlay').remove();
});
});
}
setTimeout(function () {
$('.welcome-overlay').slideToggle('700', 'linear', function(){
$('.welcome-content').fadeTo('500', 1, 'linear');
});
}, 1500);
$('.w-button').on('click', clickButton);
}
}
})(jQuery, Drupal);
答案 0 :(得分:0)
由于某种原因,您的Cookie未设置。你编写代码来设置cookie是
setcookie($name, $value, $expire, $path, $domain, true, true);
您设置的最后2个参数为TRUE。最后一个TRUE是为了安全性,它表示cookie应该只通过来自客户端的安全HTTPS连接传输。设置为TRUE时,仅在存在安全连接时才设置cookie。
您的网站&#34; http://hitechwolf.com/wolfden/&#34;不是https。所以你的cookie没有设置。
通过设置FALSE
来尝试setcookie($name, $value, $expire, $path, $domain, false, true);