PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rückgabe falscher Dateien


franzi
21.01.2010, 09:18:32
Hallo zusammen,
ich bin mir nicht sicher, ob ich hier im richtigen Forum bin, da ich nicht weiß, was den Fehler verursacht, aber ich probiers mal:

Ich hab ein Script, das per fopen() überprüft, ob ein Bild sich öffnen lässt. Wenn ja, soll es ausgegeben werden, wenn nicht wird ein Platzhalterbild ausgegeben.
soweit so gut.

Wenn ich nun aber das Bild 123456.jpg öffnen will (welches nicht existiert), sollte das Platzhalterbild erscheinen. Stattdessen wird aber ein Bild mit ähnlichem Namen, nämlich 12345.jpg ausgegeben.

Wie kann ich das unterbinden?

Vielen dank für eure Hilfe!

feuervogel
21.01.2010, 10:09:54
warum verheimlichst du uns den code, der das problem erzeugt?

franzi
21.01.2010, 10:25:45
Tschuldigung, hier der Code:


$bild='<img src="'.($value['GESCHLECHT']==1 ? '/_images/design/default_w.jpg':'/_images/design/default_m.jpg').'" class="kurator" />';

if(fopen('http://foto.mein-server.com/'.substr($value['WEBID'],0,2).'/'.$value['WEBID'].'.jpg',r)){
echo '<img src="http://foto.helios-repository.com/'.substr($value['WEBID'],0,2).'/'.$value['WEBID'].'.jpg" class="kurator" alt="'.$name.'" />';
}
else{
echo $bild;
}


Erzeugt wird dann beispielsweise bei einem User mit der WEBID 151395:


<img class="kurator" alt="Name" src="http://foto.mein-server.com/15/151395.jpg"/>


Das Problem ist, das Bild 151395.jpg existiert nicht. Angezeigt wird mir ein Bild, dass mit dem Namen 15139.jpg im gleichen Ordner liegt.

cortex
21.01.2010, 11:22:03
schau dir mal an, was die funktion substr( ) (http://de.php.net/manual/de/function.substr.php) macht.

cx

Xor
21.01.2010, 11:38:53
In dem soweit angegebenen Code kann ich keinen Fehler entdecken.
Du solltest dir folgende Dinge genauer anschaun:

Wird $value['WEBID'] korrekt beschrieben?
Könnte ein veralteter Wert in $value['WEBID'] stehen?
Bei Erfolgsfall von fopen den Handler wieder schließen.

Ich kann mir nicht vorstellen dass fopen bei nichtexistenz einer Datei die nächst ähnlichere nimmt...

schau dir mal an, was die funktion substr( ) macht.
Sie gibt den Teil eines strings zurück, ändert diesen aber nicht. Kann hierbei keine Fehlverwendung entdecken?

Mfg

franzi
21.01.2010, 12:21:02
Danke schonmal für die Hinweise.

Ich hab den Handler jetzt wieder geschlossen, das Problem besteht allerdings immernoch.
Der Wert von $value['WEBID'] ist jedoch richtig.
Im erzeugten HTML-Code:


<img class="kurator" alt="Name" src="http://foto.mein-server.com/15/151395.jpg"/>


erscheint ja auch die richtige und vor allem komplette WEBID. Sehen tue ich trotzdem das Bild 15139.jpg. fopen() liefert mir also kein false zurück.

cortex
21.01.2010, 12:21:06
Sie gibt den Teil eines strings zurück, ändert diesen aber nicht. Kann hierbei keine Fehlverwendung entdecken?

1. der op sollte sich schon selbst ein paar gedanken machen, nicht wahr?
2. denk mal über die parameter start und length nach

cx

Xor
21.01.2010, 12:30:58
Kann dir (mit gezeigtem Code) nicht erklären warum es sich so verhält.

Vlt solltest du auf is_readable (http://www.php.net/manual/de/function.is-readable.php) umsteigen?

Indyk
21.01.2010, 16:24:02
Es gibt ja durchaus server wo 404 abgefangen wird und custom fehlerseiten ausgegeben werden. Manchmal geht das soweit das bei tippfehlern vorschläge gemacht werden. Evtl. ist der server so config. das man statt auf der 404 landet sofort der erste vorschlag zurück gegeben wird?

was passiet denn wenn du per hand das bild versuchst aufzurufen?

franzi
21.01.2010, 16:44:04
Indyk, du hast Recht, wenn ich das Bild direkt aufrufe, werde ich auf das falsche Bild umgeleitet.
Hast du einen Tipp, wo man sowas ändern kann?

franzi
21.01.2010, 19:54:20
Problem gelöst.
Schuld ist das Apache Modul mod_spelling, dass zum Beispiel bei 1&1 standartmäßig aktiviert ist. Mit der Zeile

ChecKSpelling Off

in der .htaccess läßt sich das beheben.

Besten Dank nochmal an alle Helfer!