Formulardaten in DB eintragen php 8

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formulardaten in DB eintragen php 8

    Hallo,
    ich stelle gerade einige meiner Projekte auf php 8 um und dazu waren einige Änderungen nötig. Die Abfragen habe ich soweit hin bekommen, aber mein nachfolgender Code trägt nichts in die Datenbank ein, gibt aber auch keine Fehlermeldung zurück. Wäre lieb wenn da einer mal kurz drüber schaut, vielleicht übersehe ich das etwas.


    PHP-Code:
    $bdd = new PDO('mysql:host='.$host.';dbname='.$db_name.''$username$password);
    if(!
    $bdd)
    {
        echo 
    'Datenbankverbindungsfehler.';
        exit();

    PHP-Code:
    if($_POST['Captcha'] == $_SESSION['rand_code'])
                {
    $sql $bdd->prepare("
    INSERT INTO pdd_forum_question (
      topic,
      detail,
      name,
      email,
      datetime
    ) VALUES (
      :topic,
      :detail,
      :name,
      :email,
      datetime
    )"
    );
    $sql->execute( array(
        
    'topic' => trim($_POST['topic']),
        
    'detail' => trim($_POST['detail']),
        
    'name' => trim($_POST['name']),
        
    'email' => trim($_POST['email']),
        
    'datetime' => date('Y-m-d H:i:s'strtotime 7200($_POST['datetime']))
    ) );            
    }
    echo 
    '<meta http-equiv="refresh" content="1; URL=index.php">'
    Danke schon mal

  • #2
    Du solltest die Fehlerausgabe aktivieren, damit Fehler nicht ignoriert werden.

    PHP-Code:
    $bdd = new PDO('mysql:host=' $host ';dbname=' $db_name$username$password, [
        
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]); 

    Kommentar


    • #3
      Formulardaten in DB eintragen php 8

      ok, danke für den Hinweis, hab es auch direkt ergänzt.



      2 Fehler konnte ich schon selbst entdecken
      PHP-Code:
      :datetime 
      da fehlte der : davor und

      PHP-Code:
      $_SESSION['CAPTCHA_CODE'


      löst aber leider mein Problem nicht.

      Kommentar


      • #4
        Und das Problem ist? Wenn es in die Datenbank nicht eingetragen werden kann, gibt es eine Fehlermeldung.

        Kommentar


        • #5
          Formulardaten in DB eintragen php 8

          Zitat von h3ll Beitrag anzeigen
          Und das Problem ist? Wenn es in die Datenbank nicht eingetragen werden kann, gibt es eine Fehlermeldung.

          das keine Fehlermeldung ausgegeben wird. Prüfe gerade ob es am Captcha liegt aber nicht mal da kommt ne meldung


          PHP-Code:
          ini_set('display_errors'1);
          error_reporting(E_ALL);
          include(
          'sys.php');

          //if($_POST['Captcha'] == $_SESSION['CAPTCHA_CODE'])
          //            {
          if(!empty($_POST["Eintragen"])) {
                
          $topic $_POST["topic"];
                
          $detail $_POST["detail"];
                
          $name $_POST["name"];
                
          $email $_POST["email"];
                
          $captcha $_POST["Captcha"];

                
          $captchaUser filter_var($_POST["Captcha"], FILTER_SANITIZE_STRING);

                if(empty(
          $captcha)) {
                  
          $captchaError = array(
                    
          "status" => "alert-danger",
                    
          "message" => "Bitte Captcha eintragen."
                  
          );
                }
                else if(
          $_SESSION['CAPTCHA_CODE'] == $captchaUser){
                  
          $captchaError = array(
                    
          "status" => "alert-success",
                    
          "message" => "Formulardaten wurden gesendet."
                  
          );
                } else {
                  
          $captchaError = array(
                    
          "status" => "alert-danger",
                    
          "message" => "Captcha ist leider Fehlerhaft."
                  
          );
                }
              }
              {
          $sql $bdd->prepare("
          INSERT INTO pdd_forum_question (
            topic,
            detail,
            name,
            email,
            datetime
          ) VALUES (
            :topic,
            :detail,
            :name,
            :email,
            :datetime
          )"
          );
          $sql->execute( array(
              
          'topic' => trim($_POST['topic']),
              
          'detail' => trim($_POST['detail']),
              
          'name' => trim($_POST['name']),
              
          'email' => trim($_POST['email']),
              
          'datetime' => date('Y-m-d H:i:s'strtotime 7200($_POST['datetime']))
          ) );            
          }

          echo 
          '<meta http-equiv="refresh" content="1; URL=index.php">'

          es scheint mir das es wirklich am captcha liegt


          PHP-Code:
          session_start();

            
          // Generate captcha code
            
          $random_num    md5(random_bytes(64));
            
          $captcha_code  substr($random_num06);

            
          // Assign captcha in session
            
          $_SESSION['CAPTCHA_CODE'] = $captcha_code;

            
          // Create captcha image
            
          $layer imagecreatetruecolor(7020);
            
          $captcha_bg imagecolorallocate($layer255255255);
            
          imagefill($layer00$captcha_bg);
            
          $captcha_text_color imagecolorallocate($layer000);
            
          imagestring($layer550$captcha_code$captcha_text_color);
            
          header("Content-type: image/jpeg");
            
          imagejpeg($layer); 

          egal was ich umbaue oder versuche zu verbessern, es kommt keine Fehlermeldung.

          Kommentar


          • #6
            Dann betreibe Debugging. Lass dir verschiedene Variablenwerte mit var_dump() ausgeben und überprüfe, ob sie das beinhalten, das du erwartest.

            Kommentar


            • #7
              Formulardaten in DB eintragen php 8

              Zitat von h3ll Beitrag anzeigen
              Dann betreibe Debugging. Lass dir verschiedene Variablenwerte mit var_dump() ausgeben und überprüfe, ob sie das beinhalten, das du erwartest.

              alles gelöst Danke
              Zuletzt geändert von phppower; 31.10.2021, 14:45. Grund: selbst gelöst

              Kommentar


              • #8
                Fehlermeldung

                Also ich hab folgende Fehlermeldung:

                Warning: session_start(): Session cannot be started after headers have already been sent in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 1

                Warning: Undefined variable $_SESSION in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 19

                Warning: Trying to access array offset on value of type null in /hp/bg/ae/cc/www/demoMitDb/php0476/mainpage.php on line 19

                Was diese bedeutet weiss ich in etwa nur frage ich mich wo der Fehler liegt?


                hier
                PHP-Code:
                <input class="textbox" type="text" name="inputurl" value="<?php if (!isset ($_POST['inputurl'])); ?>" style="border-radius: 5px;"/>
                oder hier
                PHP-Code:
                if(isset($_POST['submit']))
                {
                    {
                if(!empty(
                $_POST['inputurl']) && !empty($_POST['inputname']) && ($auth == $auth1))
                        {
                if(
                $_POST['Captcha'] == $_SESSION['rand_code'])
                            {
                $url $_POST['inputurl'];
                            if (
                preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i'$url))
                                {
                                    {
                if (!
                get_magic_quotes_gpc())
                                        {
                                            
                $_POST['inputurl'] = addslashes($_POST['inputurl']);
                                        } 
                zeile 5 wäre die besagte Zeile

                Kommentar


                • #9
                  Die Fehlermeldung sagt eigentlich schon alles. Vor dem Aufruf von session_start() darfst du keine Ausgabe machen.

                  Magic Quotes wurden 2012 aus PHP entfernt, warum behandelst du das immer noch? Außerdem ist addslashes() Käse. Es gibt keinen Grund das zu verwenden.

                  Hast du den Code irgendwo aus einer Mülltonne ausgegraben?

                  Kommentar


                  • #10
                    Fehlermeldung

                    Zitat von h3ll Beitrag anzeigen
                    Die Fehlermeldung sagt eigentlich schon alles. Vor dem Aufruf von session_start() darfst du keine Ausgabe machen.

                    Magic Quotes wurden 2012 aus PHP entfernt, warum behandelst du das immer noch? Außerdem ist addslashes() Käse. Es gibt keinen Grund das zu verwenden.

                    Hast du den Code irgendwo aus einer Mülltonne ausgegraben?

                    nein ich schreibe gerade datei für datei um soweit bin ich noch nicht ich will erstmal das session problem lösen und session_start() steht oben in erster zeile vor jeglicher Ausgabe. deswegen bin ich so verwundert.


                    die anderen sachen kommen jetzt nach und nach raus, arbeite mich halt von oben nach unten durch und ja aus Mülltonne zwar nicht aber ist eines meiner ganz alten Projekte die ich gerade umschreibe. ist jetzt die letzte Datei

                    Kommentar


                    • #11
                      Es findet in Zeile 1 von mainpage.php eine Ausgabe statt, die nicht stattfinden darf. Vermutlich sind das Leerzeichen, Zeilenumbrüche oder ein UTF8-BOM. Vor <?php darf rein gar nichts stehen. Kein einziges Byte, egal ob sichtbar oder unsichtbar.

                      Kommentar


                      • #12
                        Fehlermeldung

                        Zitat von h3ll Beitrag anzeigen
                        Es findet in Zeile 1 von mainpage.php eine Ausgabe statt, die nicht stattfinden darf. Vermutlich sind das Leerzeichen, Zeilenumbrüche oder ein UTF8-BOM. Vor <?php darf rein gar nichts stehen. Kein einziges Byte, egal ob sichtbar oder unsichtbar.

                        ich bin so ein Depp, da hätte ich wirklich selbst drauf kommen müssen. Die mainpage.php includiert ja in der index.php ergo es stehen Daten vor session_start () also muss das oben in die Index



                        oh man manchmal sieht man den wald vor lauter Bäumen nicht


                        aber Danke

                        Kommentar


                        • #13
                          Formulardaten in DB eintragen php 8

                          stehe mal wieder auf dem Schlau
                          das ist die Fehlermeldung: Invalid parameter number: number of bound variables does not match number of tokens in
                          nun hab ich das so wie ich es verstanden habe abzuändern aber der Fehler bleibt

                          PHP-Code:
                          // speichern
                                  
                          $aendern $db->prepare("UPDATE ".$prefix."zeitbanner Set banner = ':banner', url = ':url' WHERE id = '".$_GET["gid"]."'");
                                  
                          $insert_yes $aendern->execute(array(':banner' => $banner':url' => $url));
                                  if (
                          $insert_yes) { 

                          Kommentar


                          • #14
                            Du darfst Variablen nicht einfach so in SQL-Code einfügen. Das ist kann zu fehlerhaften SQL-Code führen und ist außerdem eine gravierende Sicherheitslücke.

                            Außerdem gehören um :banner und :url keine Hochkomma.

                            Kommentar


                            • #15
                              Formulardaten in DB eintragen php 8

                              Zitat von h3ll Beitrag anzeigen
                              Du darfst Variablen nicht einfach so in SQL-Code einfügen. Das ist kann zu fehlerhaften SQL-Code führen und ist außerdem eine gravierende Sicherheitslücke.

                              Außerdem gehören um :banner und :url keine Hochkomma.

                              Danke konnte es beheben

                              Kommentar

                              Lädt...
                              X