• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[GELOEST] Html Formular Action auf 2 Seiten weiterleiten PHP MYSQL

eric1997

Neues Mitglied
Hey Leute, eine kurze Frage. Ich habe eine HTML-Seite mit Input Feldern welche anschließend mithilfe von PHP in eine MySQL Datenbank eingetragen werden (User Accounts). Das Login System läuft auch bereits. Wo brauche ich Hilfe? Ich will mir nun den eingetragenen Username anzeigen lassen, wenn ich mich eingeloggt habe. Brauche ich dazu zwingend JavaScript oder denke ich zu kompliziert?
Das Action attribut kann ich ja nicht an 2 Seiten gleichzeitig senden, was dem Problem schnell ein Ende bereitet hätte.
Bin für alle Tipps und Hinweise dankbar! :)

Code:
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Login</title>
  </head>
  <body>
    <!-- HEADER -->
    <?php
    require("mysql.php");
    #session_start();
  
    if(isset($_COOKIE["login_cookie"])){
      $stmt = $mysql->prepare("SELECT * FROM users WHERE Token = ?");
      $stmt->execute([$_COOKIE["login_cookie"]]);
      if($stmt->rowCount() == 1){
        $row = $stmt->fetch();
        session_start();
        $_SESSION["username"] = $row["USERNAME"];
        header("Location: bereitsangemeldet.php");
      } else {
        setcookie("login_cookie", "", time() - 1);
      }
    }
    if(isset($_POST["submit"])){
      $stmt = $mysql->prepare("SELECT * FROM accounts WHERE USERNAME = ?");
      $stmt->execute([$_POST["username"]]);
      $count = $stmt->rowCount();
      if($count == 1){
        //Username ist frei
        $row = $stmt->fetch();
        if(password_verify($_POST["pw"], $row["PASSWORD"])){
          if(isset($_POST["rememberme"])){
            $token = bin2hex(random_bytes(16));
            $stmt = $mysql->prepare("UPDATE accounts SET Token = ? WHERE USERNAME");
            $stmt->execute([$token, $_POST["username"]]);
            setcookie("login_cookie", $token, time() + (3600*24*360));          }

          session_start();
          $_SESSION["username"] = $row["USERNAME"];
          header("Location: bereitsangemeldet.php");
        } else {
          echo "Der Login ist fehlgeschlagen";
        }
      } else {
        echo "Der Login ist fehlgeschlagen";
      }
    }


     ?>
<?php include("kopfzeile.php");?>
  <div class="col-lg-3 mx-auto p-3 py-md-8"> 
    <h1>Anmelden</h1>
    <!-- Gibt Daten an Login.php zurück um Daten mit Datenbank abzugleichen -->
    <form action="login.php" method="post">
     
      <input type="text" formaction ="bereitsangemeldet.php"   name="username" placeholder="Username" required><br>
      <input type="password" name="pw" placeholder="Passwort" required><br>
      <button type="submit" name="submit" value="Absenden" >Einloggen</button>
    </form>
 
   
 
    <div class="form-check">
    <input class="form-check-input" type="checkbox" name="rememberme" id="flexCheckDefault">Eingeloggt bleiben
    </div><br>
    <a href="neueraccount.php">Noch keinen Account?</a>
  </div>
  <?php include("footer.php");?>
  </body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Könntest du deinen Quellcode bitte ordentlich einrücken und dann mit Code-Tags des Forums posten?
1673464431563.png
Ansonsten ist das nämlich schwer zu lesen.
 
Werbung:
Das Script kann so doch eigentlich überhaupt nicht richtig funktionieren, denn es fängt mit HTML-Code an und später wird ein session_start oder set_cookie aufgerufen. Das sollte eigentlich eine Fehlermeldung ausspucken, wenn man das Error-Reporting von PHP hochsetzt.
 
Du wirst die Fehleranzeige ausgeschaltet haben. Das Script wirft mit Garantie "Fehler" (also notices, warnings).

Die Weiterleitung hast du doch bereits drin? Vor session_start() und header() darf einfach keine Ausgabe erfolgen, also auch keinen HTML-Code.
 
Werbung:
Verstehe, was du meinst, habe es geändert und der HTML Code fängt jetzt weiter unten an.

Und ja ich habe die Weiterleitung drin von dem Formular, das geht zurück an die gleiche Datei und wird dann oben mit PHP verarbeitet, alles gut so weit.
Ich will aber das gleiche Formular noch an eine 2. Datei senden!
 
@Readonly kann dir leider nicht richtig folgen...

Wie kann ich denn die Daten in der Session Zwischenspeichern bzw. wie kann ich sie dann weiterleiten
 
Zuletzt bearbeitet:
Werbung:
PHP:
<?php
   // Script 1
   session_start();
  
   $_SESSION['wert1_aus_formular'] = $_POST['wert1_aus_formular'];
   $_SESSION['wert2_aus_formular'] = $_POST['wert2_aus_formular'];
   $_SESSION['wert3_aus_formular'] = $_POST['wert3_aus_formular'];
  
   header("locaction: zweites_script.php");
?>
PHP:
<?php
   // Script 2
   session_start();
  
   echo 'Wert 1 aus Formular: ' . $_SESSION['wert1_aus_formular'] . '<br>';
   echo 'Wert 2 aus Formular: ' . $_SESSION['wert2_aus_formular'] . '<br>';
   echo 'Wert 3 aus Formular: ' . $_SESSION['wert3_aus_formular'] . '<br>';
?>
 
Zurück
Oben