PHP: Registrierung, Anmeldung, Pattern DAO

Adriano10

Bekanntes Mitglied
PHP:
<?php

interface SchachfibelDAO {
   
    /**
     * Benutzernamen und Bilder: Nutzer*innen sollen den Namen und das Profilbild von anderen
     * Nutzern sehen können.
     * Die Methode gibt eine Kopie des Users mit Usernamen und Bild zurück. Email und Passwörter
     * werden nicht übergeben.
     */
    public function getUser($id);
    /**
     * Registrierung: Nutzer*innen sollen sich registrieren können.
     * Bei der Registrierung wird Username, Email, zwei Passwörter und ein Bild übergeben.
     */
    public function registerUser($userName, $email, $password1, $password2, $image);
   
    /**
     * Anmelden: Nutzer*innen sollen sich anmelden können.
     * Bei der Anmeldung wird der Username und ein Passwort übergeben.
     */
    public function loginUser($userName, $password);
   
    /**
     * Abmelden: Nutzer*innen sollen sich abmelden können.
     * Bei der Abmeldung wird der Username über übergeben.
     */
    public function logoutUser($userName);
}

<?php require "php/SchachfibelDAO.php"; ?>
<?php require "php/ForumDB.php"; ?>
<?php require "php/AnmeldenDB.php"; ?>

<?php

    //////////////////////////////////////////////////
   
class FileSchachfibelDAO implements SchachfibelDAO {
   
    private $forum;
    private $register;
    private $login;
   
    public function __construct() {
        $this->forum = new ForumDB();
        $this->register = new RegistrationDB();
        $this->login = new AnmeldenDB();
    }
   
    public function getUser($id) {
       
    }
   
    public function registerUser($username, $email, $password, $confrimePassword, $image) {
        $this->register->createUser($username, $email, $password, $confrimePassword, $image);
     
    }
   
    public function loginUser($username, $password) {
        $this->login->onlogedUser($username, $password);
    }
}

<?php
class RegistrationPost{
    private $username;
    private $email;
    private $password;
    private $confrimePassword;
    private $image;

    public function __construct($username, $email, $password, $confrimePassword, $image){
        $this->username = $username;
        $this->email = $email;
        $this->password = $password;
        $this->confrimePassword = $confrimePassword;
        $this->image = $image;
    }
    //Getter und Setter
}

<?php require "php/RegistrationPost.php" ?>

<?php

    ///////////////////////////////////////////////////
   
class RegistrationDB{

    private $userList;
    private $idCounter;
    public function __construct(){
        $this->userList = array();
        $this->idCounter = 0;
    }

    public function createUser($username, $email, $password, $confrimePassword, $image){
        try{
            $this->verifyUsername($username, $email, $password, $confrimePassword, $image);
        global $idCounter;
        $createdUser = new RegistrationPost($username, $email, $password, $confrimePassword, $image);
        $this->userList[$idCounter] = $createdUser;
        $this->idCounter++;
           echo " Registration successfuly ";
        }catch(Exception $e){
            echo $e->getMessage();
        }

    }
       

        private function verifyUsername($username, $email, $password, $confrimePassword, $image) {
            if (!isset($username) || !is_string($username) || trim($username == "")) {
                throw new Exception("Error: Username invalid");
            }

            if (!isset($email) || !is_string($email) || trim($email == "") ||
            !preg_match(
                '/^[_a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,6}$/',
                $email)) {
                throw new Exception("Error: E-Mail invalid");
            }

            if (!isset($password) || !is_string($password) || trim($password == "")) {
                throw new Exception("Error: Password invalid");
            }

            if (!isset($confrimePassword) || !is_string($confrimePassword) || trim($confrimePassword == "")) {
                throw new Exception("Error: Confrimepassword invalid");
            }
           
            if($password !== $confrimePassword){
                throw new Exception("Error: Passwörter stimmen miteinander nicht überein!");
            }
        }

        public function onLoginsuccessful($username, $password){
            $loginSuccessful = false;
           
  foreach($this->userList as $createdUser){
               
                if($username == $createdUser->getUsername() && $password == $createdUser->getPassword()){
                    $loginSuccessful = true;
                    break;
                }
            }
            }
            return $loginSuccessful;
        }
}
?>
   
///////////////////////////////////////////
   
    <?php
class AnmeldenPost{
private $username;
private $password;

public function __cunstruct($username, $password){
    $this->username = $username;
    $this->password = $password;
}
    //Getter und Setter
}

<?php  require "php/AnmeldenPost.php"?>
<?php require "php/RegistrationDB.php"?>
   
////////////////////////////////////////
   
<?php
class AnmeldenDB{
   
  //  private $register;

    public function __cunstruct(){
    //    $this->register = new RegistrationDB();
    }

    public function onlogedUser($username, $password){
        try{
        $this->verifyUser($username, $password);
        }catch(Exceptione $e) {
            echo $e->getMessage();
        }  
        $register = new RegistrationDB();
        if($register->onLoginsuccessful($username, $password)){
            echo "Anmeldung erfolgreich";
        }else{
            echo "Account nicht existiert!";
        }
    }

    private function verifyUser($username, $password) {
        if (!isset($username) || !is_string($username) || trim($username == "")) {
            throw new Exception("Error: Username invalid");
        }

        if (!isset($password) || !is_string($password) || trim($password == "")) {
            throw new Exception("Error: Username invalid");
        }
    }
}
?>

Ich mache erste Erfahrungen mit PHP und hab diese Klassen zur Registrierung und Anmeldung erstellt, daher wollte gern fragen, wenn man ohne Datenbank arbeitet, muss session und cookies anwenden?

Vielen Dank im Voraus...
und wenn ja, dann wie?
 
Zuletzt bearbeitet:

Adriano10

Bekanntes Mitglied

Ähnliche Java Themen

Neue Themen


Oben