2011-10-14 103 views
0

我一直在努力,也許有人可以幫助我嗎?我有我的頁面上的JavaScript計數器,試圖將其連接到一個cookie(My first quetion about this),這樣,如果用戶刷新頁面計數器不從0重新開始:將Javascript變量添加到cookie

第1頁:

<head> 
<script type="text/javascript"> 
var pageVisisted = new Date(); 
setInterval(function() { 
    var timeOnSite = new Date() - pageVisisted; 
    var secondsTotal = timeOnSite/1000; 
    var hours = Math.floor(secondsTotal/3600); 
    var minutes = Math.floor(secondsTotal/60) % 3600; 
    var seconds = Math.floor(secondsTotal) % 60; 
    document.getElementById('counter').innerHTML = hours + ":" + minutes + ":" + seconds; 
}, 1000); 
</script> 
<?php 
setcookie(AboutVisit, pageVisisted); 
session_start(); 
?> 
</head> 

第2頁:

$cookid = $_COOKIE['AboutVisit']; 
echo $cookid; 

但後來我得到的顯示:pageVisisted

+0

你讀過這個嗎? http://www.quirksmode.org/js/cookies.html – vascowhite

+0

您可能需要使用像這樣的會話$ _SESSION ['counter'] = 0;並在有操作時增加。你可以通過簡單地將它打印到頁面來獲得這個會話值,如var counter = <?= $ _SESSION ['counter']?>; – Karthik

+0

更多**特定**並在**詳細信息中更詳細地解釋問題**。從你寫的 你只是通過腳本中的PHP代碼設置cookie。在JS部分中,您正在計算H,M和S並在頁面上顯示它們。 – SarthakGupta

回答

0

setcookie(AboutVisit, pageVisisted);將不會捕獲pageVisited的值,因爲這是一個JavaScript變量。 JavaScript在用戶的瀏覽器中運行,而PHP沒有意識到它。 PHP只知道它的PHP塊有什麼。換句話說,它認爲你這樣的代碼:

Arbitrary text 
<?php 
setcookie(AboutVisit, pageVisisted); // What is pageVisited?! 
session_start(); 
?> 
Arbitrary text 

真的,只要有人跟蹤多久,是在你的頁面的話,你並不需要涉及PHP,除非你需要使用的信息服務器。相反,您的JavaScript可以負責維護您的Cookie。不幸的是,JavaScript本身有一個可怕的和反直觀的API來處理cookie。通過@vascowhite鏈接到的文章有一組很好的幫助JavaScript函數,您可以使用它來簡化事情。下面是你的JavaScript可能看起來像增加了一些輔助功能:

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

// Read the cookie; if it's not there, start at the current date 
var cookieVal = readCookie('AboutVisit'); 
var pageVisisted = cookieVal ? parseInt(cookieVal) : new Date().milliseconds; 
if (!cookieVal) { 
    createCookie('AboutVisit', pageVisited.toString()); 
} 

setInterval(function() { 
    var timeOnSite = new Date().milliseconds - pageVisisted; 
    var secondsTotal = timeOnSite/1000; 
    var hours = Math.floor(secondsTotal/3600); 
    var minutes = Math.floor(secondsTotal/60) % 3600; 
    var seconds = Math.floor(secondsTotal) % 60; 
    document.getElementById('counter').innerHTML = 
     hours + ":" + minutes + ":" + seconds; 
}, 1000);