|
| counter med text-fil Fra : Erik Ginnerskov |
Dato : 18-02-05 00:14 |
|
Hej NG
Jeg har siddet og bakset med en hitcounter, men den vil ikke makke ret:
<?php
if (file_exist('counter.txt'))
{
$fil = fopen('counter.txt', r);
$dat = fread($fil, filesize('counter.txt'));
echo $dat+1;
fclose($fil);
$fil = fopen('counter.txt', w);
fwrite($fil, $dat+1);
}
else
{
$fil = fopen('counter.txt', w);
fwrite($fil, 1);
echo '1';
fclose($fil);
}
?>
Den giver en fejlmeddelelse:
Fatal error: Call to undefined function: file_exist() in count.php on line
2
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
AlleyKat \(FSS\) (18-02-2005)
| Kommentar Fra : AlleyKat \(FSS\) |
Dato : 18-02-05 00:20 |
|
"Erik Ginnerskov" skrev:
> <?php
> if (file_exist('counter.txt'))
> (...)
> Den giver en fejlmeddelelse:
> Fatal error: Call to undefined function: file_exist() in count.php on line
> 2
http://dk2.php.net/function.file-exists
et lille S kan gøre en stor forskel ;)
MvH
AlleyKat
| |
Erik Ginnerskov (18-02-2005)
| Kommentar Fra : Erik Ginnerskov |
Dato : 18-02-05 01:08 |
|
AlleyKat (FSS) wrote:
> http://dk2.php.net/function.file-exists
>
> et lille S kan gøre en stor forskel ;)
Tak, nu fik jeg det til at virke - delvist:
<?php
if (file_exists('counter.txt'))
{
$fil = fopen('counter.txt', 'r');
$dat = fread($fil, filesize('counter.txt'));
echo $dat+1;
fclose($fil);
$fil = fopen('counter.txt', 'w');
fwrite($fil, $dat+1);
}
else
{
$fil = fopen('counter.txt', 'w');
fwrite($fil, 1);
echo '1';
fclose($fil);
}
?>
Men den tæller alle hits (nye besøg, genindlæsninger og sideskift). Den bør
kun tælle unikke hits på sitet.
Jeg formoder, der skal tilføjes noget session-test, men hvordan?
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
Ukendt (18-02-2005)
| Kommentar Fra : Ukendt |
Dato : 18-02-05 16:48 |
|
> Men den tæller alle hits (nye besøg, genindlæsninger og sideskift). Den
> bør
> kun tælle unikke hits på sitet.
>
> Jeg formoder, der skal tilføjes noget session-test, men hvordan?
>
Du kunne evt. sætte en cookie uden expire, når der logges ind på siden, og
så spørge til om cookien eksisterer inden du opdaterer din counter. Hvis
cookien er sat, så opdaterer du ikke.
Cookien vil blive slettet når sessionen udløber.
Mvh. Leif.
--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
| |
Erik Ginnerskov (18-02-2005)
| Kommentar Fra : Erik Ginnerskov |
Dato : 18-02-05 20:34 |
|
Leif wrote:
> Du kunne evt. sætte en cookie uden expire, når der logges ind på
> siden, og så spørge til om cookien eksisterer inden du opdaterer din
> counter. Hvis cookien er sat, så opdaterer du ikke.
Det har jeg forsøgt, men så har jeg åbenbart ikke lavet det rigtigt:
<?php
setcookie("talt","1");
if (file_exists('counter.txt'))
{
if (isset($cookie 'talt'))
{
$fil = fopen('counter.txt', 'r');
$dat = fread($fil, filesize('counter.txt'));
echo $dat+1;
fclose($fil);
$fil = fopen('counter.txt', 'w');
fwrite($fil, $dat+1);
}
}
else
{
$fil = fopen('counter.txt', 'w');
fwrite($fil, 1);
echo '1';
fclose($fil);
}
?>
Jeg får denne fejlmelding:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting
',' or ')' in count.php on line 5
Hvad har jeg gjort galt og hvordan kommer jeg videre?
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
Torben Rasmussen (20-02-2005)
| Kommentar Fra : Torben Rasmussen |
Dato : 20-02-05 08:14 |
|
Erik Ginnerskov wrote in dk.edb.internet.webdesign.serverside.php:
> Leif wrote:
>
> > Du kunne evt. sætte en cookie uden expire, når der logges ind på
> > siden, og så spørge til om cookien eksisterer inden du opdaterer din
> > counter. Hvis cookien er sat, så opdaterer du ikke.
>
hej Erik, jeg har lige hurtigt bikset noget sammen, det skulle virke:
<?php setcookie("talt", "1", time()+3600) ?>
<html>
<head></head>
<body>
<?php
$checkcookie = $_COOKIE['talt'];
$fil = fopen('counter.txt', 'r');
$dat = fread($fil, filesize('counter.txt'));
if ($checkcookie == "1")
{echo $dat; exit;}
if (file_exists('counter.txt'))
{
echo $dat+1;
fclose($fil);
$fil = fopen('counter.txt', 'w');
fwrite($fil, $dat+1);
}
else
{
$fil = fopen('counter.txt', 'w');
fwrite($fil, 1);
echo '1';
fclose($fil);
}
?>
</body>
</html>
HUSK ! at denne line:
<?php setcookie("talt", "1", time()+3600) ?>
skal stå i toppen før alt andet...lige som i mit spæde eks....
du kan ændre if ($checkcookie == "1") til == 0 så vil den tælle videre på
livet løs
Håber det har løst dine problemer
Torben
http://torben-rasmussen.dk
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Peter Brodersen (20-02-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 20-02-05 13:03 |
|
On 20 Feb 2005 07:13:55 GMT, Torben Rasmussen
<torben@torben-rasmussen.dk> wrote:
><?php setcookie("talt", "1", time()+3600) ?>
Bemærk, at hvis klientens ur går forkert, kan denne cookie risikere
aldrig at blive sat - eller blive hængende i for lang tid. Jeg
fraråder normalt at bruge cookies, der tidsmæssigt har en expire så
tæt på det aktuelle tidspunkt, idet det jævnligt kan give mærkværdige
problemer.
--
- Peter Brodersen
| |
Torben Rasmussen (20-02-2005)
| Kommentar Fra : Torben Rasmussen |
Dato : 20-02-05 13:42 |
|
Peter Brodersen wrote in dk.edb.internet.webdesign.serverside.php:
> On 20 Feb 2005 07:13:55 GMT, Torben Rasmussen
> <torben@torben-rasmussen.dk> wrote:
>
> ><?php setcookie("talt", "1", time()+3600) ?>
>
> Bemærk, at hvis klientens ur går forkert, kan denne cookie risikere
> aldrig at blive sat - eller blive hængende i for lang tid. Jeg
> fraråder normalt at bruge cookies, der tidsmæssigt har en expire så
> tæt på det aktuelle tidspunkt, idet det jævnligt kan give
mærkværdige
> problemer.
>
> --
> - Peter Brodersen
Nå ja ok, MY BAD ! :O/
tiden skal selvfølgelig sættes, så cookie'en vare en del længere evt
et par dage eller over....
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Erik Ginnerskov (20-02-2005)
| Kommentar Fra : Erik Ginnerskov |
Dato : 20-02-05 17:15 |
|
Torben Rasmussen wrote:
> hej Erik, jeg har lige hurtigt bikset noget sammen, det skulle virke:
Det har jeg nu testet af og jeg må desværre sige, at det ikke virker efter
hensigten, fordi:
1. Scriptet overskriver og nulstiller en eksisterende tekstfil.
2. Hvis ($checkcookie == "1"), udelades alt på siden efter
tællescriptet. Hvis jeg skriver ($checkcookie == "0"), tælles
ikke opved genindlæsning af siden
> <?php setcookie("talt", "1", time()+3600) ?>
Jeg går ud fra, at den sætter timeout til en time efter at cookien blev sat.
Er det serveren, der sætter tidspunkt på cookien? jfr. Peter B.'s indlæg
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
|
|