php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.01.2005, 19:58  
Gast
 
Beiträge: n/a
Standard File exists ?

Jaja, ich schon wieder

Kann aber hier in dem Forum und im Manual nix zufreiden stellendes entdecken... Es geht darum, die Existenz eines Bildes zu überprüfen, bevor es ausgegeben wird.

Anwendung: Forum (Avatars / posted Images)


Problem ist jetzt, das Methoden wie is_link(), file_exist() usw. nicht funzen, da die ja nur auf'm eigenen Server einsetzbar sind...

In einem vergleichbaren Thread in diesem Forum wurde die Konversation leider aprupt beendet,... so dass ich die Lösung dort nicht entnehmen kann
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.01.2005, 20:13  
Gast
 
Beiträge: n/a
Standard

Mit fopen versuchen, die Datei zum Lesen zu Öffnen, allerdings kann das auch von Deinem Server blockiert werden. Siehe dazu http://de3.php.net/manual/de/function.fopen.php

Gruß
phpfan
 
Alt 20.01.2005, 21:23  
Gast
 
Beiträge: n/a
Standard

habs mit

PHP-Code:
<?
if ( $handle=@fopen(PFAD"r") )
?>
gelöst... Problem nur, wenn's nicht existiert und der Server ne Fehlerseite generiert, aber besser geht es wohl nicht :/
 
Alt 21.01.2005, 03:28  
Gast
 
Beiträge: n/a
Standard

Zitat:
Problem nur, wenn's nicht existiert und der Server ne Fehlerseite generiert, aber besser geht es wohl nicht :/
Natürlich geht das besser!

Mit fsockopen einen HTTP HEAD Request absenden und den Statuscode auswerten:
http://test.php-help.info/fsockopen-3/ (Quelltext wird angezeigt)
 
Alt 21.01.2005, 13:05  
Gast
 
Beiträge: n/a
Standard

nun, korrekt, im Benchmark aber um das 25 fache langsamer (!)
wußte ich allerdings auch gestern noch nicht... Ich meine, in Foren gibtz ja sehr viele Bilder... Aber wenn man damit das Problem mit 'Fehlerseite = Bild existiert' gelöst bekommt, nehm ich wohl doch lieber das... ich schwanke noch,...
 
Alt 21.01.2005, 13:14  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von 2Fast4UeXtrem
nun, korrekt, im Benchmark aber um das 25 fache langsamer (!)
Na klar ist das langsamer, weil der fremde Webserver erst "geweckt" werden muß. Noch langsamer isses, die Resource mit fopen() abzufordern, weil man da kein timeout einstellen kann.

Deshalb macht man sowas nur einmal und geht danach kühn davon aus, daß der externe Link funktioniert. Oder man saugt den Kram einmal und speichert ihn lokal ab.
 
Alt 25.01.2005, 10:41  
Gast
 
Beiträge: n/a
Standard

Hmmm, also ich bekomme bei ein, zwei Bildern (echt nicht mehr :/ ) leider eine Fehlermeldung:
Code:
Warning: getimagesize(): stream does not support seeking
Bei dieser URL beispielsweise, wenn ich die mit
Code:
$handle=@fopen($treffer[1], "r")
anspreche, kommt dieser Fehler,...

http://dhc.clanintern.de/smilies/s_funnypost.gif

Der URL nach ein .GIF, aber leider ne Broken-Url, also wird man weitergeleitet zu ner Startseite von Clanintern.de... Das ist an sich ja nicht's schlimmes, denn das sagte ich ja oben schon: Wenn eine Fehlerseite generiert wird, ist mein Script aufgeschmissen (wird trotzdem ein Kasten mit rotem Kruezchen angezeigt)...

Nun ja, würde das also gerne mal mit fsockopen() probieren, aber das krieg ich nicht gebacken Oder kann mir halt wer sagen, was der denn hat, daß der zu der Fehlermeldung kommt, obwohl er bei anderen Seiten, die auch eine Fehlerseite generieren, den nicht hat ?



PHP-Code:
<?php
function show_thumbnail($treffer)
{
     if ( 
$handle=@fopen($treffer[1], "r") ) 
     {
      
fclose($handle); 

     
$max 250;
       
$size getimagesize($treffer[1]);

       if ( 
$size[0] <= $max && $size[1] <= $max)
       {
           
$ret '[img]'.$treffer[1].'[/img]';
        }
       else
       {
           
$k = ( $size[0] >= $size[1] ) ? $size[0] / $max $size[1] / $max;
           
$ret ' <a href="javascript:;" onClick="window.open(\'image.php?img=';
          
$ret .= $treffer[1].'\',\'\',\'width='.$size[0];
          
$ret .= ',height='.$size[1].'\')">';
          
$ret .= '[img]'.$treffer[1].'[/img]</a> ';
      }
   echo 
$ret;
   }
}

