WBCE CMS – Way Better Content Editing.
You are not logged in.
Folgender Code im Code2 Abschnitt:
$ts = "";
settype($ts, 'string');
//$ts = $_REQUEST[ts];
if($_GET['ts'] == false or $_GET['ts'] == "") {
$ts = "aktuell";
settype($ts, 'string');
} else {
$ts = $_GET['ts'];
settype($ts, 'string');
}
echo "debug: ".$ts."<br />";
echo "debug: ".is_array($ts) ? 'Array <br />' : 'not an Array<br />';Das settype habe ich erst mal testhalber eingesetzt, ändert aber nix.
In $ts wird ein Timestamp übergeben (linux Timestamp)
Aufruf: /uebersicht.php?ts=1704360000
oder /uebersicht.php (wenn aktuell)
Ausgeworfen wird ein Array.
Errorlog:
2024-01-04T09:17:12+00:00 [Warning] /temp/modules/code2/section_55.php.inc:[5] from /framework/frontend.functions.php:[391] "Undefined array key "ts""
Der Parameter wird offensichtlich als array definiert, sollte er aber nicht.
Desweiteren sind hinter dem ts 2 Hochkommas, auch komisch.
Was kann da schuld sein?
Das sollte ja ein String sein.
Das phänomen tritt erst seit php 8.2 auf.
Noch ein Thema:
2024-01-03T17:51:44+00:00 [Exception] There was an unknown exception: Undefined constant "ts" in line (4) of /temp/modules/code2/section_55.php.inc
erscheint, wenn in der $_GET Abfrage lautet: $_GET[ts], da nimmt er offensichtlich das ts ohne Hochkomma als Konstante an.
Sollte ja auch nicht sein....
Offline
Versuch mal so
$ts = "";
settype($ts, 'string');
//$ts = $_REQUEST[ts];
if ( !isset($_GET['ts']) || $_GET['ts'] == "" ) {
$ts = "aktuell";
settype($ts, 'string');
} else {
$ts = $_GET['ts'];
settype($ts, 'string');
}
echo "debug: ".$ts."<br />";
if (is_array($ts)) { echo "ts ist ein Array"; } else { echo "ts ist kein Array"; }Wir Benötigen: Cents, Euros... jetzt spenden!
Offline
Wird interessant:
if (is_array($ts)) {
echo "ts ist ein Array";
} else {
echo "ts ist kein Array";
}
echo "debug: ".is_array($ts) ? 'Array <br />' : 'not an Array<br />';debug: aktuell
ts ist kein ArrayArray
Wenn ich die zweite Zeile auskommentiere kommt nix, wenn ich sie dazu füge den obigen output...
Offline
Offline
tja, genau das ? haben wir derzeit auch....
Der Kurzbefehl vs Normalabfrage ergeben unterschiedliche Ergebnisse....
Und ohne dem Kurzbefehl bekomme ich gar nichts zurück.
Ich check das später noch weiter
Offline
OK erster Fehler erkannt:
echo "debug: ".is_array($ts) ? 'Array <br />' : 'not an Array<br />';mag er nicht, muss
echo "debug: ";
echo is_array($ts) ? 'Array <br />' : 'not an Array<br />';heißen, ein string vor der Abfrage mag er nicht.
debug ts content: aktuell
ts ist kein Array
debug: not an Array
Trotzdem immer noch die Fehlermeldung im Errorlog...
WBCE Version: 1.6.1
Tag: 1.6.1
PHP Version: 8.2.7
Kann es sein, dass das System irgenwie ein Problem mit der PHP Version hat, oder die installierte php Version Buggy ist?
Offline
Wo kommt in der Warning eigentlich das /temp/ her?
Wird da was gecached?
Offline
Kann es sein, dass das System irgenwie ein Problem mit der PHP Version hat, oder die installierte php Version Buggy ist?
Das ist kein WBCE-Problem.
Trotzdem immer noch die Fehlermeldung im Errorlog...
Hattest Du auch die if-Abfrage wie von mir gepostet angepasst?
if ( !isset($_GET['ts']) || $_GET['ts'] == "" ) {Wo kommt in der Warning eigentlich das /temp/ her?
Wird da was gecached?
Nicht gecached, aber code2 legt für jeden Abschnitt eine section_xx.php.inc in /temp/modules/code2/ an.
Last edited by florian (04.01.2024 18:58:31)
Wir Benötigen: Cents, Euros... jetzt spenden!
Offline
berny
OK, das habe ich übersehen
Angepasst, funktioniert erst mal !
Offline
Interessant ist auch:
list - each geht nicht mehr, die klassische foreach Schleife geht.
Ein array in einer URL ergibt warning, ausser dieser wird schön getrennt übergeben &x[0] =a&x[1]=b& usw.
Haben jetzt erst mal die meisten Fehler und warnings ausgemerzt.
20 Jahre alte scripte jedesmal auf die neue php Version anpassen ist oft mühsam....
@florian: Danke nochmal!
Last edited by berny (06.01.2024 09:10:24)
Offline
Pages: 1