[TYPO3-german] Evtl. Fehler bei der Abfrage des Useragents in TYPO3

Michael Gnessner typo at epoche-napoleon.net
Sat Feb 17 14:25:12 CET 2007


Hallo zusammen,

Ich hoffe, daß ich den nachfolgenden Sachverhalt verständlich übermitteln kann, weil es hier wohl fundiertere um PHP- und T3-Core-Kenntnisse geht:

Ich habe mit tt_news einen RSS-Feed erzeugt. Die erzeugte XML-Datei ist auch problemlos über Firefox, IE 6&7 aufrufbar, ebenso konnte ich den Feed in die Google-Startseite einbinden.

Zusätzlich wollte ich den Feed aber nun auch über PHP auslesen und in eine "gestylte" Form bringen lassen. Das notwendige Script wurde mir durch einen befreundeten PHP-Programmierer freundlicherweise zur Verfügung gestellt und sollte in vorhandene HTML-Seiten, die nicht mit TYPO3 produziert wurden, eingebunden werden.

Dabei trat jedoch folgende Fehlermeldung auf:

-- SCHNIPP START --

Warning: stripos() expects parameter 1 to be string, NULL given in /usr/www/users/epocheh/typo3conf/ext/dam/compat/stripos.php on line 38

Warning: stripos() expects parameter 1 to be string, NULL given in /usr/www/users/epocheh/typo3conf/ext/dam/compat/stripos.php on line 38

Warning: stripos() expects parameter 1 to be string, NULL given in usr/www/users/epocheh/typo3conf/ext/dam/compat/stripos.php on line 38

Warning: stripos() expects parameter 1 to be string, NULL given in /usr/www/users/epocheh/typo3conf/ext/dam/compat/stripos.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/epocheh/typo3conf/ext/dam/compat/stripos.php:38) in /usr/www/users/epocheh/typo3src-4.0/typo3/sysext/cms/tslib/class.tslib_fe.p hp on line 2853

-- SCHNIPP ENDE --

Diese Fehlermeldung trat nicht mehr auf, wenn ich mit dem selben Script die per Browser erzeugte und gespeicherte XML-Datei einlesen ließ, oder von einer anderen Website aus einen Feed eingebunden habe.

Durch den Programmierer des Scripts wurden weitere "Untersuchungen" durchgeführt und er kam zu folgenden Ergebnis:

-- SCHNIPP START --

Ich habe das Problem nun gefunden. Das Problem tritt nicht nur beim Einlesen des Feeds auf, sondern beim Einlesen aller Seiten auf Epoche-Napoleon.

Das Problem ist, dass PHP einen User-Agent sendet, der offenbar nicht korrekt von TYPO3 interpretiert wird. Der User-Agent dient zur Identifizierung der Software, die Daten von einer Site abfruft. Meistens sind das Web-Browser, die über den User-Agent mitteilen, dass sie z.B. 

Firefox oder Opera sind.

Meine Vermutung ist nun, dass TYPO3 den User-Agent parst und dabei ein bestimmtes Format erwartet. Beim Zerlegen des User-Agents von PHP durch TYPO3 in seine Einzelteile bleiben dann Teile uninitialisiert (was dem Wert NULL entspricht). Wenn nun diese NULL-Werte einer Funktion wie stripos() übergeben werden (was offensichtlich passiert), dann beschwert sich diese Funktion darüber mit einer Warnmeldung.

Um meine Aussagen noch etwas zu präzisieren: Der User-Agent wird von PHP offenbar *gar nicht* gesendet. Anhand eines Testscripts habe ich herausgefunden, dass allein die Abfrage des User-Agents in PHP schon einen NULL-Wert liefert, wenn man die Datei über PHP einliest. Die Entwickler von TYPO3 sind anscheinend einfach davon ausgegangen, dass der User-Agent immer vorhanden ist und haben den Fall, dass er fehlen könnte, nicht berücksichtigt. Da es möglich ist, den User-Agent auch bei einem normalen Browser nicht zu senden, ist das schon etwas schlampig. 

Andererseits handelt es sich bei den Meldungen auch nur um Warnungen und und der Ablauf des Scripts dürfte dadurch nicht beeinträchtigt werden.

-- SCHNIPP ENDE --

Nach Deaktivierung der PHP-Fehlermeldungen - was sicherlich keine wirklich Lösung sein dürfte - läuft das Script nun wie gewünscht. 

Wenn ich die Fehleranalyse richtig verstanden habe, wird in TYPO3 der Useragent von PHP - welcher anscheinend nicht mitgesendet wird - mit einem NULL-Wert quittiert. Dies führt dann zu den oben erzeugten Warnmeldungen und verhindert ein fehlerfreies Ausführen des Scripts? 

Nun bin ich - wie gesagt kein Programmierer oder Entwickler - nicht ganz sicher, ob es sich um einen Fehler oder um ein Feature von TYPO3 handelt. Würde mich über eine Rückmeldung aus dem Liste freuen.

Beste Grüße

 
--
Michael Gnessner
Email: michael at epoche-napoleon.net
WEB: http://www.epoche-napoleon.net <http://www.epoche-napoleon.net/> 
 
 


More information about the TYPO3-german mailing list