Page 1 of 1

Double-Opt-In Seite zeigt einen Fehler 500

Posted: Thu May 01, 2025 12:50 pm
by MarioH
Hallo,
bei meinem Blog wirft der Link zum Double-Opt-In einen 500er Fehler.

Bei eingeschaltetem Debugging kommt folgendes:

Code: Select all

== ERROR-REPORT (DEBUGGING ENABLED) ==
== (When you copy this debug output to a forum or other places, make sure to remove your username/passwords, as they may be contained within function calls) ==

#0 /homepages/41/d26790088/htdocs/serendipity/include/compat.inc.php(233): errorToExceptionHandler(1, 'Uncaught mysqli...', '/homepages/41/d...', 68)
#1 [internal function]: fatalErrorShutdownHandler()

Fatal Error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'integer) < (1744280862)' at line 2 in /homepages/41/d26790088/htdocs/serendipity/include/db/mysqli.inc.php:68 Stack trace: #0 /homepages/41/d26790088/htdocs/serendipity/include/db/mysqli.inc.php(68): mysqli_query() #1 /homepages/41/d26790088/htdocs/serendipity/include/functions_comments.inc.php(975): serendipity_db_query() #2 /homepages/41/d26790088/htdocs/serendipity/comment.php(41): serendipity_commentSubscriptionConfirm() #3 {main} thrown in /homepages/41/d26790088/htdocs/serendipity/include/db/mysqli.inc.php on line 68.
Ich habe eine MySQL 5.7 Datenbank.

Gruß
Mario

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Sat May 03, 2025 9:52 am
by onli
Lass dir am besten mal das SQL ausgeben, der stacktrace zeigt wo es gebaut wird. Evrl musst du dafür vor dem query mit exit das Skript beenden, damit es auch angezeigt wird, oder du schrejbst es in eine Datei.

(Bin gerade etwas gebunden)

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Sat May 03, 2025 10:02 pm
by onli
Okay, jetzt konnte ich auf den Code schauen. Laut der Fehlermeldung geht es um diesen Query: https://github.com/s9y/Serendipity/blob ... c.php#L975 . Samt den relevanten Zeilen oberndrüber:

Code: Select all

// Delete possible current cookie. Also delete any confirmation hashs that smell like 3-week-old, dead fish.
if (stristr($serendipity['dbType'], 'sqlite')) {
    $cast = "name";
} else {
    // Adds explicits casting for mysql, postgresql and others.
    $cast = "cast(name as integer)";
}

serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}options
                                WHERE okey LIKE 'commentsub_%' AND $cast < (" . (time() - 1814400) . ")");

Ich vermute, dass "cast(name as integer)" für MySQL einfach falsch ist, dort stattdessen "cast(name as SIGNED)" stehen müsste?

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Sun May 04, 2025 10:33 pm
by erAck
Ja. MySQL kennt cast as INTEGER nicht. Siehe auch https://dev.mysql.com/doc/refman/8.4/en ... ction_cast

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Tue May 06, 2025 6:51 pm
by MarioH
Ich habe den Code in meinem Blog umgeschrieben, jetzt funktioniert das Abonnement wieder.

Also muss da wahrscheinlich eine Abfrage drum, welche MySQL-Variante benutzt wird?

Und diese beiden Stellen sind dann wahrscheinlich auch betroffen:

Code: Select all

./functions_config.inc.php:455:        $cast = "cast(okey as integer)";
./functions_config.inc.php:483:        $cast = "cast(okey as integer)";
Gruß
Mario

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Tue May 06, 2025 8:36 pm
by erAck
Also muss da wahrscheinlich eine Abfrage drum, welche MySQL-Variante benutzt wird?
Leider ja. MySQL kennt INTEGER nicht, MariaDB kennt beides INTEGER und SIGNED, PostgreSQL kennt anscheinend SIGNED nicht, SQLite auch nicht.

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Tue May 06, 2025 9:45 pm
by MarioH
Für Sqlite gibt es schon eine Abfrage.

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Wed May 07, 2025 8:17 am
by onli
Genau, wir müssten die Abfrage für SQLite erweitern uns ein if für MySQL dazunehmen, oder zu einem case/switch umwandeln. Machst du einen PR auf? :)

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Wed May 07, 2025 5:08 pm
by MarioH
Der Code hat sich seid der 2.5 geändert, ich habe die Änderung in die db.inc.php eingebaut und einen PR gemacht.

Re: Double-Opt-In Seite zeigt einen Fehler 500

Posted: Wed May 07, 2025 9:53 pm
by onli
Super! Ich habe den PR direkt gemerged.