WinFuture-Forum.de: Methode Zur Fehlerunterdrückung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Methode Zur Fehlerunterdrückung


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 18:09

Hallo,
habe ein klenes Problem.

ich arbeite gerade mit der Funktion getimagesize() und habe ausversehen eine ungültige URl eingegeben. Daraufin kam ein Fehler, was ich ja verstehe.

Nur kommt die URL von einem Post, der ein Surfer eingibt und da kann ich ja nicht davon ausgehen dass auch wirklich eine gültige URl eingegeben wird.

Zitat

Warning: getimagesize(#http://www.xy.de/banner/banner.png) [function.getimagesize: failed to open stream: Invalid argument in partner.php on line 26


Nun habe ich auf php.net gelesen dass es False zurückgibt wenn die funktion fehlschlägt und es darauf in eine if-Funktion gepackt:
if(getimagesize($row->banner)){
$dim
=getimagesize($row->banner);
//echo "Alles gut!";
}else{
echo
"Fehler!";
}

Nur damit klappt es nicht, und so:
error_reporting(0);
$dim
=getimagesize($row->banner);
error_reporting
(1);
möchte ich es auf keinen Fall machen!

Wie kann ich es denn nun machen?

Edit:

Habs nun so: $dim=@getimagesize($row->banner);

Ist das die gängigste Methode?

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 04. August 2008 - 18:21

0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 04. August 2008 - 18:47

Mit @ die Fehler zu unterdrücken ist i.a. kein guter Stil, weil man so später bei Fehlern evtl. sehr lange suchen muss.

Für dein Problem böte sich ein eigener Error-Handler an, da getimagesize() zwei verschiedene Fehler wirft.

function imageSizeErrorHandler($fehlercode, $fehlertext, $fehlerdatei, $fehlerzeile) {
       
switch ($fehlercode) {
           
case E_NOTICE:
                        echo
"<strong>Keine valide Grafik!</strong> [$fehlercode] $fehlertext<br />\n";
                       
return true;
                       
break;
       
               
case E_WARNING:
                echo
"<strong>Datei nicht gefunden!</strong> [$fehlercode] $fehlertext<br />\n";
               
return true;
               
break;
       
               
default:
                       
return false; //PHP-Error-Handler benutzen
         
}
}

set_error_handler
('imageSizeErrorHandler'); //eigener Error-Handler

if ($dim = getimagesize($row->banner)) {
       
//weiter verarbeiten
}

restore_error_handler
(); //wieder PHP-Error-Handler aktivieren


Gruß,
Stefan
0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 19:53

Puh, nicht mein Gebiet.^^ Doch soweit klappt das aber das mach ich doch nicht für jede Funktion oder?

Gibt es Funktionen die irgendwie anfällig sind oder nur so behandelt werden also wie getimagsize()?

Lob an Diewie,
Toasterfraktion
0

#4 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 04. August 2008 - 20:16

Nein, das muss man nie machen. Ich habe diesen Error-Handler erstellt, weil er in deinem Fall die Fehler ausgeben kann, die durch getimagesize() auftreten können.
Normalerweise springt halt der PHP-Error-Handler ein (die ganz normalen Fehlermeldungen).

Weiterhin gibt es in PHP auch eine Ausnahmebehandlung (try-catch), mit der man eigene Fehlermeldungen ausgeben kann.

Gruß,
Stefan
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0