Hallo,
ich habe gerade nach dem Announce ein Gästebuch upgedated auf 2.7.2 von der Vorversion.
Nun habe ich einen Fehler:
Warning: Invalid argument supplied for foreach() in /xxx/typo3conf/ext/ve_guestbook/pi1/class.tx_veguestbook_pi1.php on line 694
Die Zeile 694 ist das besagte removeBadHTML - das war doch eigentlich der Auslöser für das Update, oder?
Was kann man da tun?
Stehe gerade vor dem gleichen Problem, bisher noch ohne Lösung.
Die Meldung erscheint nur der Seite, in der man einen neuen Eintrag vornehmen kann.
Es wird auch kein neuer mehr eingetragen.
Mhm, ich habe die foreach-Anweisung jetzt mal auskommentiert und damit die Sicherheitslücke wieder geöffnet ;-)
Immerhin wird ein paar Zeilen tiefer ja wieder strtoupper ud stipslashes ausgeführt.
Nach einer gescheiteren Lösung muss ich noch suchen.
Das liegt daran, dass das Array ($this->postvars) leer ist. Checkt einfach vorher, ob $this->postvars ein Array ist.
Solange keine Werte vom Formular übergeben werden, muss ja auch nichts geprüft werden.
<?php
$this->postvars = t3lib_div::GPvar('tx_veguestbook_pi1');
if(is_array($this->postvars)) { //NEU
foreach ($this->postvars as $key => $value) {
$value = $this->local_cObj->removeBadHTML($value, array());
$this->postvars[$key] = $value;
}
} //NEU
?>
Hatte ich dann auch schon raus, aber ganz vielen Dank für deine schnelle Lösung!
Da muss es aber trotzdem noch ein Update der Extension geben, ne?
Trotzdem, ich denke, das von dir hilft vielen erstmal, die jetzt direkt upgedatet haben und auf ihr Eintrags-Formular starren.
#giggle#
hoi ihrs!
Respekt... 🙂 Ihr seid ja schneller als die Liste 🙂
Da siehts so - aber kommt ja aufs gleiche raus 🙂
<?php
if (!empty($this->postvars)) {
> foreach ($this->postvars as $key => $value) {
> $value =
> $this->local_cObj->removeBadHTML($value, array());
> $this->postvars[$key] = $value;
> }
> }
?>
Und toll/vorbildlich, dass viele so schnell updaten 🙂
LG und noch eine bugfreie Woche..., ähm... "schöne"
Felix
Naja, aber was passiert wenn $this->postvars nicht leer ist aber auch kein array sondern z.B. ein String?
Sehr unwahrscheinlich aber es würde die if-Anweisung passieren und dann schmeißt die foreach-Schleife wieder den Fehler.
Wenn du mit is_array prüfst, würde ein String die if-Anweisung nicht passieren und ein leeres Array würde auch kein Fehler werfen, weil es ja ein Array ist
Ach ja, das schreibt Mittwald dazu 😃
VORSICHT bei einem Update der Erweiterung "Modern Guestbook", da es hierbei
aufgrund eines Programmierfehlers zu Fehlermeldungen auf der Website kommen
kann. Sollte diese bei Ihnen geschehen, empfehlen wir Ihnen die Datei
typo3conf/ext/ve_guestbook/pi1/class.tx_veguestbook_pi1.php
folgendermaßen anzupassen:
Zeile Code
<?php
692 $this->postvars = t3lib_div::GPvar('tx_veguestbook_pi1');
693
694 if(is_array($this->postvars)) {
695 foreach ($this->postvars as $key => $value) {
696 $value = $this->local_cObj->removeBadHTML($value, array());
697 $this->postvars[$key] = $value;
698 }
699 }
?>
Die Zeilen 694 und 699 sind dem Quellcode hinzu zufügen.