WebsiteBaker Support (2.13.x) > General Help & Support
PHP 8.5
ruebenwurzel:
Einen hab ich noch.
Auch das Modul cwsoft_anynews v 2.15.3 das ich noch im Einsatz habe wirft unter PHP 8.5 deprecated Meldungen aus. In der Anlage die gefixte Version der anynews_function.ph p.
Einfach ins Verzeichnis modules/cwsoft_anynews/code kopieren und die bestehende Datei überschreiben. Damit ist auch dieses Modul PHP 8.5 kompatibel. :-)
Matthias
sternchen8875:
--- Quote from: ruebenwurzel on January 26, 2026, 07:21:39 AM ---Hallo,
ChatGPT bietet folgendes an:
nach Zeile 59 einfügen:
--- Code: ---// PHP 8.5+: using null as an array offset is deprecated
$oldId = is_string($oldId) ? $oldId : '';
--- End code ---
Zeile 80 (neu 82) ändern:
--- Code: ---if ($oldId !== '' && isset($_COOKIE[$oldId])) {
--- End code ---
Passt das? In der Anlage gefixte Datei
--- End quote ---
Kann man so machen
Ich hatte in der vorbereiteten R26 zwar schon eine andere Lösung drin
--- Code: ---if (!empty($oldId) && isset($_COOKIE[$oldId]))
--- End code ---
aber deine ist selbsterklärend. Wichtig ist, das $oldId am Ende nicht null ist, es muß ein String sein
Wird so übernommen in die nächste Version
Admin Comment: Hab mir das noch einmal angeschaut und festgestellt, das eine Codezeile verschwunden ist und zwar die, die die angemeckerte Variable $oldId definiert
sternchen8875:
--- Quote from: ruebenwurzel on January 26, 2026, 07:43:36 AM ---Hallo,
Deprecated Meldung im Form
--- Code: ---Mon, 26 Jan 2026 06:26:42 +0000 [E_DEPRECATED] /modules/form/view.php:[158] from /framework/frontend.functions.php:[286] require "Non-canonical cast (double) is deprecated, use the (float) cast instead""
--- End code ---
Lösungsvorschlag ChatGPT:
modules/form/view.php ab Zeile 155:
--- Code: --- function new_submission_id() {
$submission_id = '';
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
- \srand((double)microtime()*1000000);
- $i = 0;
- while ($i <= 7) {
- $num = \rand() % 33;
- $tmp = \substr($salt, $num, 1);
- $submission_id = $submission_id . $tmp;
- $i++;
- }
+ for ($i = 0; $i < 8; $i++) {
+ $submission_id .= $salt[\random_int(0, \strlen($salt) - 1)];
+ }
return $submission_id;
}
--- End code ---
Kann man das so machen?
--- End quote ---
Hier gibt es gleich mehrfach etwas zu meckern an der alten Version
double() und float() waren beides Synonyme für das Gleiche, nämlich float(). Im Interesse besserer Codeverständlichkei t wurde double() nun abgeschafft.
Aber: auch srand() und rand() gelten als veraltet und stehen auf der Deprecated-Liste seit PHP 8.3, weil deren Ergebnisse durchaus vorhersehbar sind. Für sicherheitsrelevate Funktionen, (z.b. Token-Erstellung) sollten beide Funktionen nicht mehr verwendet werden. Bei uns gehts nur um eine ID :wink:
Wir könnten der Sache auch durch die Verwendung einer IDKey aus dem Wege gehen, ist aber nur Theorie im Moment
Deine Lösung behebt erst einmal die Meldung zur double()-Funktion
ungetestet wäre dies mein Favorit für die Zukunft, aber da braucht es noch ein wenig Testerei
--- Code: ---if (!\function_exists("new_submission_id")) {
function new_submission_id() {
$submission_id = '';
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
$saltLength = strlen($salt) - 1;
$i = 0;
while ($i <= 7) {
$num = random_int(0, $saltLength);
$submission_id .= $salt[$num];
$i++;
}
return $submission_id;
}
}
--- End code ---
Navigation
[0] Message Index
[*] Previous page
Go to full version