Avatar billede Slettet bruger
07. januar 2003 - 13:32 Der er 16 kommentarer og
2 løsninger

Localhost samt php

Hejsa..

Jeg har kørt php i et stykke tid nu, men jeg har opdaget lige nu her, at jeg ikke kan skrive til mine filer...

Jeg har et script som virker fint fint hvis det ligger online og filen har chmod 777. Ingen problem der. Men samme script kommer med warning og udfører ikke noget på min localhost. Den skriver:

Warning: fopen("../hits/resist.txt", "w") - Permission denied in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 15

Warning: fwrite(): supplied argument is not a valid File-Handle resource in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 16

Warning: fclose(): supplied argument is not a valid File-Handle resource in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 17

Dette er scriptet (det er ikke smukt kodet, det var det jeg ville til at lave om, men så kom der jo den der fejl)

<?
$cookie = nej;  // Hvis counteren kun skal én gang pr. computer, skal der stå "ja", ellers "nej"
$tid = 36288000;  // Tid der skal gå, før counteren tæller igen (hvis man bruger cookie)
$file = "../hits/resist.txt";  // Fil, som den skal gemme countertallet i

if($count == "yeps") {
} else {
if(file_exists($file)) { 
$fil = fopen($file,  "r"); 
$count = fread($fil, 8); 
fclose($fil); 
} else 
$count=0; 
$count++; 
$fil = fopen($file,  "w"); 
fwrite($fil, $count); 
fclose($fil);
if($cookie == "ja") {
setcookie("count","yeps",time()+$tid);
}
}
?>
Avatar billede sukos Juniormester
07. januar 2003 - 13:38 #1
Prøv med:

$file = "$_SERVER[DOCUMENT_ROOT]/hits/resist.txt"; //for ver 4.1.+

//For mindre versioner:

$file = "$HTTP_SERVER_VARS[DOCUMENT_ROOT]/hits/resist.txt";

og så ligger "hits" jo i roden af dit site.
Ligger den uden for roden, så prøv at skrive den fulde sti:

$file = "d:/hits/resist.txt";
Avatar billede Slettet bruger
07. januar 2003 - 13:44 #2
Hmm.. Så kan den ikke finde den?!?

Warning: fopen("konkurrencebutikken.dk_new/hits/resist.txt", "w") - No such file or directory in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 17

Warning: fwrite(): supplied argument is not a valid File-Handle resource in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 18

Warning: fclose(): supplied argument is not a valid File-Handle resource in D:\Homepage\Konkurrencebutikken.dk_New\colorresist\forside.php on line 19
Avatar billede Slettet bruger
07. januar 2003 - 14:07 #3
hmm. Det var et spm om ejerskab... Hvis jeg slettede filen og lod scriptet oprette den, er der ingen probs! men sikke da noget skod...

Det er jo lige meget når man sætte chmod 777, så der må vel være en anden metode på localhost også?
Avatar billede Slettet bruger
07. januar 2003 - 14:09 #4
...og hvis jeg så åbner filen nu og retter indholdet og kører scriptet igen, så virker det stadig.. så det kommer åbenbart an på hvem der har lavet den...
Avatar billede sukos Juniormester
07. januar 2003 - 14:14 #5
Ja, jeg er ikke lige helt klar over det er med rettigheder på filer, hvornår man skal chmod og hvilken værdi m.m. !

Men ellers, hvis jeg i min adresselinie nu skrev:

konkurrencebutikken_new.dk/colorresist/forside.php?count=yeps
vil scriptet jo også blive kørt?

Nu du alligevel vil lave det om, så brug $_POST $_GET $_COOKIE i stedet for bare $var
Avatar billede Slettet bruger
07. januar 2003 - 14:22 #6
Scriptet bliver automatisk kørt, men har sidder faktisk lige og studser over den der yeps ting...

Eh.. Hvis du kan lave scriptet om, så det tjekker om filen er der og hvis ja ligger 1 til tallet og hvis nej opretter den og skriver 1 i filen, så kan du få nogle flere point..
Avatar billede Slettet bruger
07. januar 2003 - 14:25 #7
Jeg har rettet det om til

<?
$file = "../hits/resist.txt";

if(file_exists($file))
{ 
$fil = fopen($file,  "r"); 
$count = fread($fil, 8); 
fclose($fil); 
}

else

{
$count=0; 
$count++; 
$fil = fopen($file,  "w"); 
fwrite($fil, $count); 
fclose($fil);
}

?>

Men så bliver det kun kørt hvis filen IKKE eksistere og så skriver den 1 i som den skal, men anden gang hvor den skal ligge 1 til, virker det ikke... (?)
Avatar billede sukos Juniormester
07. januar 2003 - 14:33 #8
Det du vil, er at lave en afstemning, hvor der sættes en cookie, så man kun kan stemme en f.eks. gang om dagen, og antal stemmer gemmes i en txtfil, som hvis den ikke findes, bliver den lavet, men findes den, åbnes den og der lægges en til værdien? Er det så'n?
Avatar billede Slettet bruger
07. januar 2003 - 14:42 #9
Næsten... Der skal bare ikke være en cookie, men hver gang filen køres, skal den ligge 1 til indholdet...
Avatar billede sukos Juniormester
07. januar 2003 - 14:44 #10
Altså et slags "statistik" over antal hits på siden?
Så hvis jeg sidder og reloader hele tiden, så opdateres hits?
Eller er det bruger online du vil vise?
Avatar billede Slettet bruger
07. januar 2003 - 14:46 #11
Jepsen.. Nej nej.. Det er sådan set antallet af gange siden vises.. uden cookies..
Avatar billede sukos Juniormester
07. januar 2003 - 14:49 #12
Men ellers, du åbner den jo kun for læsning, hvis filen eksisterer, (r)
for at skrive og læse den så brug r+
Avatar billede Slettet bruger
07. januar 2003 - 14:50 #13
Hvorfor så ikke bruge w? er det kun for evt oprettelse?
Avatar billede Slettet bruger
07. januar 2003 - 14:51 #14
Ok.. Så står der, men så ligger dne jo ikke 1 til?

<?
$file = "../hits/resist.txt";

if(file_exists($file))

{ 
$fil = fopen($file, "r+"); 
$count = fread($fil, 8); 
fclose($fil); 
}

else

{
$count=0; 
$count++; 
$fil = fopen($file, "w"); 
fwrite($fil, $count); 
fclose($fil);
}

?>
Avatar billede Slettet bruger
07. januar 2003 - 15:20 #15
Nå.. sådan.. hehe... Nu virker det da...

<?
$file = "../hits/resist.txt";

{ 
// Læser antal hits i filen

$fd = fopen($file, "r"); 
$count = fread($fd, 8); 
fclose($fd);

// Ligger en til count

$count++;

// Skriver antal hits i filen

$fd = fopen($file, "w"); 
fwrite($fd, $count); 
fclose($fd); 
}

else

{
// Hvis filen ikke existere, oprettes den
// og hits antallet sættes til 1

$count=1; 
$fd = fopen($file, "w"); 
fwrite($fd, $count); 
fclose($fd);
}

?>
Avatar billede sukos Juniormester
07. januar 2003 - 15:21 #16
Nåh, sidder sgu og nosser i det, og skal til at gå nu, men det er faktisk noget af det simpleste PHP! :O)
Har lavet det før, men lige nu er der sgu IKKE noget som vil som det skal.

Men lav selv et svar i dette spm, og prøv at oprette et nyt spm i php kategorien.

(Ved sgutte lige hvad jeg laver, men virke kan jeg sgu ikke få det til lige nu!) :O)
Avatar billede Slettet bruger
07. januar 2003 - 15:24 #17
Bah.. sådan her... Den var lige snippet i toppen..

<?
$file = "../hits/resist.txt";

if(file_exists($file))

{ 
// Læser antal hits i filen

$fd = fopen($file, "r"); 
$count = fread($fd, 8); 
fclose($fd);

// Ligger en til count

$count++;

// Skriver antal hits i filen

$fd = fopen($file, "w"); 
fwrite($fd, $count); 
fclose($fd); 
}

else

{
// Hvis filen ikke existere, oprettes den
// og hits antallet sættes til 1

$count=1; 
$fd = fopen($file, "w"); 
fwrite($fd, $count); 
fclose($fd);
}

?>

Og så deler vi bare pointene, så du ikke bliver snydt.. fair? Og så mange tak for hjælpen! :)
Avatar billede Slettet bruger
07. januar 2003 - 15:26 #18
Vi deler bare... Jeg ved hvad der sker i scriptet nu, så må jeg optimere det bedre på et andet tidspunkt.. :)

Så skal jeg nok lige smide en URL her i eller et nyt script, så man kan følge op på det, hvis man da vil det..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester