kostenloser Webspace werbefrei: lima-city


Fehler 500 bei Newsletteranmeldung

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    turmfalken-nikolai

    Kostenloser Webspace von turmfalken-nikolai

    turmfalken-nikolai hat kostenlosen Webspace.


    Hallo zusammen,

    leider hab ich mit Prorgammierung so gar nichts am Hut. Deswegen benötige ich Eure Hilfe.

    Auf meiner Website https://turmfalken-nikolai-spandau.de/turmfalkennews kann man sich für einen Newsletter anmelden. Den Code für das Newslettersystem hatte mir vor einigen Jahren "test42test" hier aus dem Forum geschrieben.

    Seit ein paar Tagen bekommen User die sich da anmelden wollen aber immer einen 500 Fehler angezeigt.

    Die Log Datei gibt folgende Fehlermeldung aus:

    [20-Apr-2025 22:19:44 Europe/Berlin] PHP Fatal error: Uncaught mysqli_sql_exception: Incorrect integer value: '' for column 'id' at row 1 in /home/webpages/lima-city/turmfalken-nikolai/wordpress_de-2017-01-13-72da53/Newsletter/Abo.php:37
    Stack trace:
    #0 /home/webpages/lima-city/turmfalken-nikolai/wordpress_de-2017-01-13-72da53/Newsletter/Abo.php(37): mysqli_query(Object(mysqli), 'INSERT INTO New...')
    #1 {main}
    thrown in /home/webpages/lima-city/turmfalken-nikolai/wordpress_de-2017-01-13-72da53/Newsletter/Abo.php on line 37

    Kann mir irgendwer erklären was das bedeutet?

    Der Code für die abo.php sieht folgendermaßen aus:

    <?php
    include "Var.php";//Holt sich die Einstellungen
    $Adresse=$_POST['Adresse'];//Liest die E-Mail Adresse aus, welche mit dem Formular gesendet wurde
    //Schutz vor SQL-Injection
    $Adresse=htmlspecialchars($Adresse);
    $Adresse=mysqli_real_escape_string($db,$Adresse);
    
    
    if (isset($Adresse)&&($Adresse!="")&&strlen($Adresse)>4){
        //Es wurde eine E-Mail Adresse angegeben
        //Speicher die Adresse in der Datenbank
        $sql="SELECT count(id) FROM Newsletter WHERE Adresse='$Adresse'";
        $result=mysqli_query($db,$sql);
        $result=mysqli_fetch_row($result)[0];
        if ($result=="0"){
            //Die E-Mail-Adresse steht noch nicht in der Datenbank
            $Passwort=sha1(sha1($Adresse)+rand(1000,10000));//Generiert das Passwort zum Abbestellen
            $sql="INSERT INTO Newsletter (id, Adresse, Passwort) VALUES ('','$Adresse','$Passwort')";
            $result=mysqli_query($db,$sql);//Speichert die Adresse in der Datenbank
            echo($MeldungAdresseGespeichert);
        }else{
            //Die E-Mail-Adresse steht bereits in der Datenbank
            //echo("Adresse schon $result mal vergeben");
            echo($MeldungBereitsVorhanden);
        }
        
        
    
    }else{
        //Es wurde keine E-MAil Adresse angegeben
        //Zeige das Formular an
        ?>
        <!DOCTYPE HTML>
        <html>
        <!-- #  #  #### -->
        <!-- #  #     # -->
        <!-- ####  #### -->
        <!--    #  #    -->
        <!--    #  #### -->
        <body bgcolor="#F3F4F5">
            <?php echo($TextVorEingabe);?>
            <br>
            <form method="post" action="Abo.php">
                <input type="email" name="Adresse" value="EMail-Adresse" onKeyUp="if (this.value=='42')alert('Die Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest!');" onFocus="select()"><br>
                <input type="submit" value="<?php echo($TextAbonnieren);?>">
            </form>
        </body>
        </html>
        <?php
    }
    ?>


    Wo steckt der Fehler?

    Herzliche Grüße aus Spandau mit Vorort Berlin




    Beitrag zuletzt geändert: 21.4.2025 8:56:35 von turmfalken-nikolai
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Was ich sehe ist, dass das Script versucht einen Wert in die Datenbank zu schreiben der dem Datentyp Integer entsprechen sollte. Und zwar in der Tabelle "Newsletter" in der Spalte "id".

    Verursacht wird dies vermutlich von dieser Zeile in der Abo.php:

    $sql="INSERT INTO Newsletter (id, Adresse, Passwort) VALUES ('','$Adresse','$Passwort')";


    Wenn das Script vorher funktioniert hat, würde ich in der Datenbank mal schauen, was da Sache ist in der Tabelle. Ich vermute die Spalte ID steht auf Autoincrement und vielleicht ist die Tabelle inzwischen vollgelaufen?
  4. Autor dieses Themas

    turmfalken-nikolai

    Kostenloser Webspace von turmfalken-nikolai

    turmfalken-nikolai hat kostenlosen Webspace.

    :wall: ich verstehe nur Bahnhof :shy: Wo kann ich das einstellen?

    https://turmfalken-nikolai-spandau.de/wp-content/uploads/2025/04/Screenshot-2025-04-21-090903.png



    Beitrag zuletzt geändert: 21.4.2025 9:19:39 von turmfalken-nikolai
  5. Steht bereits auf autoimkrement, so wie es sein sollte. Wie viele Einträge hat die Tabelle denn derzeit, also wieviele Zeilen?
  6. Autor dieses Themas

    turmfalken-nikolai

    Kostenloser Webspace von turmfalken-nikolai

    turmfalken-nikolai hat kostenlosen Webspace.

    27 Einträge, aber mein Patensohn hat mit grad noch n Tip gegeben in der Abo.php Er meinte ich soll mal bei der Passwortgenerierung das "$Passwort = sha1(sha1($Adresse) . rand(1000,10000));" ersetzen durch "$Passwort = bin2hex(random_bytes(16));" . Damit scheint es in der Tat auch zu funktionieren. Mehrere Versuche der Anmeldung funktionierten jetzt
  7. Perfekt
  8. Autor dieses Themas

    turmfalken-nikolai

    Kostenloser Webspace von turmfalken-nikolai

    turmfalken-nikolai hat kostenlosen Webspace.

    :prost: Dankeschön und frohe Restostern
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!