Hey,
okay. Alles klar. Ein sehr großes Dankeschön an dich 
Ich habe vorhin geschrieben, dass ich noch ein Beispiel erstelle wo ich es austeste.
Als Beispielanwendung habe ich mir ein Login und Logout mit Datenbankanbindung vorgestellt.
Da stehe ich vor einem Rätsel mit den Cookies. Ich rufe beim Click auf den Ausloggbutton eine Function auf welche den Cookie löschen soll. Aber er wird garnicht gelöscht. Ich habe bereits viel gegoogelt aber auch trotzdessen konnte ich das Problem nich lösen. Der Cookie ist trotzdem weiterhin da. Die Funktion set_cookie gibt bei der Ausführung aber true zurück. Trotzdem wird der Cookie nicht gelöscht. Ich weiß nicht mehr weiter.
Was mache ich falsch?
So sieht meine Beispielanwendung aus:
<?php
require_once("classes/login.class.php");
require_once("classes/database.class.php");
// Password = 1234;
$username = "Hans";
$password = "1234";
$login = new Login($username, $password);
$login->getUserFromDatabase();
$userData = $login->getUserData();
if(isset($_POST["verify"])){
$verify = $login->verifyUser();
if($verify){
setcookie("username", $userData->username, time() + 3600);
header("LOCATION: sites/home.php");
}
}
if(isset($_COOKIE["username"])){
echo "<a href='sites/home.php'>Home</a>";
}
?>
<form method="post">
<button name="verify">Verify</button>
</form>
Alles anzeigen
<?php
$username = $_COOKIE["username"];
if(!isset($username) || empty($username)){
exit();
}
require_once("../classes/logout.class.php");
$logout = new Logout("username");
if(isset($_POST["logout"])){
$logout->deleteCookie();
$logout->goToIndexPage();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Home</title>
</head>
<body>
<header>
<h1>Willkommen <?= $username; ?></h1>
<form method="post">
<button name="logout">Ausloggen</button>
</form>
</header>
</body>
</html>
Alles anzeigen
Meine Klassen:
<?php
class Login{
private $username;
private $password;
private $userData;
public function __construct($username, $password){
$this->username = $username;
$this->password = $password;
}
public function getUserFromDatabase(){
$database = new Datenbank($this->username);
$this->userData = $database->selectUserData();
}
public function verifyUser(){
if(password_verify($this->password, $this->userData->passwordHash)){
return true;
} else{
return false;
}
}
public function getUserData(){
return $this->userData;
}
}
Alles anzeigen
<?php
class Datenbank{
private $dsn = "mysql:host=127.0.0.1;dbname=test;charset=utf8";
private $dbUser = "root";
private $dbPass = "";
private $datenbankverbindung;
private $tabelle = "user";
private $username;
public function __construct($username){
$this->username = $username;
$this->datenbankverbindung = new PDO($this->dsn , $this->dbUser, $this->dbPass);
}
public function selectUserData(){
$query = "SELECT username, passwordHash FROM $this->tabelle WHERE username = :username ";
$stmt = $this->datenbankverbindung->prepare($query);
$stmt->execute(
array(
":username" => $this->username
)
);
$userData = $stmt->fetch(PDO::FETCH_OBJ);
return $userData;
}
}
Alles anzeigen
<?php
class Logout{
private $cookieName;
public function __construct($cookieName){
$this->cookieName = $cookieName;
}
public function deleteCookie(){
setcookie($this->cookieName, "" , time() - 10000);
}
public function goToIndexPage(){
header("LOCATION: ../index.php");
}
}
Alles anzeigen
Grüße,
Stef