Ankündigung

Einklappen
Keine Ankündigung bisher.

Mein Formular übergibt keine Daten mehr.

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

  • Mein Formular übergibt keine Daten mehr.

    Hey,

    Ich habe ein kleines Problem mit meinem Benutzer Bearbeitungs Formular & Script. Ich habe ein Formular wo ich die Daten eines Benutzers bearbeiten kann.
    Das Sendet aber keine Daten mehr weiter. Zumindest kommt im Ziel Script nichts mehr an.

    Ich habe euch mal beide Sourcen angehangen.
    PHP-Code:
    <?php
    //User Edit
    } else if (isset($_POST['submit_edit'])){
    require 
    'dbh.inc.php';
    $url '../user.php?a=';

    $id $_POST['id'];
    $username $_POST['userName'];
    $email $_POST['userEmail'];
    $access $_POST['userAccess'];
    $mailto $_POST['userSecondEmail'];
    $quote $_POST['userQuote'];

    echo 
    $_POST['id'] . '<br/>' $_POST['userName'] . '<br/>' $_POST['userEmail'] . '<br/>' $_POST['userAccess'] . '<br/>' $_POST['userSecondEmail'] . '<br/>' $_POST['userQuote'] . '<br/>';

    if(!
    filter_var($emailFILTER_VALIDATE_EMAIL)) {
    header("Location: $url'invalidmail');
    exit();
    }
    else if(!
    filter_var($mailtoFILTER_VALIDATE_EMAIL)) {
    header("Location: $url'invalidmailto');
    exit();
    }
    else if(!
    preg_match("/^[\w\- ]*$/"$username)) {
    header("Location: $url'invalidusername');
    exit();
    }
    else {
    $sql "SELECT username FROM users WHERE id='" $id "'";
    $stmt mysqli_stmt_init($conn);
    if(!
    mysqli_stmt_prepare($stmt$sql)){
    header("Location: $url'danger_sqlerror');
    exit();
    }
    else {
    mysqli_stmt_bind_param($stmt"s"$username);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    $resultCheck mysqli_stmt_num_rows($stmt);
    if(
    $resultCheck == 0){
    header("Location: $url'info_usernametaken');
    exit();
    }
    else {
    $sql "UPDATE users SET username=?, email=?, access=?, quote=?, mailto=? WHERE id=?";
    $stmt mysqli_stmt_init($conn);
    if(!
    mysqli_stmt_prepare($stmt$sql)){
    header("Location: $url'danger_sqlerror1');
    //printf("Error: %s.\n", $stmt->error);
    exit();
    }
    else {
    mysqli_stmt_bind_param($stmt"ssissi"$username$email$access$quote$mailto$id);
    mysqli_stmt_execute($stmt);
    header("Location: $url'danger_sqlerror2');
    //printf("Error: %s.\n", $stmt->error);
    if( !mysqli_stmt_execute($stmt)){
    header("Location: $url'danger_sqlerror3');
    //printf("Error: %s.\n", $stmt->error);
    }else{

    $empfaenger $email;
    $betreff "Deine Zugangsdaten wurden Bearbeitet.";
    $from "From: ... <...>\r\n";
    $from .= "Reply-To: ...\r\n";
    $from .= "Content-Type: text/html\r\n";
    $text "...";
    mail($empfaenger$betreff$text$from);

    header("Location: $url'success_edit');
    }
    exit();
    }
    }
    }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
    }
    ?>
    HTML-Code:
    <form method="post" action="includes/user.inc.php">
    <input type="hidden" name="id" value="<?= htmlspecialchars($content->id, ENT_COMPAT, 'utf-8') ?>">
    <div id="smartwizard-left" class="sw-vertical-left">
    <ul>
    <li><a href="#step-l-1">
    <h6>Grundlegendes</h6>
    <p class="m-0">Name, E-Mail & Passwort</p>
    </a></li>
    <li><a href="#step-l-2">
    <h6>Berechtigung</h6>
    <p class="m-0">Berechtigung des Benutzers</p>
    </a></li>
    <li><a href="#step-l-3">
    <h6>Weiteres</h6>
    <p class="m-0">Weitere Einstellungen</p>
    </a></li>
    <li><a href="#step-l-4">
    <h6>Zusammenfassung</h6>
    <p class="m-0">Eine kurze Information</p>
    </a></li>
    </ul>
    <div>
    <div id="step-l-1">
    <h5>Grundlegendes</h5>
    <hr>
    <div class="form-group">
    <label for="userName">Benutzername</label>
    <input type="text" class="form-control" id="userName" placeholder="Benutzername" required="" value="<?= htmlspecialchars($content->username, ENT_COMPAT, 'utf-8') ?>">
    </div>
    <hr/>
    <div class="form-group">
    <label for="userEmail">E-mail Adresse</label>
    <input type="email" class="form-control" id="userEmail" aria-describedby="userEmail" placeholder="E-mail Adresse" required="" value="<?= htmlspecialchars($content->email, ENT_COMPAT, 'utf-8') ?>">
    <small id="userEmail" class="form-text text-muted">Der Benutzer erhält auf diese E-mail Systemnachrichten.</small>
    </div>
    <div class="form-group">
    <label for="userPassword">Passwort</label>
    <input type="password" class="form-control" id="userPassword" placeholder="Passwort" value="" disabled="">
    </div>
    </div>
    <div id="step-l-2">
    <h5>Berechtigung</h5>
    <div class="form-group">
    <label for="userAccess">Rang Auswählen</label>
    <select class="form-control" id="userAccess">
    <option value="1" <?php if($content->access == 1){echo 'selected';} ?> >Default</option>
    <option value="3" <?php if($content->access == 3){echo 'selected';} ?> >Verifiziert</option>
    <option value="4" <?php if($content->access == 4){echo 'selected';} ?> >Uploader</option>
    <option value="5" <?php if($content->access == 5){echo 'selected';} ?> >News Author</option>
    <option value="6" <?php if($content->access == 6){echo 'selected';} ?> >Author</option>
    <option value="7" <?php if($content->access == 7){echo 'selected';} ?> >Moderator</option>
    <option value="8" <?php if($content->access == 8){echo 'selected';} ?> >Administrator</option>
    <?php if($content->access == 9){echo '<option value="9" selected>Developer</option>';} ?>
    </select>
    </div>
    </div>
    <div id="step-l-3">
    <h5>Weitere Einstellungen</h5>
    <hr>
    <div class="form-group">
    <label for="userSecondEmail">E-mail Adresse [Sichtbar]</label>
    <input type="email" class="form-control" id="userSecondEmail" aria-describedby="userSecondEmail" placeholder="E-mail Adresse" value="<?= htmlspecialchars($content->mailto, ENT_COMPAT, 'utf-8') ?>">
    <small id="userSecondEmail" class="form-text text-muted">Diese Email ist für alle Benutzer Sichtbar</small>
    </div>
    <div class="form-group">
    <label for="userQuote">Zitat</label>
    <input type="text" class="form-control" id="userQuote" aria-describedby="userQuote" placeholder="Zitat..." value="<?= htmlspecialchars($content->quote, ENT_COMPAT, 'utf-8') ?>">
    </div>
    </div>
    <div id="step-l-4">
    <h5>Information</h5>
    <hr>
    <h6>Wichtig</h6>
    <p>Der Benutzer wird über die hinterlegte Email Adresse über die Änderungen und neuen Zugangsdaten Informiert. Bitte stelle sicher dass die Email erreichbar ist und nicht von dritten eingesehen werden kann.</p>
    <h6 class="mt-3">Formular Information</h6>
    <p>Bitte stelle sicher dass alle Felder vollständig ausgefüllt sind bevor du das Formular absendest.</p>
    <hr/>
    <div class="form-group">
    <div class="form-check">
    <input class="form-check-input" type="checkbox" id="userCheck" required="">
    <label class="form-check-label" for="userCheck">Ich habe die obenstehenden Hinweise gelesen und stimme zu.</label>
    </div>
    </div>
    <button type="submit" class="btn btn-primary" name="submit_edit">Absenden</button>
    <button type="submit" class="btn btn-danger" name="submit_edit_cancel">Abbrechen</button>
    </div>
    </div>
    </div>
    </form>

  • #2
    Hi Nightland Driver

    Es ist jetzt kurz nach Mitternacht, daher habe ich es nur 'überflogen'. Wenn ich morgen mehr Zeit habe sehe ich mal genauer hin...

    Du schreibst: 'Zumindest kommt im Ziel Script nichts mehr an'

    Kannst du da noch paar Details liefern? Ist überhaupt etwas drin in $_POST ??? Was sagt ein var_dump auf $_POST?
    ( var_dump($_POST); )

    Vorab: Dein php beginnt mit '} else if (isset...', Ein einleitendes 'if (was_auch_immer) {machwas} vor dem elseif sehe ich nicht... ???

    Du benutzt 'userName' in 'CamelCase'-Schreibweise, aber im Formular verwendest du 'username' wo die ID 'userName' ist.
    Zitat: value="<?= htmlspecialchars($content->username, ENT_COMPAT, 'utf-8') ?>">
    Case-sensitive ???

    Füge dein <form...>-Tag unmittelbar vor dem ersten <label> ein. Die <h>'s, <p>'s und <div>'s dazwischen haben mit dem <form>Tag
    nichts zu tun (Ist sicher keine Fehlerursache, aber W3-konformer...)

    Nach jeder Überprüfung der Formularinhalte nutzt du bei 'false' die Anweisung 'header'. Das kann man so machen, aber das danach folgende 'exit()' wird nie erreicht. Entweder er folgt header und ist 'raus' oder es greift der 'else'-Block. PS: Wenn kein Argument mit 'exit' übergeben wird entfällt die leere Klammer (). 'exit' ist ein Sprachkonstrukt. Ferner wird 'exit' grundsätzlich nicht in if-Blöcken verwendet sondern in Schleifen (wobei 'break' die bessere Lösung wäre). Sollte das if in einer Funktion verwendet werden dann 'return' verwenden.

    Also prüf mal mit var_dump dein $_POST und gib mal durch was dabei rauskommt...

    Gruß...

    Kommentar


    • #3
      Ich weiß nicht, ob das der Knackpunkt ist, aber es fällt auf, dass bei den meisten Eingabefeldern das name-Attribut nicht gesetzt ist. Daher werden sie nicht als POST-Parameter übertragen.

      Kommentar


      • #4
        Zitat von Sempervivum Beitrag anzeigen
        Ich weiß nicht, ob das der Knackpunkt ist, aber es fällt auf, dass bei den meisten Eingabefeldern das name-Attribut nicht gesetzt ist. Daher werden sie nicht als POST-Parameter übertragen.
        Funktioniert, manchmal übersieht man dann doch die kleinsten details. ich war mir fast sicher dass ich name wieder gesetzt hatte.

        Kommentar


        • #5
          Jetzt habe ich die Bearbeitung am Laufen und jetzt wird es beim Registrieren über das selbe Formular nicht mehr in die Datenbank eingetragen.
          Vielleicht möchtet ihr euch das nochmal ansehen, ich bekomme keinen Fehler zurück. und den last_activity insert führt er auch aus, die Mail geht auch raus aber der Benutzer wird nicht in die DB eingetragen.

          PHP-Code:
          if(isset($_POST['submit_register'])){

          require_once 
          "dbh.inc.php";
          require 
          'functions.inc.php';
          $url '../user.php?a=';

          $username $_POST['userName'];
          $email $_POST['userEmail'];
          $access $_POST['userAccess'];
          $mailto $_POST['userSecondEmail'];
          $quote $_POST['userQuote'];

          $password generatePassword(822true);
          $hashedPwd password_hash($passwordPASSWORD_DEFAULT);

          if(empty(
          $username) || empty($email) || empty($access)) {
          header("Location: $url'info_empty');
          exit();
          }
          else if(!
          filter_var($emailFILTER_VALIDATE_EMAIL)) {
          header("Location: $url'info_invalidmail');
          exit();
          }
          else if(!
          preg_match("/^[\w\- ]*$/"$username)) {
          header("Location: $url'info_invalidusername');
          exit();
          }
          else {
          $sql "SELECT username FROM users WHERE username=?";
          $stmt mysqli_stmt_init($conn);
          if(!
          mysqli_stmt_prepare($stmt$sql)){
          header("Location: $url'danger_sqlerror');
          exit();
          }
          else {
          mysqli_stmt_bind_param($stmt"s"$username);
          mysqli_stmt_execute($stmt);
          mysqli_stmt_store_result($stmt);
          $resultCheck mysqli_stmt_num_rows($stmt);
          if(
          $resultCheck 0){
          header("Location: $url'info_usernametaken');
          exit();
          }
          else {
          $sql "INSERT INTO users (username, email, password, access, quote, mailto) VALUES (?, ?, ?, ?, ?, ?)";
          $stmt mysqli_stmt_init($conn);
          if(!
          mysqli_stmt_prepare($stmt$sql)){
          header("Location: $url'danger_sqlerror');
          exit();
          }
          else {
          mysqli_stmt_bind_param($stmt"sssiss"$username$email$hashedPwd$access$quote$mailto);
          mysqli_stmt_execute($stmt);

          $reg_user getUserName($conn$_COOKIE['userId']);
          $reg_user array_shift($reg_user);
          $empfaenger $email;
          $betreff "Du bist nun im Dashboard Registriert.";
          $from "From: Mc-Nexus.de <[email protected]>\r\n";
          $from .= "Reply-To: [email protected]\r\n";
          $from .= "Content-Type: text/html\r\n";
          $text "Mit dieser E-mail erh&auml;ltst du deine Zugangsdaten .<br />" $reg_user " hat dich f&uuml;r den Zugang Registriert.<br /><br />Dein Benutzername: <strong>" $username "</strong><br />Dein Passwort lautet: <strong>" $password "</strong><br />Dein Team";

          mail($empfaenger$betreff$text$from);

          $loc "user";
          $act 0;
          $sql "INSERT INTO last_activity (user_id, action, location) VALUES ('" $_COOKIE['userId'] . "','" $act "','" $loc "')";
          $query mysqli_query($conn,$sql);
          mysqli_close($conn);

          //header("Location: $url" . 'success_register');
          //exit();
          }
          }
          }
          }
          mysqli_stmt_close($stmt);
          mysqli_close($conn); 

          Kommentar


          • #6
            Ich nehme an, es geht um das Eintragen des Users mit seinen Parameter durch dieses Statement?
            PHP-Code:
            $sql "INSERT INTO users (username, email, password, access, quote, mailto) VALUES (?, ?, ?, ?, ?, ?)"
            Lass dir die Fehler anzeigen, wahrscheinlich liefert das Hinweise, wo es hakt:
            https://www.php.net/manual/de/mysqli.error.php

            Kommentar


            • #7
              Zitat von Sempervivum Beitrag anzeigen
              Ich nehme an, es geht um das Eintragen des Users mit seinen Parameter durch dieses Statement?
              Richtig. Jetzt erhalte ich auch einen Fehler: Error message: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ?, ?, ?, ?, ?)' at line 1
              Zuletzt geändert von Nightland Driver; 17.02.2021, 15:02.

              Kommentar


              • #8
                Auf welche Zeile bezieht sich das denn? Weil da steht "near '?, ?, ?, ?, ?, ?)' at line 1" kann es eigentlich nur diese sein:
                PHP-Code:
                mysqli_stmt_prepare($stmt$sql
                aber anderer seits prüfst Du dort schon auf Fehler ab.

                Kommentar


                • #9
                  Ich habe die Fehler Abfrage wie folgt hier eingefügt:

                  PHP-Code:
                  //...more code
                  mysqli_stmt_bind_param($stmt"sssiss"$username$email$hashedPwd$access$quote$mailto);
                  mysqli_stmt_execute($stmt);

                  if (!
                  mysqli_query($conn$sql)) {
                  printf("Error message: %s\n"mysqli_error($conn));
                  }

                  $reg_user getUserName($conn$_COOKIE['userId']);
                  $reg_user array_shift($reg_user);
                  $empfaenger $email;
                  //...more code 

                  Kommentar


                  • #10
                    Dieser Aufruf von mysqli_query war aber ursprünglich nicht drin und dass er fehlschlägt braucht nicht zu verwundern weil in $sql ja die Fragezeichen als Platzhalter drin sind. Wenn sie nicht ersetzt werden ist das ungültiges SQL.
                    Gib die Fehler lieber bei den fraglichen Anweisungen aus:
                    PHP-Code:
                    mysqli_stmt_bind_param($stmt"sssiss"$username$email$hashedPwd$access$quote$mailto);
                    printf("Error message: %s\n"mysqli_error($conn));
                    mysqli_stmt_execute($stmt);
                    printf("Error message: %s\n"mysqli_error($conn)); 

                    Kommentar


                    • #11
                      Hier die Rückmeldung, aber id sollte doch automatisch eingefügt werden da es der Primär Schlüssel ist.

                      Code:
                      mysqli_stmt_bind_param: Error message:
                      Code:
                      mysqli_stmt_execute: Error message: Field 'id' doesn't have a default value

                      Kommentar


                      • #12
                        id muss auch auf autoincrement stehen, damit es automatisch vergeben wird.

                        Kommentar


                        • #13
                          War auf Auto Increment eingestellt, habs jetzt nochmal neu angelegt und jetzt kalppt es.

                          Kommentar

                          homepage-forum.de - Hilfe für Webmaster! Statistiken

                          Einklappen

                          Themen: 56.809   Beiträge: 430.117   Mitglieder: 28.559   Aktive Mitglieder: 46
                          Willkommen an unser neuestes Mitglied, daetr2095.

                          Online-Benutzer

                          Einklappen

                          216 Benutzer sind jetzt online. Registrierte Benutzer: 3, Gäste: 213.

                          Mit 3.502 Benutzern waren am 23.01.2020 um 18:20 die meisten Benutzer gleichzeitig online.

                          Die neuesten Themen

                          Einklappen

                          Die neuesten Beiträge

                          Einklappen

                          Lädt...
                          X