|
| Kan ikke danne filer med funktionerne fput~ Fra : XUNIL |
Dato : 02-09-07 20:05 |
|
Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
den vil ikke danne
filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
<?php // denne del virker
$fp = fopen('counter.dat', 'r');
$hits = fgets($fp, 1024);
fclose($fp);
$hits++;
print 'Der har været '.$hits.' visninger af denne side';
$fp = fopen('counter', 'w'); // denne del virker
tilsyneladende ikke.
fwrite($fp, $hits);
fclose($fp);
?>
hilsen xunil
| |
Birger (02-09-2007)
| Kommentar Fra : Birger |
Dato : 02-09-07 20:25 |
|
"XUNIL" <g.b.hansson@jubii.dk> skrev i en meddelelse
news:1188759877.302360.299750@r29g2000hsg.googlegroups.com...
Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
den vil ikke danne
filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
<?php // denne del virker
$fp = fopen('counter.dat', 'r');
$hits = fgets($fp, 1024);
fclose($fp);
$hits++;
print 'Der har været '.$hits.' visninger af denne side';
$fp = fopen('counter', 'w'); // denne del virker
tilsyneladende ikke.
fwrite($fp, $hits);
fclose($fp);
?>
hilsen xunil
Mener at "w" parametren kun kan anvendes til eksisterende filer. Brug "x" i
stedet - den kreerer en hvis den ikke findes.
$fp = fopen('counter', x');
En lille kommentar : Hvad sker der, hvis to besøgende åbner din side
samtidig?
Birger
| |
Birger (02-09-2007)
| Kommentar Fra : Birger |
Dato : 02-09-07 20:26 |
|
"XUNIL" <g.b.hansson@jubii.dk> skrev i en meddelelse
news:1188759877.302360.299750@r29g2000hsg.googlegroups.com...
Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
den vil ikke danne
filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
<?php // denne del virker
$fp = fopen('counter.dat', 'r');
$hits = fgets($fp, 1024);
fclose($fp);
$hits++;
print 'Der har været '.$hits.' visninger af denne side';
$fp = fopen('counter', 'w'); // denne del virker
tilsyneladende ikke.
fwrite($fp, $hits);
fclose($fp);
?>
hilsen xunil
overså lige at i din write, har filen ingen extension...
$fp = fopen('counter.dat', 'x');
Birger
| |
XUNIL (02-09-2007)
| Kommentar Fra : XUNIL |
Dato : 02-09-07 20:53 |
|
On 2 Sep., 21:26, "Birger" <s...@bbsorensen.com> wrote:
> "XUNIL" <g.b.hans...@jubii.dk> skrev i en meddelelsenews:1188759877.302360.299750@r29g2000hsg.googlegroups.com...
> Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
> den vil ikke danne
> filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
> ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
> og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
> ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
>
> <?php // denne del virker
> $fp = fopen('counter.dat', 'r');
> $hits = fgets($fp, 1024);
> fclose($fp);
>
> $hits++;
>
> print 'Der har været '.$hits.' visninger af denne side';
>
> $fp = fopen('counter', 'w'); // denne del virker
> tilsyneladende ikke.
> fwrite($fp, $hits);
> fclose($fp);
> ?>
>
> hilsen xunil
>
> overså lige at i din write, har filen ingen extension...
> $fp = fopen('counter.dat', 'x');
>
> Birger
jeg har prøvet mange extensions incl 'b' og 'x' og 'w'
undskyld men '.dat' er altså en skrivefejl den er der i mit php-fil.
| |
Lars (02-09-2007)
| Kommentar Fra : Lars |
Dato : 02-09-07 22:44 |
|
"XUNIL" skrev
Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
den vil ikke dannefilen counter.dat på serveren.
<?php // denne del virker
$fp = fopen('counter.dat', 'r');
$hits = fgets($fp, 1024);
fclose($fp);
$hits++;
print 'Der har været '.$hits.' visninger af denne side';
$fp = fopen('counter', 'w'); // denne del virker
tilsyneladende ikke.
fwrite($fp, $hits);
fclose($fp);
?>
hilsen xunil
Hej.
Ikke fordi jeg er nogen ørn til php, men jeg bruger nedenstående php-script
til hits af siden. Så bruger jeg en anden tæller, der logger ip, dato mm.
til besøgende pr.dag.
<?php
$count = file("hits_NAVN.txt");
$count_gl = $count[0];
$ny_count = ++$count_gl;
$data = fopen("hits_NAVN.txt","w");
$skriv = fwrite($data,$ny_count);
fclose($data);
echo "Hits i alt: $ny_count";
?>
Fx. NAVN kan være hits_index.php, Så kan man bruge andre navne til andre
sider.
husk mount777 af hits_NAVN.txt på server
husk i count.php : <?php include("STI/hits_NAVN.txt"); ?>
Mvh. Lars Andersen
| |
Arne Feldborg (03-09-2007)
| Kommentar Fra : Arne Feldborg |
Dato : 03-09-07 05:46 |
|
XUNIL <g.b.hansson@jubii.dk> skrev Sun, 02 Sep 2007 12:04:37 -0700
>Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
>den vil ikke danne
>filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
>ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
>og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
>ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
>
><?php // denne del virker
>$fp = fopen('counter.dat', 'r');
>$hits = fgets($fp, 1024);
>fclose($fp);
>
>$hits++;
>
>print 'Der har været '.$hits.' visninger af denne side';
>
>$fp = fopen('counter.dat', 'w');
>
Parameteren 'w' er OK (det er faktisk den eneste rigtige).
Problemet er tælleren
$hits++;
Skal være
++$hits;
--
mvh, A:\Feldborg
Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/
| |
Bertel Lund Hansen (03-09-2007)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 03-09-07 08:16 |
|
Arne Feldborg skrev:
> Problemet er tælleren
> $hits++;
> Skal være
> ++$hits;
Begge dele er tilladt, og i den foreliggende kode gør det ingen
forskel.
$hit++ opdaterer efter evt. andre operationer (som der her ikke
er nogen af). ++$hit opdaterer først.
for ($nr=0; $nr<10;) echo ++$nr;
(skriver tallene fra 1 til 10)
for ($nr=0; $nr<10;) echo $nr++;
(skriver tallene fra 0 til 9)
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Arne Feldborg (03-09-2007)
| Kommentar Fra : Arne Feldborg |
Dato : 03-09-07 13:28 |
|
Bertel Lund Hansen <unospamo@lundhansen.dk> skrev Mon, 3 Sep 2007
09:16:06 +0200
>Begge dele er tilladt, og i den foreliggende kode gør det ingen
>forskel.
>
Jammen det har du da ret i.
Problemet i det her tlfælde er vel egentlig, at ingen af de to
muligheder vil virke første gang - altså hvis filen ikke eksisterer
eller ikke allerede indeholder et tal. ?
Det gør derimod $hits = $hits + 1;
--
mvh, A:\Feldborg
Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/
| |
Peter Brodersen (03-09-2007)
| Kommentar Fra : Peter Brodersen |
Dato : 03-09-07 17:37 |
|
On Mon, 03 Sep 2007 14:28:05 +0200, Arne Feldborg
<feldborg@haunstrup.dk> wrote:
>Problemet i det her tlfælde er vel egentlig, at ingen af de to
>muligheder vil virke første gang - altså hvis filen ikke eksisterer
>eller ikke allerede indeholder et tal. ?
>
>Det gør derimod $hits = $hits + 1;
Jo, variablen vil blive oprettet on-the-fly i alle tre tilfælde og
rumme tallet 1.
PHP vil, igen i alle tre tilfælde, smide en notice om at man tilgår en
ikke-eksisterende variabel, hvis man har sat den til at rapportere
disse:
$ php -r '$hits++; print $hits;'
1
$ php -r '++$hits; print $hits;'
1
$ php -r '$hits=$hits+1; print $hits;'
1
$ php -d error_reporting=E_ALL -r '$hits++; print $hits;'
Notice: Undefined variable: hits in Command line code on line 1
1
$ php -d error_reporting=E_ALL -r '++$hits; print $hits;'
Notice: Undefined variable: hits in Command line code on line 1
1
$ php -d error_reporting=E_ALL -r '$hits=$hits+1; print $hits;'
Notice: Undefined variable: hits in Command line code on line 1
1
--
- Peter Brodersen
Kendt fra Internet
| |
Birger (03-09-2007)
| Kommentar Fra : Birger |
Dato : 03-09-07 10:14 |
|
"Arne Feldborg" <feldborg@haunstrup.dk> skrev i en meddelelse
news:t64nd31f5at9scjknsss93llvkh7i9f3c0@4ax.com...
> XUNIL <g.b.hansson@jubii.dk> skrev Sun, 02 Sep 2007 12:04:37 -0700
>
>>Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
>>den vil ikke danne
>>filen counter.dat på serveren. Hvis jeg selv ligger filen counter.dat
>>ned på serveren med værdien 1, så kan den godt læse filen, lægge 1 til
>>og skrive at der nu har været 2 besøg på min hjemmeside, men den vil
>>ikke selv danne counter.dat. jeg har prøvet både fputs og fwrite.
>>
>><?php // denne del virker
>>$fp = fopen('counter.dat', 'r');
>>$hits = fgets($fp, 1024);
>>fclose($fp);
>>
>>$hits++;
>>
>>print 'Der har været '.$hits.' visninger af denne side';
>>
>>$fp = fopen('counter.dat', 'w');
>>
> Parameteren 'w' er OK (det er faktisk den eneste rigtige).
>
> Problemet er tælleren
>
> $hits++;
>
> Skal være
>
> ++$hits;
>
> --
> mvh, A:\Feldborg
>
> Slægtsforskning og lokalhistorie i midt- vestjylland
> http://hammerum-herred.dk/
Det var selvfølgelig mig der byttede om.
http://www.php.net/manual/en/function.fopen.php
Birger
| |
XUNIL (03-09-2007)
| Kommentar Fra : XUNIL |
Dato : 03-09-07 10:40 |
|
On 2 Sep., 23:43, "Lars" <born...@tiscali.dk> wrote:
> "XUNIL" skrev
> Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
> den vil ikke dannefilen counter.dat på serveren.
> <?php // denne del virker
> $fp = fopen('counter.dat', 'r');
> $hits = fgets($fp, 1024);
> fclose($fp);
>
> $hits++;
>
> print 'Der har været '.$hits.' visninger af denne side';
>
> $fp = fopen('counter', 'w'); // denne del virker
> tilsyneladende ikke.
> fwrite($fp, $hits);
> fclose($fp);
> ?>
> hilsen xunil
>
> Hej.
> Ikke fordi jeg er nogen ørn til php, men jeg bruger nedenstående php-script
> til hits af siden. Så bruger jeg en anden tæller, der logger ip, dato mm.
> til besøgende pr.dag.
>
> <?php
> $count = file("hits_NAVN.txt");
> $count_gl = $count[0];
> $ny_count = ++$count_gl;
> $data = fopen("hits_NAVN.txt","w");
> $skriv = fwrite($data,$ny_count);
> fclose($data);
> echo "Hits i alt: $ny_count";
> ?>
> Fx. NAVN kan være hits_index.php, Så kan man bruge andre navne til andre
> sider.
> husk mount777 af hits_NAVN.txt på server
> husk i count.php : <?php include("STI/hits_NAVN.txt"); ?>
>
> Mvh. Lars Andersen
TAK, jeg skulle vidst bare lige sørge for de rigtige rettigheder til
filerne.
men nu er jeg blevet meget klogere, for nu virker det.
Glenn
| |
Bertel Lund Hansen (03-09-2007)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 03-09-07 17:04 |
|
XUNIL skrev:
> Følgende lille tæller er kopieret ind i min hjemmeside index.php, men
> den vil ikke danne filen counter.dat på serveren.
Nu har jeg testet det. På mit system kan den heller ikke danne en
fil.
Mystisk nok virker det hvis du ændrer
$hits++;
til
$hit+=1;
Der er åbenbart forskel på opførslen ved udefinerede variabler.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Peter Brodersen (03-09-2007)
| Kommentar Fra : Peter Brodersen |
Dato : 03-09-07 17:46 |
|
On Mon, 3 Sep 2007 18:04:20 +0200, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:
>Nu har jeg testet det. På mit system kan den heller ikke danne en
>fil.
Problemet er, at fgets() indlæser en linje og tilføjer en newline i
slutningen. Så man indlæser fx "1\n" og ikke bare "1"
Arne er lidt inde på problemstillingen. Her virker ++ rigtigt nok
ikke, mens $hits+=1 og $hits=$hits+1 vil virke.
I de to sidste tilfælde vil hits blive castet til en talværdi. Ved ++
vil det blot fejle.
Det er ikke nævnt så tydeligt i dokumentation dog.
Det kan løses ved fx blot at bruge file_get_contents() og
file_put_contents(), som ikke selv tilføjer linjeskift. Det vil også
gøre koden mere overskuelig:
<?php
$hits = file_get_contents('counter');
$hits++;
print 'Der har været '.$hits.' visninger af denne side';
$hits = file_put_contents('counter',$hits);
?>
--
- Peter Brodersen
Kendt fra Internet
| |
Martin (03-09-2007)
| Kommentar Fra : Martin |
Dato : 03-09-07 18:17 |
|
Peter Brodersen wrote:
> $hits = file_put_contents('counter',$hits);
Som dog kræver PHP 5 :)
| |
|
|