Quote:
Originally Posted by Legithos
Hallo zusammen,
bin gerade immernoch dabei PHP zu lernen und bin dank eurer Hilfe und Antworten auf meine Fragen schon echt ganz gut weitergekommen. Danke hierfür auf alle Fälle schonmal!
Jetzt aber meine nächste Frage. Ich machs am Beispiel der Registrierung eines Accounts. In der Regel schick ich ja meine HTML-form an eine neue PHP-Datei die dann die Daten verarbeitet (zb hier jetzt die Daten in eine Datenbank speichern) und dann sowas wie "Registrierung erfolgreich" anzeigt. Wenn ich das ganze aber auf die gleiche Seite haben will mach ich das wie ?
Anderes Beispiel: Ich will in einem Input was reinschreiben und wenn ich auf den Speichern-Button drücke, soll er es in der Datenbank speichern UND gleichzeitig die Seite neu laden und unter dem Inputfeld anzeigen.
Wenn meine Datei Index.php heißt, geht es dann einfach wenn ich die form einfach ganz normal wieder an die Index.php schicke oder ist es komplizierter ? Habe gerade nur am Handy Internet und kanns deswegen nur bedingt ausprobieren ...
Danke und Gruß,
Legithos
|
Guten Morgen,
zu Punkt 1:
Ich hatte vor einigen Jahren mal eine Projektarbeit gemacht, in welcher ich so etwas behandelt habe. An sich funktioniert es einwandfrei ist aber nicht sonderlich schön. Habe dir hier mal den Code, hoffe du kannst damit was anfangen.
PHP Code:
<?php
session_start();
// Hier wird die Verbindung zur Datenbank aufgebaut, nicht wundern
require('php/functions.php');
$showFormular = true;
$successfull = false;
$error = false;
if( isset($_GET['register']) ) {
$username = htmlentities($_POST['username']);
$email = htmlentities($_POST['email']);
$password = htmlentities($_POST['password']);
$password2 = htmlentities($_POST['password2']);
$rank = "User";
if( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
$error_message = 'Bitte geben Sie eine gültige E-Mail-Adresse ein!<br>';
$error = true;
}
if( strlen($password) == 0 ) {
$error_message = 'Bitte geben Sie ein Passwort!<br>';
$error = true;
}
if( $password != $password2 ) {
$error_message = 'Die Passwörter müssen übereinstimmen!<br>';
$error = true;
}
if( !$error ) {
$statement = $db->prepare("SELECT * FROM user WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
if( $user !== false ) {
$error_message = 'Diese E-Mail-Adresse ist bereits vergeben!<br>';
$error = true;
}
}
if( !$error ) {
$statement = $db->prepare("SELECT * FROM user WHERE username = :username");
$result = $statement->execute(array('username' => $username));
$user = $statement->fetch();
if( $user !== false ) {
$error_message = 'Dieser Username ist bereits vergeben!<br>';
$error = true;
}
}
if( !$error ) {
$password_hash = password_hash($password, PASSWORD_DEFAULT);
$date = date("Y-m-d H:i:s");
$statement = $db->prepare("INSERT INTO user (username, password, email, registerdate, status) VALUES (:username, :password, :email, :registerdate, :status)");
$result = $statement->execute(array('username' => $username, 'password' => $password_hash, 'email' => $email, 'registerdate' => $date, 'status' => $rank));
if( $result ) {
$successfull = true;
$showFormular = false;
}
else {
$error_message = 'Fehler bei der Registrierung!<br>';
}
$statement = $db->prepare("SELECT * FROM user WHERE username = :username");
$result = $statement->execute(array('username' => $username));
$user = $statement->fetch();
$_SESSION['userid'] = $user['id'];
header("Location: index.php");
exit;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Projektarbeit</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://www.w3schools.com/w3css/3/w3.css" />
</head>
<body>
<!-- Sidebar -->
<div class="w3-sidebar w3-light-grey w3-bar-block" style="width:15%">
<h3 class="w3-bar-item">***</h3>
<?php if( !$access) { ?>
<a href="index.php" class="w3-bar-item w3-button">Startseite</a>
<a href="login.php" class="w3-bar-item w3-button">Einloggen</a>
<a href="register.php" class="w3-bar-item w3-button">Registrieren</a>
<a href="***" class="w3-bar-item w3-button">Projekttagebuch</a>
<?php } else { ?>
<a href="index.php" class="w3-bar-item w3-button">Startseite</a>
<a href="profil.php" class="w3-bar-item w3-button">Profil</a>
<?php if( strcmp($user['status'], "Admin") == 0 ) { ?>
<a href="admin.php" class="w3-bar-item w3-button">Adminpanel</a>
<?php } ?>
<a href="rank.php" class="w3-bar-item w3-button">Rangliste</a>
<a href="addquestion.php" class="w3-bar-item w3-button">Fragen hinzufügen</a>
<a href="play.php" class="w3-bar-item w3-button">Quiz Starten</a>
<a href="logout.php" class="w3-bar-item w3-button">Ausloggen</a>
<?php } ?>
</div>
<!-- Content -->
<div style="margin-left:15%">
<div class="w3-container w3-teal">
<h1>Registrieren</h1>
<p>*** von *** und ***</p>
</div>
<hr />
<div class="w3-display-middle">
<?php if( $showFormular ) { ?>
<form action = "?register=1" method = "post">
<fieldset style="border-style:none;">
<p class="w3-label w3-text-green" style="font-weight: bold; margin-bottom: 1%; margin-top: 4%;">Username</p>
<input type = "text" size = "30" maxlength = "15" name = "username" class = "w3-input w3-border" />
<p class="w3-label w3-text-green" style="font-weight: bold; margin-bottom: 1%; margin-top: 4%;">Passwort</p>
<input type = "password" size = "30" maxlength = "255" name = "password" class = "w3-input w3-border" />
<p class="w3-label w3-text-green" style="font-weight: bold; margin-bottom: 1%; margin-top: 4%;">Passwort wiederholen</p>
<input type = "password" size = "30" maxlength = "255" name = "password2" class = "w3-input w3-border" />
<p class="w3-label w3-text-green" style="font-weight: bold; margin-bottom: 1%; margin-top: 4%;">E-Mail-Addresse</p>
<input type = "email" size = "30" maxlength = "200" name = "email" class = "w3-input w3-border" />
<input class = "w3-button w3-white w3-border w3-border-red w3-round-large" style="margin-top: 5%;margin-left:25%;" value = "Registrieren" type = "submit" />
</fieldset>
</form>
</div>
<?php } if( $error ) { ?>
<p class = "w3-text-red" style="text-align: center;">Fehler beim registrieren!</p>
<p class = "w3-text-red" style="text-align: center;"><?php echo $error_message; ?></p>
<?php } if( $successfull ) { ?>
<p class = "w3-text-green" style="text-align: center;">Hallo <?php echo $username; ?>, du hast erfolgreich einen Account erstellt! Du kannst dich nun <a href = "login.php">Einloggen</a>!</p>
<?php } ?>
</div>
</body>
</html>
Zu Punkt 2:
Das funktioniert in etwa wie in Punkt 1. Prinzipiell die Form aufbauen, darin die action ausführen und dann, sofern es funktioniert hat das Zeug in die Datenbank zu speichern, einfach das Zeug aus der Datenbank holen und ausgeben lassen. Habe hierzu gerade keinen Beispielcode, da ich mir den Aufwand um die Uhrzeit ungern machen möchte. Solltest du jedoch einen Beispielcode wollen, dann melde dich einfach bei mir. :)
Zu Punkt 3:
Ja, das geht. Jedenfalls befasst sie Beispielcode 1 damit, bzw. dadurch wird die Registrier-Funktion aufgebaut.
Hoffe ich konnte dir ein bisschen weiterhelfen. Solltest du noch fragen haben, stehe ich dir gerne zur Seite und kann dich ggf. mit Beispielcode versorgen. Frohes coden!