WebsiteBaker Support (2.13.x) > General Help & Support

PHP 8.5

<< < (2/2)

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