Formulardaten in DB eintragen php 8

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    ]); 

    Comment


    • #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.

      Comment


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

        Comment


        • #5
          Formulardaten in DB eintragen php 8

          Originally posted by h3ll View Post
          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.

          Comment


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

            Comment


            • #7
              Formulardaten in DB eintragen php 8

              Originally posted by h3ll View Post
              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
              Last edited by phppower; 31-10-2021, 13:45. Reason: selbst gelöst

              Comment


              • #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

                Comment


                • #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?

                  Comment


                  • #10
                    Fehlermeldung

                    Originally posted by h3ll View Post
                    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

                    Comment


                    • #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.

                      Comment


                      • #12
                        Fehlermeldung

                        Originally posted by h3ll View Post
                        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

                        Comment


                        • #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) { 

                          Comment


                          • #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.

                            Comment


                            • #15
                              Formulardaten in DB eintragen php 8

                              Originally posted by h3ll View Post
                              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

                              Comment

                              Working...