main
Obai Albek 2025-06-11 01:12:21 +02:00
parent 2ed36a5927
commit 460c69b087
12 changed files with 190 additions and 286 deletions

11
html/dashboard.php 100644
View File

@ -0,0 +1,11 @@
<?php
session_start();
if (!isset($_SESSION["firstname"])) {
echo "Bitte zuerst registrieren oder einloggen.";
exit;
}
echo "Willkommen, " . $_SESSION["firstname"] . " " . $_SESSION["lastname"] . "<br>";
echo "Deine E-Mail: " . $_SESSION["email"];
?>

141
html/register.php 100644
View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Obai Albek">
<link rel="stylesheet" href="../css/registerStyle.css">
<title>Register</title>
</head>
<body>
<div>
<form class="form-container" action="register.php" method="post">
<h1>Register</h1>
<label for="firstName">Vorname:<span class="required">*</span>
<input type="text" id="firstName" name="firstName" required />
</label>
<label for="lastName">Nachname:<span class="required">*</span>
<input type="text" id="lastName" name="lastName" required />
</label>
<label for="gender">Geschlecht: <span class="required">*</span></label>
<div class="gender-options">
<label for="male">
<input type="radio" id="male" name="gender" value="Männlich" required /> Männlich
</label>
<label for="female">
<input type="radio" id="female" name="gender" value="Weiblich" required /> Weiblich
</label>
<label for="divers">
<input type="radio" id="divers" name="gender" value="Divers" required /> Divers
</label>
</div>
<label for="birthdate">Geburtsdatum:<span class="required">*</span>
<input type="date" id="birthdate" name="birthdate" required />
</label>
<label for="username">Benutzername:<span class="required">*</span><br>
<span id="userNameMessage" ></span>
</label>
<div class="username-group">
<input type="text" id="username" name="username" required />
<span id="domain">@smail.de</span>
</div>
<label for="telefonnummer">Telefonnummer:
<input type="tel" id="telefonnummer" name="telefonnummer" />
</label>
<label for="password">Password:<span class="required">*</span><br>
<span id="passwordMessage"></span>
<input type="password" id="password" name="password" required />
</label>
<label for="retype_password">Re-Type Password:<span class="required">*</span><br>
<span id="retypePasswordMessage"></span>
<input type="password" id="retype_password" name="retype_password" required />
</label>
<input id="submit" type="submit" name="register" value="Submit">
</form>
</div>
<script src="../js/handleRegister.js"></script>
</body>
</html>
<?php
session_start();
try {
$dbh = new PDO('mysql:host=localhost;dbname=simpleymail','root','');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (isset($_POST["register"])) {
$firstName = $_POST["firstName"];
$lastname = $_POST["lastName"];
$gender = $_POST["gender"];
$birthdate = $_POST["birthdate"];
$username = $_POST["username"];
$password = $_POST["password"];
$domain = "@smail.de";
$email = $username . $domain;
// 1. E-Mail prüfen
$stmt = $dbh->prepare("SELECT email FROM useremail WHERE email=?");
$stmt->bindValue(1, $email);
$stmt->execute();
if ($stmt->rowCount() === 0) {
// 2. E-Mail & Passwort speichern
$stmt = $dbh->prepare("INSERT INTO useremail (email, password) VALUES (?, ?)");
$stmt->bindValue(1, $email);
$stmt->bindValue(2, $password);
$stmt->execute();
// 3. ID holen
$useremail_id = $dbh->lastInsertId();
// 4. user speichern
$stmt = $dbh->prepare("INSERT INTO user (firstName, lastname, birthdate, gender, useremail_id) VALUES (?, ?, ?, ?, ?)");
$stmt->bindValue(1, $firstName);
$stmt->bindValue(2, $lastname);
$stmt->bindValue(3, $birthdate);
$stmt->bindValue(4, $gender);
$stmt->bindValue(5, $useremail_id);
$stmt->execute();
// 5. user abrufen
$stmt = $dbh->prepare("SELECT * FROM user WHERE useremail_id = ?");
$stmt->bindValue(1, $useremail_id);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
// 6. Session setzen
$_SESSION["firstname"] = $user["firstname"];
$_SESSION["lastname"] = $user["lastname"];
$_SESSION["email"] = $email;
// 7. Ausgabe
header("Location: dashboard.php");
} else {
echo "❌ Fehler beim Laden des Benutzers.";
}
} else {
echo "❌ Die E-Mail ist bereits registriert.";
}
}
} catch (PDOException $e) {
echo "Fehler: " . $e->getMessage();
}
?>

