-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
register.php
97 lines (87 loc) · 2.78 KB
/
register.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/**
*
* MiniGreX - designed with security in mind!
*
* @file register.php
* @package MiniGreX
* @copyright Volkan Kücükbudak
* @version 0.9 Beta
* @license MIT
* @link https://github.com/VolkanSah/MiniGreX
*
* Public: Register
*
*
*/
// load init.php
require_once '../includes/init.php';
require_once '../includes/security.php';
// Überprüfen, ob das Formular abgeschickt wurde
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$csrf_token = $_POST['csrf_token'];
if (!validate_csrf_token($csrf_token)) {
die('Ungültiges CSRF-Token.');
}
$username = sanitizeInput($_POST['username']);
$email = sanitizeInput($_POST['email']);
$password = sanitizeInput($_POST['password']);
// Überprüfen, ob Benutzername bereits existiert
$stmt = $pdo->prepare("SELECT id FROM users WHERE username = :username");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$error = "Benutzername bereits vergeben";
}
// Überprüfen, ob E-Mail-Adresse bereits existiert
$stmt = $pdo->prepare("SELECT id FROM users WHERE email = :email");
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$error = "E-Mail-Adresse bereits registriert";
}
// Benutzer anlegen, wenn Benutzername und E-Mail-Adresse noch nicht existieren
if (!isset($error)) {
$hash = hash_password($password);
$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':password', $hash, PDO::PARAM_STR);
$stmt->execute();
// Weiterleitung zur Login-Seite
header("Location: login.php");
exit();
}
}
// HTML-Kopf ausgeben
$csrf_token = generate_csrf_token();
$html = "<!DOCTYPE html>
<html>
<head>
<title>Registrierung</title>
</head>
<body>
<h1>Registrierung</h1>";
// Fehlermeldung ausgeben, falls vorhanden
if (isset($error)) {
$html .= "<p style='color: red;'>{$error}</p>";
}
// Registrierungsformular ausgeben
$html .= "<form method='post'>
<input type='hidden' name='csrf_token' value='{$csrf_token}'>
<label for='username'>Benutzername:</label>
<input type='text' id='username' name='username' required>
<br>
<label for='email'>E-Mail-Adresse:</label>
<input type='email' id='email' name='email' required>
<br>
<label for='password'>Passwort:</label>
<input type='password' id='password' name='password' required>
<br>
<input type='submit' value='Registrieren'>
</form>";
// HTML-Fuß ausgeben
$html .= "</body>
</html>";
print($html);
?>