Thread Verfasser: husker
Thread ID: 1304
Thread Info
Es gibt 2 Beiträge zu diesem Thema, und es wurde 1394 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



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
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
David
Hallo Ralf,

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

Dein Code sollte wie gefolgt so fehlerfrei laufen.


// 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
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: