/ 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
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 :)

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste