mboost-dp1

PHP: file_exists


Gå til bund
Gravatar #1 - BurningShadow
8. apr. 2006 21:38
Ok, jeg sidder og fatter totalt hat, så jeg håber at der er en eller anden der kan forklare mig hvad der foregår.


$new1 = $PHP_SELF." \n ".$_SERVER['QUERY_STRING'];
$new2 = "hjelpfranewzgutterne";
$filename = "$newX.php";
if (file_exists("$filename")) {
echo "Det virker $filename";
}else{
echo $filename;
}

Jeg har filen "hjelpfranewzgutterne.php" i mit web-dir.

Virker...
Når jeg har denne linje: $filename = "$new2.php"; så udskriver den teksten "Det virker hjelpfranewzgutterne.php".
Så langt så godt. Det må jo betyde at $filename er korrekt, og at file_exists kan finde filen hjelpfranewzgutterne.php på disken.

Problemet...
Når jeg har denne linje: $filename = "$new1.php"; så udskriver den teksten "hjelpfranewzgutterne.php".
Hvilket jeg ikke kan se det logiske i. Tekststrengen er korrekt, hvilket må betyde at $filename er iorden. Hvorfor er det så lige at file_exists ikke kan finde filen på disken, når den kunne i det ovenståendne eksempel, med den samme tekststreng?


Den eneste forskel er at new1 er smidt i enden af index.php (*1), mens new2 er en fast tekststreng.
Min første tanke var at jeg havde fucket det op, da jeg læste strengen, men så burde den jo ikke kunne udskrive den korrekte streng, så den mulighed er vel ikke-eksisterende?


*1 = http://mitdomæse.tld/index.php?hjelpfranewzgutterne
Gravatar #2 - Acro
8. apr. 2006 21:45
#1 BurningShadow:
Du sætter værdien af new1 til at være = $PHP_SELF." \n ".$_SERVER['QUERY_STRING']

Hvorfor i alverden tilføjer du et linjeskift? Dette kan du jo ikke se i dit output, da du sikkert outputter HTML.. Prøv at vise kilden og se, om det er fejlen..
Gravatar #3 - Acro
8. apr. 2006 21:49
#1 BurningShadow:
Der er vel heller ingen grund til, at $PHP_SELF indgår som en del af din streng. Det er vist noget med, at variablen ikke bruges i de seneste versioner af PHP*, men hvis den faktisk havde en værdi, så ville din funktion da altid fejle (medmindre du faktisk havde en fil, der hed (filnavn).php(værdien af din querystring).php).

*) Hvad ved jeg, jeg har aldrig kodet PHP.
Gravatar #4 - BurningShadow
8. apr. 2006 22:04
Takker :-)

Det var dog et suspekt sted at have et linjeskift. Jeg tror at det er et rigtigt godt argument for ikke at bruge kode-eksempler man finder på nettet...
Gravatar #5 - amokk
9. apr. 2006 21:20
$PHP_SELF var i gamle dage den absolutte sti til det PHP script man var ved at udføre, og skal ikke bruges i denne sammenhæng. Hvis man i dag har brug for samme data, findes de i $_SERVER["PHP_SELF"]
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login