...

    
$inhalt preg_replace_callback("|\<img src=\"(.*?)\"(.*?)\>|""show_thumbnail"$inhalt);

?>
 
Alt 25.01.2005, 10:52  
Gast
 
Beiträge: n/a
Standard

Na ich würd sagen wenn das bild nicht existiert, dann kannst du die mit getimagesize zu bestimmende Höhe und Breite nicht bestimmen, und wennn dies der Fall ist gibst du eben kein Bild aus, oder?
 
Alt 25.01.2005, 10:56  
Gast
 
Beiträge: n/a
Standard

) Korrekt, also sehe ich das richtig, der läuft in den ersten IF-Zweig rein, weil die Datei gefudnen wird (pseudo, denn es wird nur die fehlerseite gefunden) ?

Dann habe ich zwei Probleme:

1.] Wie kann ich die Zeile 'getimagesize' so schütze, dass sie nur durchlaufen wird, wenn es sich nicht um eine Fehlersiete handelt? *g* also quasi nur bei jpg, gif, jpeg, png... oder halt andere weg (kann ich zB Fragen: WENN getimagesize *keinen error gibt*,d ann amch dat...)

2.] Wieso kommt dieser Fehler nicht bei ANDEREN Url's, wo Fehlerseiten generiert werden?
 
Alt 25.01.2005, 11:30  
Gast
 
Beiträge: n/a
Standard

Auszug aus selfphp:

Zitat:
Mit getimagesize() kann man verschiedene Informationen über ein Bild
(filename) ermitteln. Dieser Befehl benötigt nicht die GD-Bibliothek.
Das Ergebnis wird in einem Array zurückgegeben, das folgende Informationen
enthält:
Breite des Bildes
Höhe des Bildes
Grafik-Typ - 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF
HTML-Zeichenkette - "height=xx width=xx"
Wenn Sie im optionalen Parameter imageinfo ein Array übergeben, trägt die
Funktion bei einigen Grafiktypen zusätzliche Daten in dieses Array ein, z.B.
Dateiinformationen bei JPEG-Bildern.
--> getimagesize funktioniert eh von Haus aus nur mit gif/jpg/png/swf, wenn du darauf mit der ersten frage hinaus wolltest.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
session_start fehler? no such file found? seejay PHP Tipps 2006 11 10.01.2006 09:26
[Erledigt] Exim --- Mailserver empfängt keine Mails Server, Hosting und Workstations 4 23.12.2005 18:28
Wie kann ich ein Zip File mit PHP erstellen?? PHP-Fortgeschrittene 4 10.10.2005 23:04
Seite einlesen || file() PHP Tipps 2005-2 16 07.10.2005 20:32
Probleme beim generieren einer PDF File PHP Tipps 2005-2 10 05.09.2005 10:12
filemtime() auf zweitem Server File prüfen? tekknotrip PHP Tipps 2005-2 2 19.08.2005 16:48
File nur temporär erstellen PHP Tipps 2005-2 2 02.08.2005 21:39
libmysqlclient.so.10 is needed Datenbanken 11 20.06.2005 15:27
[Erledigt] Unix file lesen? PHP-Fortgeschrittene 15 08.06.2005 18:05
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
file umbenennen - welcher php befehl? kain PHP Tipps 2004 4 20.08.2004 02:47
pHp Shop in Homepage einbinden !!! ABER WIE ??? PHP Tipps 2004 1 15.08.2004 19:23
ausgefuehrtes php file als html speichern PHP Tipps 2004 8 28.07.2004 17:59
file(); problem PHP Tipps 2004 3 12.07.2004 11:51
file + array und fwrite PHP Tipps 2004 3 03.07.2004 14:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php file exists, file exist php, selfphp file exist, file exists php, php file exist, php url exists, selfphp file exists, php if array file exists, if bild exists, javascript fileexists, file exists php url, php file exists url, selfphp if file exist, php fileexist, javascript file exists, php img exist, bild exists javascript, file exists während erstellen php, selfphp exists, php file exists \{jpg,\

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.