View File

@ -0,0 +1,38 @@
var txtUsername = document.querySelector("#username");
var txtPassword = document.querySelector("#password");
var txtRetypePassword = document.querySelector("#retype_password");
var errorMessageUsername = document.querySelector("#userNameMessage");
var errorPasswordMessage = document.querySelector("#passwordMessage");
var errorRetypePasswordMessage = document.querySelector("#retypePasswordMessage");
txtPassword.addEventListener("input",checkPass);
txtRetypePassword.addEventListener("input" , checkRetypedPassword)
txtUsername.addEventListener("input" ,checkUsername);
function checkUsername(){
if (txtUsername.value.includes("@")){
errorMessageUsername.textContent = "Benutzername darf kein @ enthalten!";
errorMessageUsername.style.color = "red";
}else
errorMessageUsername.textContent = "";
}
function checkPass(){
if (txtPassword.value.length < 6){
errorPasswordMessage.textContent = "Passwort ist zu kurz";
errorPasswordMessage.style.color = "red";
}else{
errorPasswordMessage.textContent = "";
}
}
function checkRetypedPassword(){
if (txtRetypePassword.value !== txtPassword.value){
errorRetypePasswordMessage.textContent = "Passwörter stimmen nicht überein!";
errorRetypePasswordMessage.style.color = "red";
}else{
errorRetypePasswordMessage.textContent = "";
}
}

View File

@ -1,15 +0,0 @@
<?php
include_once 'userManager.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'] ?? '';
$email = $username . "@smail.de";
$userManager = new UserManager();
$exists = $userManager->findUserByEmail($email);
echo json_encode(['exists' => $exists]);
}
?>

View File

@ -1,7 +0,0 @@
<?php
enum Gender: string {
case Male = 'male';
case Female = 'female';
case Diverse = 'diverse';
}
?>

View File

@ -1,63 +0,0 @@
<?php
include_once 'userEmail.php';
include_once 'genderEnum.php';
class User{
private $firstname;
private $lastname;
private $birthdate;
private $userEmail;
private $password;
public function __construct($firstname, $lastname, $birthdate, Gender $gender, $username, $password) {
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->birthdate = $birthdate;
$this->gender = $gender;
$this->password = $password;
$this->userEmail = new userEmail($username, $password);
}
public function getFirstname() {
return $this->firstname;
}
public function setFirstname($firstname) {
$this->firstname = $firstname;
}
public function getLastname() {
return $this->lastname;
}
public function setLastname($lastname) {
$this->lastname = $lastname;
}
public function getBirthdate() {
return $this->birthdate;
}
public function setBirthdate($birthdate) {
$this->birthdate = $birthdate;
}
public function getGender() {
return $this->gender;
}
public function setGender(Gender $gender) {
$this->gender = $gender;
}
// __toString Methode
public function __toString() {
return "Vorname: {$this->firstname}\n" .
"Nachname: {$this->lastname}\n" .
"Geburtsdatum: {$this->birthdate}\n" .
"Geschlecht: {$this->gender->value}\n" .
"Benutzername: {$this->userEmail->getUsername()}\n";
}
}
?>

View File

@ -1,25 +0,0 @@
<?php
class UserEmail{
private $username;
private $password;
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
public function getusername() {
return $this->username;
}
public function getPassword() {
return $this->password;
}
public function setPassword($password) {
$this->password = $password;
}
}
?>

View File

