Thread Verfasser: husker
Thread ID: 1304
Thread Info
Es gibt 2 Beiträge zu diesem Thema, und es wurde 212 Mal angesehen.
 Thema drucken
Fehlerabfangen
husker
Hallöchen;

ich habe mir eine Statistik gebaut für einen Radiostream.
Nun habe ich folgendes Problem.

Wenn kein Hörer auf dem Stream lauscht, ist der Useragent leer und PHPFusion gibt eine Fehlermeldung aus.

Hier einmal die beiden Fehlermeldungen sowie die Zeilen im Code, die bei der Fehlermeldung dabei ist:

includes/shout_class.php
Undefined variable: arrlisteners Zeile: 144

includes/shout_class.php
Undefined index: USERAGENT Zeile: 134

Code 


134           for($i=0;$i<sizeof($this->_indexes['USERAGENT']);$i++) {
135               $arrlisteners[$i] = array(
136                                       "hostname"=>$this->_values[$this->_indexes['HOSTNAME'][$i]]['value'],
137                                       "useragent"=>$this->_values[$this->_indexes['USERAGENT'][$i]]['value'],
138                                       "underruns"=>$this->_values[$this->_indexes['UNDERRUNS'][$i]]['value'],
139                                       "connecttime"=>$this->_values[$this->_indexes['CONNECTTIME'][$i]]['value'],
140                                       "pointer"=>$this->_values[$this->_indexes['POINTER'][$i]]['value'],
141                                       "uid"=>$this->_values[$this->_indexes['UID'][$i]]['value'],
142                                   );
143           }
144           return($arrlisteners);



Wie kann ich abfangen, das wenn kein Hörer drauf ist, das ein Fehler produziert wird?

Gruß
Ralf aka Husker
 
David
Hallo Ralf,

ob eine Variable gesetzt ist, kannst du mit Hilfe von isset() prüfen.

Dein Code sollte wie gefolgt so fehlerfrei laufen.

Code 

// Standard Array erstellen um weitere Fehlermeldungen zu vermeiden
$arrlisteners = array();

// Prüfen ob USERAGENT existiert
if (isset($this -> _indexes['USERAGENT'])) {

   // Array wie gehabt befüllen
   for ($i = 0; $i < sizeof($this -> _indexes['USERAGENT']); $i++) {
        $arrlisteners[$i] = array(
            "hostname"    => $this -> _values[$this -> _indexes['HOSTNAME'][$i]]['value'],
            "useragent"   => $this -> _values[$this -> _indexes['USERAGENT'][$i]]['value'],
            "underruns"   => $this -> _values[$this -> _indexes['UNDERRUNS'][$i]]['value'],
            "connecttime" => $this -> _values[$this -> _indexes['CONNECTTIME'][$i]]['value'],
            "pointer"     => $this -> _values[$this -> _indexes['POINTER'][$i]]['value'],
            "uid"         => $this -> _values[$this -> _indexes['UID'][$i]]['value']
        );
    }
}

// Array zurückgeben
return (array)$arrlisteners;


Liebe Grüße, David Smile

PHP-Fusion Österreich
 
Springe ins Forum: