WebImpressionen
Für die Profil.php brauchen wir ein Formular.
das formular
  • <!DOCTYPE html>
  • <html lang="de"><head>
  • <meta charset="UTF-8">
  • <meta name="viewport" content="width=device-width,initial-scale=1.0">
  • <title>Profil</title>
  • <meta name="dcterms.rights" content="locomputing">
  • <meta name="description" content="Beschreibung der Website">
  • <meta name="keywords" content="Keywords">
  • <!-- Dieses Stylesheet kann unter Downloads auch runtergeladen werden! -->
  • <link rel="stylesheet" href="https://locomputing.de/mustercss/formular_style.css">

  • </head>
  • <body>

  • <h4>User-Profil</h4>
  • <p>Wenn hier was geändert wird,
    muss es mit dem Benutzer Passwort bestätigt werden!</p>

  • <fieldset>
  1. <form method="post">

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für eMail -->
  2. <div class="form-face">
  3. <label for="email">eMail:<span>*</span></label>
  4. <span class="fehler"> <?php echo $email_err;?></span>
  5. <input pattern="^[a-z]{1,}[\w.+-]{0,}@[\w-]{2,30}([.][a-z]{2,3})$" required="required" placeholder="8-75 Zeichen" type="email" id="email" name="email" maxlength="80" class="form-control" value="<?php echo $Umail;?>">
  6. </div>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Benutzer Passwort -->
  7. <div class="form-face">
  8. <label for="passwort">Benutzer-Passwort:<span>*</span></label>
  9. <span class="fehler"> <?php echo $pass_err;?></span>
  10. <input pattern=".{8,40}" required="required" placeholder="Benutzer-Passwort" title="Bitte das Benutzer-Passwort eingeben!" type="password" id="passwort" name="pass" maxlength="42" class="form-control">
  11. </div>

  12. <p>Neues Passwort bei Bedarf</p>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Neues Passwort -->
  13. <div class="form-face">
  14. <label for="passwort">Neues Passwort:</label>
  15. <span class="fehler"> <?php echo $new_password_err;?></span>
  16. <input pattern=".{8,40}" placeholder="8-40 Zeichen" type="password" id="passwort" name="new_password" maxlength="42" class="form-controlle">
  17. </div>

    • <!-- Beschriftung, Eingabefeld und Fehlermeldung für Passwort wiederholen -->
  18. <div class="form-face">
  19. <label for="passwort">Passwort wiederholen:</label>
  20. <span class="fehler"> <?php echo $confirm_password_err;?></span>
  21. <input pattern=".{8,40}" placeholder="Passwort wiederholen" type="password" id="passwort" name="confirm_password" maxlength="42" class="form-controlle">
  22. </div>

    • <!-- Sende-Button -->
  23. <div class="form-face">
  24. <label><span>*</span> Felder sind Pflicht!</label>
  25. <input type="submit" class="butt button-red" name="profil" value="Editieren">
    <a href="welcome.php" class="butt button-blue"> Zur&uuml;ck </a>
  26. </div>

  27. <!-- form beenden -->
  28. </form>
    <!-- fieldset beenden -->
  • </fieldset>

  • </body>
  • </html>

profil.php
<?php
  • // Datenbank verbindung einfügen
  • if(file_exists('connect.php')==true){require('connect.php');}
    • // Sitzung starten
  1. session_start();
    • // Prüfen ob User eingeloggt ist oder nicht
  2. if (!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true)
  3. {
  4. header("Location: login.php");exit;
  5. }

    • // Variablen für Session erstellen
  6. $UserName = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
  7. $userID = isset($_SESSION["id"]) ? $_SESSION["id"] : "";

    • // Variablen definieren und auf leere Werte setzen
  8. $new_password = $confirm_password = $username = $pass = $mails = $Umail ="";
  9. $new_password_err = $confirm_password_err = $pass_err = $email_err = "";

    • // Formulardaten werden verarbeitet, wenn das Formular gesendet wird
  10. if (isset($_POST['profil']) && $_POST['profil'] == 'Editieren')
  11. {
    • // POST für Benutzer-Passwort prüfen
  12. $postpass = isset($_POST['pass']) ? $_POST['pass'] : "";
  13. if(empty(trim($postpass)))
  14. {
  15. $pass_err = 'Das Feld Passwort ist leer.';
  16. }
  17. else
  18. {
  19. $passwort = htmlspecialchars($postpass);
  20. if ($passwort === false)
  21. {
  22. $pass_err = 'Dies ist kein Passwort!';
  23. }
  24. }

    • // POST für eMail prüfen
  25. $postmail = isset($_POST['email']) ? $_POST['email'] : "";
  26. if(empty(trim($postmail)))
  27. {
  28. $mail_err = 'Das Feld eMail ist leer.';
  29. }
  30. else
  31. {
  32. $mails = filter_var(trim($postmail), FILTER_VALIDATE_EMAIL);
  33. if(!preg_match("/^([a-z0-9\+_\-]+)*@([a-z0-9\-]{2,30}+\.)+[a-z]{2,3}$/ix",$mails))
  34. {
  35. $mail_err = 'Dies ist keine erlaubte eMail-Adresse';
  36. }
  37. if ($mails === false)
  38. {
  39. $mail_err = 'Dies ist keine eMail-Adresse';
  40. }
  41. $mail = $connect->real_escape_string($mails);
  42. }

    • // POST für neues passwort prüfen
  43. $newpaswortz = isset($_POST['new_password']) ? $_POST['new_password'] : "";
  44. if(empty($newpaswortz)){}
  45. elseif((strlen(trim($newpaswortz)) < 8)||(strlen(trim($newpaswortz))) > 40)
  46. {
  47. $new_password_err = 'Das Passwort muss mindestens 8 bis maximal 40 Zeichen enthalten.'; }
  48. else
  49. {
  50. $newpassa = isset($newpaswortz) ? $newpaswortz : "";
  51. $new_password = $connect->real_escape_string($newpassa);
  52. }

    • // POST für neues passwort wiederholen prüfen
  53. $connectfpassa = isset($_POST['confirm_password']) ? $_POST['confirm_password'] : "";
  54. if(empty($newpaswortz)){}
  55. else
  56. {
  57. $connectfpasse = isset($connectfpassa) ? $connectfpassa : "";
  58. $confirm_password = $connect->real_escape_string($connectfpasse);
  59. }
    • // Passwörter auf übereinstimmung prüfen
  60. if(empty($new_password_err) && ($new_password != $confirm_password))
  61. {
  62. $confirm_password_err = 'Passwörter stimmen nicht überein.';
  63. }

    • // Keine Fehler Inhalt zwischen Zeile 11 und 62 ausführen
  64. if(empty($username_err) && empty($pass_err) && empty($email_err) && empty($new_password_err) && empty($confirm_password_err))
  65. {
  66. $sql = "SELECT id, username, userpass, usermail FROM usertable WHERE username = ? and active = 1";
  67. if($stmt = $connect->prepare($sql))
  68. {
  69. $stmt->bind_param("s", $param_username);
  70. $param_username = $UserName;
  71. if($stmt->execute())
  72. {
  73. $stmt->store_result();
  74. if($stmt->num_rows == 1)
  75. {
  76. $stmt->bind_result($id, $username, $hashed_password, $mails);
  77. if($stmt->fetch())
  78. {
  79. if(password_verify($passwort, $hashed_password))
  80. {
  81. if((empty($confirm_password))&& empty($new_password))
  82. {
  83. $sql = "UPDATE usertable SET usermail = ? WHERE id = ?";
  84. if($stmt = $connect->prepare($sql))
  85. {
  86. $stmt->bind_param("si", $param_mail, $param_id);
  87. $param_id = IntVal($userID);
  88. $param_mail = $connect->real_escape_string($mail);
  89. $stmt->execute();
  90. } // Ende Zeile 84
  91. } // Ende Zeile 81
  92. else
  93. {
  94. $sql = "UPDATE usertable SET usermail = ?, userpass = ? WHERE id = ?";
  95. if($stmt = $connect->prepare($sql))
  96. {
  97. $stmt->bind_param("ssi", $param_mail, $param_password, $param_id);
  98. $pass = htmlspecialchars($new_password);
  99. $set_password = password_hash($pass, PASSWORD_DEFAULT);
  100. $param_password = $connect->real_escape_string($set_password);
  101. $param_id = IntVal($userID);
  102. $param_mail = $connect->real_escape_string($mail);
  103. if($stmt->execute())
  104. {
  105. session_unset();session_destroy();
  106. header("Location: login.php");
  107. }
  108. } // Ende Zeile 98
  109. } // Ende Zeile 95
  110. } // Ende Zeile 79
  111. else
  112. {
  113. $pass_err = 'Passwort nicht korrekt!';
  114. }
  115. } // Ende Zeile 77
  116. } // Ende Zeile 74
  117. } // Ende Zeile 71
  118. else
  119. {
  120. echo'ERROR Bitte nochmals versuchen.';
  121. }
  122. } // Ende Zeile 67
  123. } // Ende Zeile 64
  124. } // Ende Zeile 11

    • // eMail für Formular auslesen
  125. $sql = "SELECT usermail FROM usertable WHERE username = ? and active = 1";
  126. if($stmt = $connect->prepare($sql))
  127. {
  128. $stmt->bind_param("s", $UserName);
  129. if($stmt->execute())
  130. {
  131. $stmt->store_result();
  132. if($stmt->num_rows == 1)
  133. {
  134. $stmt->bind_result($Umail);
  135. $stmt->fetch();
  136. }
  137. } // Ende Zeile 130
  138. } // Ende Zeile 127
?>
Hier wird das formular eingefügt.