Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] problem z ciasteczkami w skrypcie
Forum PHP.pl > Forum > Przedszkole
gmorekk
Witam Wszystkich,
Mam prosty skrypcik w JS i chciał bym do niego dodać obsługę ciasteczek tak by zapamiętało jedną zmienną i można ją było później wykorzystać.
Skrypt ma za zadanie zliczyć czas spędzony na stronie i wartość czasu pomnożyć o odpowiednią stałą, problem w tym że chciał bym aby licznik nie resetował się za każdym razem jak użytkownik przejdzie na inną podstronę. Myślalem tutaj o 2 rozwiązaniach ciasteczka i sesja. Jednak nijak nie mogę tego zaimplementować i już połowę włosów z głowy wyrwałem.
CODE
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script LANGUAGE="JavaScript">
<!-- Begin

startday = new Date();
clockStart = startday.getTime();
function initStopwatch() {
var myTime = new Date();
return((myTime.getTime() - clockStart)/1000);
}
function getSecs() {
var tSecs = Math.round(initStopwatch());
var iSecs = tSecs % 60;
var iMins = Math.round((tSecs-30)/60);
var sSecs ="" + ((iSecs > 9) ? iSecs : "0" + iSecs);
var sMins ="" + ((iMins > 9) ? iMins : "0" + iMins);
var a = (iMins*60 );
var b = a + (iSecs);
var d = b * 0.002536783;


document.forms[0].timespent.value = d;
window.setTimeout('getSecs()',1000);

}
</script>

</head>
<BODY onLoad="window.setTimeout('getSecs()',1)">
<CENTER>
<FORM>
<FONT SIZE="2" FACE="Arial">Gmina zarobiła: </FONT><input size=10 name=timespent>
</FORM>
</CENTER>
<!-- End of Time Spent JavaScript -->


</body>

</html>





Jeśli ktoś by mi podpowiedział jak to zrobić lub po prostu wstawił ciasteczka za mnie to był bym wdzięczny. Szukałem czegoś takiego w internecie i próbowałem zaimplementować wiele różnych rozwiązań ale zawsze gdzieś pozostawiam babola i jest kicha.
pozdrawiam Łukasz
mortus
W sieci jest cała masa przykładów wraz z gotowymi funkcjami. Wbrew pozorom nie jest to takie trudne. Jeśli jednak masz z tym kłopoty lub brak Ci inicjatywy, to umieść ogłoszenie w dziale Poszukuję. Nikt niczego za darmo Tobie nie zrobi, a Ty nawet nie pokazałeś, w jaki sposób próbowałeś rozwiązać swój problem.
erix
Pokaż, jak pracujesz nad tym skryptem, inaczej przenoszę na Giełdę Ofert.
gmorekk
jedna wersja

CODE
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script LANGUAGE="JavaScript">
<!-- Begin

startday = new Date();
clockStart = startday.getTime();
function initStopwatch() {
var myTime = new Date();
return((myTime.getTime() - clockStart)/1000);
}
function getSecs() {
var plus = ReadCookie(bylo);
if(plus.lenght == 0) {e = 0;}
else {plus = ReadCookie(bylo);}
var tSecs = Math.round(initStopwatch());
var iSecs = tSecs % 60;
var iMins = Math.round((tSecs-30)/60);
var sSecs ="" + ((iSecs > 9) ? iSecs : "0" + iSecs);
var sMins ="" + ((iMins > 9) ? iMins : "0" + iMins);
var a = (iMins*60 );
var b = a + (iSecs);
var d = plus + (b * 0.002536783);
SetCookie("bylo", d, 3000);

document.forms[0].timespent.value = d;
window.setTimeout('getSecs()',1000);

}
function SetCookie() {
if(arguments.length < 2) { return; }
var n = arguments[0];
var v = arguments[1];
var d = 0;
if(arguments.length > 2) { d = parseInt(arguments[2]); }
var exp = '';
if(d > 0) {
var now = new Date();
then = now.getTime() + (d * 24 * 60 * 60 * 1000);
now.setTime(then);
exp = '; expires=' + now.toGMTString();
}
document.cookie = n + "=" + escape(String(v)) + '; path=/' + exp;
} // function SetCookie()

function ReadCookie(n) {
var cookiecontent = new String();
if(document.cookie.length > 0) {
var cookiename = n+ '=';
var cookiebegin = document.cookie.indexOf(cookiename);
var cookieend = 0;
if(cookiebegin > -1) {
cookiebegin += cookiename.length;
cookieend = document.cookie.indexOf(";",cookiebegin);
if(cookieend < cookiebegin) { cookieend = document.cookie.length; }
cookiecontent = document.cookie.substring(cookiebegin,cookieend);
}
}
return unescape(cookiecontent);
} // function ReadCookie()
</script>

</head>
<BODY onLoad="window.setTimeout('getSecs()',1)">
<script>
document.write(plus);
</script>
<CENTER>
<FORM>
<FONT SIZE="2" FACE="Arial">Gmina zarobiła: </FONT><input size=10 name=timespent>
</FORM>
</CENTER>
<!-- End of Time Spent JavaScript -->


</body>

</html>





i druga ale jej nie rozwijałem nawet:
CODE
<?php
session_start();
// get session variables
$count = $_SESSION['count'];
$start = $_SESSION['start'];
if (!isset($count)) {
// initialise session variables
$count = 0;
$start = time();
// register session variables
$_SESSION['count'] = $count;
$_SESSION['start'] = $start;
} else {
// update and save session variables
$count++;
$_SESSION['count'] = $count;
}

$sessionId = session_id();
?>

<html>
<head>
<script language="JavaScript">
<!--
start = new Date();
clockStart = start.getTime();

function startTime() {
var time = new Date();
return((time.getTime() - clockStart)/1000);
}

function countUp() {
var CalSec = Math.round(startTime());
var CalSecFin = CalSec % 60;
var CalMin = Math.round((CalSec-30)/60);
var CalHours = Math.round((CalMin-30)/60);
var FinSec ="" + ((CalSecFin > 9) ? CalSecFin : "0" + CalSecFin);
var CalMinFin ="" + ((CalMin > 9) ? CalMin : "0" + CalMin);
var CalHourFin ="" + ((CalHours > 9) ? CalHours : "0" + CalHours);

//heure=CalHourFin+":"+CalMinFin+":"+FinSec;
//document.getElementById('mess').innerHTML=heure;
//use input
document.forms[0].timespent.value = CalHourFin+":"+CalMinFin+":"+FinSec;
//document.getElementById('mess').innerHTML=heure;
window.setTimeout('countUp()',1000);
}
//-->
</script>
</head>
<body onLoad="window.setTimeout('countUp()',1)">
<?php $duration = time() - $start; ?>
Session Time Duration: <?php echo date("H:i:s", $duration); ?>
<form>
You have been on <?php echo $_SERVER['SERVER_NAME'];?> for <input size=5 style="border:0" name=timespent>
</form>
</body>
</html>
erix
I co nie robi?
gmorekk
Właśnie w tym problem ze w inpucie nic sie nie wyswietla i już załamalem rece nie wiem czemu ale nie chce dzialac
erix
Jest coś w konsoli błędów?
mortus
W funkcji getSecs() zamiast ReadCookie(bylo) powinno być ReadCookie("bylo") (linie 1 i 3). A skrypt jest Twój, czy pobrany skądś z sieci?

EDIT
Zainstaluj sobie Firebug-a dla Firefox-a - naprawdę ułatwia pracę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.