@ -1,36 +0,0 @@
<?php
include_once 'userEmail.php';
include_once 'genderEnum.php';
include_once 'user.php';
class UserManager {
private $dbh;
public function __construct() {
try {
$this->dbh = new PDO('mysql:host=localhost;dbname=simpleymail', 'root', '');
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {die("Verbindung fehlgeschlagen: " . $e->getMessage());}
}
public function userRegister($firstname, $lastname, $birthdate, Gender $gender, $username, $password) {
$domain = "@smail.de";
$email = $username . $domain;
$newUser = new User($firstname, $lastname, $birthdate, $gender, $email, $password);
// $stmt = $this->dbh->prepare("INSERT INTO user ")
return $newUser;
}
public function findUserByEmail($email){
$stmt = $this->dbh->prepare("SELECT email FROM useremail WHERE email = ?");
$stmt->bindValue(1, $email);
$stmt->execute();
return $stmt->fetch() !== false;
}
}
?>

View File

@ -1,73 +0,0 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Obai Albek">
<link rel="stylesheet" href="../css/registerStyle.css">
<title>Register</title>
</head>
<body>
<div>
<form id="registerForm" class="form-container" action="../../domain/userManager.php" method="post">
<h1>Register</h1>
<label for="firstName">Vorname:<span class="required">*</span>
<input type="text" id="firstName" name="firstName" required />
</label>
<label for="lastName">Nachname:<span class="required">*</span>
<input type="text" id="lastName" name="lastName" required />
</label>
<label for="gender">Geschlecht: <span class="required">*</span></label>
<div class="gender-options">
<label for="male">
<input type="radio" id="male" name="gender" required /> Männlich
</label>
<label for="female">
<input type="radio" id="female" name="gender" required /> Weiblich
</label>
<label for="divers">
<input type="radio" id="divers" name="gender" required /> Divers
</label>
</div>
<label for="birthdate"> Geburtsdatum:<span class="required">*</span>
<input type="date" id="birthdate" name="birthdate" />
</label>
<label for="username">Benutzername:<span class="required">*</span><br>
<span id="userNameMessage"></span></label>
<div class="username-group">
<input type="text" id="username" name="username" required />
<span id="domain">@smail.de</span>
</div>
<label for="telefonnummer">Telefonnummer:
<input type="tel" id="telefonnummer" name="telefonnummer" />
</label>
<label for="password"> Password:
<span class="required">*</span><br>
<span id="passwordMessage"></span>
<input type="password" id="password" name="password" required />
</label>
<label for="retype_password"> Re-Type Password:
<span class="required">*</span><br>
<span id="retypePasswordMessage"></span>
<input type="password" id="retype_password" name="retype_password" required />
</label>
<input id = "submit" type="submit" name="submit" value="Submit">
</form>
</div>
<script src="../js/handleRegister.js"></script>
</body>
</html>

View File

@ -1,51 +0,0 @@
var passwordInput = document.querySelector("#password");
var retypePasswordInput = document.querySelector("#retype_password");
var passwordMessage = document.querySelector("#passwordMessage");
var retypePasswordMessage = document.querySelector("#retypePasswordMessage");
var username = document.querySelector("#username");
var userNameMessage = document.querySelector("#userNameMessage");
var btnSubmit = document.querySelector("input[type='submit']");
var form = document.querySelector("#registerForm");
btnSubmit.addEventListener("click", checkRegister);
function checkRegister(event) {
event.preventDefault(); // Verhindere, dass Formular automatisch abgeschickt wird
let hasError = false;
if (passwordInput.value.length < 6 || passwordInput.value.length === 0) {
passwordMessage.innerHTML = "Passwort ist zu kurz";
passwordMessage.style.color = "red";
hasError = true;
} else {
passwordMessage.innerHTML = "";
}
if (retypePasswordInput.value !== passwordInput.value) {
retypePasswordMessage.innerHTML = "Passwörter stimmen nicht überein!";
retypePasswordMessage.style.color = "red";
hasError = true;
} else {
retypePasswordMessage.innerHTML = "";
}
if (username.value.includes("@")) {
userNameMessage.innerHTML = "Benutzername darf kein @ enthalten!";
userNameMessage.style.color = "red";
hasError = true;
} else if (username.value.length === 0) {
userNameMessage.innerHTML = "Benutzername bitte eingeben!";
userNameMessage.style.color = "red";
hasError = true;
} else {
userNameMessage.innerHTML = ""; // Fehler entfernen
}
if (!hasError) {
form.submit();
} else {
return;
}
}

View File

@ -1,16 +0,0 @@
<?php
include_once '../domain/userManager.php';
$testManager = new UserManager();
$user = $testManager->userRegister(
'Ali',
'Obaya',
'2000-01-01',
Gender::Male,
'obai.albek',
'meinPasswort123'
);
echo $user;
?>