/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste