Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Passwort gesicherter bereich mit admin Seiten
#1
Ihr habe das Script  https://www.php-einfach.de/experte/php-c...ginscript/
Mal erweitert um einen Admin Bereich. Das heißt das Leute mit dem Admin Status noch extra Seiten sehen können ( ZB Einstellungen die nur Admins machen dürfen).
Das Script wurde um mehrere Teile verändert und deswegen zeige ich euch jetzt alle Dateien mit dem geänderten Inhalt.
Man benötigt NR 1 bis 5

Nr 1 Registrierung
PHP-Code:
<?php 
session_start
();
$pdo = new PDO('mysql:host=localhost;dbname=sebastian1012''sebastian1012''passwort');
?>
<!DOCTYPE html> 
<html> 
<head>
  <title>Registrierung</title>    
</head> 
<body>
<?php
$showFormular 
true;
if(isset(
$_POST['register'])) {
 
   $error false;
 
   $email $_POST['email'];
 
   $passwort $_POST['passwort'];
 
   $passwort2 $_POST['passwort2'];
 
     $admin $_POST['admin'];
 
   if(!filter_var($emailFILTER_VALIDATE_EMAIL)) {
 
       echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
 
       $error true;
 
       
    if
(strlen($passwort) == 0) {
 
       echo 'Bitte ein Passwort angeben<br>';
 
       $error true;
 
   }
 
   if($passwort != $passwort2) {
 
       echo 'Die Passwörter müssen übereinstimmen<br>';
 
       $error true;
 
   }
 
   if(!$error) { 
 
       $statement $pdo->prepare("SELECT * FROM testuser WHERE email = :email");
 
       $result $statement->execute(array('email' => $email));
 
       $user $statement->fetch();
 
       if($user !== false) {
 
           echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
 
           $error true;
 
          
    
}
 
   if(!$error) {    
        $passwort_hash 
password_hash($passwortPASSWORD_DEFAULT);
 
       $statement $pdo->prepare("INSERT INTO testuser (email, passwort, admin) VALUES (:email, :passwort, :admin)");
 
       $result $statement->execute(array('email' => $email'passwort' => $passwort_hash'admin' => $admin));
 
       if($result) {        
            echo 
'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
 
           $showFormular false;
 
       } else {
 
           echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
 
       }
 
   
}
if(
$showFormular) {
?>
<form action="registrieren.php" method="post">
E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Dein Passwort:<br>
<input type="password" size="40"  maxlength="250" name="passwort"><br>
Passwort wiederholen:<br>
<input type="password" size="40" maxlength="250" name="passwort2"><br><br>
Willst du Admin sein ?
 <select name="admin">
 <option value="false">Nein</option>
 <option value="true">Ja</option>
 </select>
<input name="register" type="submit" value="Abschicken">
</form>
<?php
//Ende von if($showFormular)
?>
</body>
</html> 
Wie man sieht kann man bei der Registrireung den Admin Status selber aussuchen.
Das müßte man dann wegmachen und so umbauen das der Status  nur von Den Admi vergeben kann ,oder wie auch immer.

2 Datei der Login Bereich
PHP-Code:
<?php 
session_start
();
if(isset(
$_SESSION['userid'])) {
die(
"Du bist schon eingeloggt.<a href='logout.php'>Ausloggen ? </a>");
}else{
$pdo = new PDO('mysql:host=localhost;dbname=sebastian1012''sebastian1012''passwort');
if(isset(
$_POST['login'])) {
    $email $_POST['email'];
    $passwort $_POST['passwort'];
    $statement $pdo->prepare("SELECT * FROM testuser WHERE email = :email");
    $result $statement->execute(array('email' => $email));
    $user $statement->fetch();
    if ($user !== false && password_verify($passwort$user['passwort'])) {
        $_SESSION['userid'] = $user['id'];
            $statement $pdo->prepare("SELECT * FROM testuser WHERE admin = ? AND email = ?");
            $statement->execute(array('true',$email));   
               while
($row $statement->fetch()) {
                       $_SESSION['admin'] = true;
                   echo '<br>Du bist Admin <a href="admin.php">Admin Bereich</a><br>';
               }   
                   die
('Login Bereich <a href="geheim.php">internen Bereich</a>');
    } else {
        $errorMessage "E-Mail oder Passwort war ungültig<br>";
    }
}
?>
<!DOCTYPE html> 
<html> 
<head>
<title>Login</title>    
</head> 
<body>
<?php 
if(isset($errorMessage)) {
    echo $errorMessage;
}
?>
<form action="login.php" method="post">
E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Dein Passwort:<br>
<input type="password" size="40"  maxlength="250" name="passwort"><br>
<input name="login" type="submit" value="Abschicken">
</form> 
</body>
</html>
<?php
}
?>
Dazu gibt es ja nix mehr zu sagen.Außer das dieses Scrippt noch verbessert wird .
Soll heißen es wird kürzer und die Datenbank abfrage gekürzt.Aber dazu muß ich noch Googeln wie man das machen könnte.
Aber keine sorge das Script Funktioniert so bestens.

Nr 3 Beispiel Seite für eingeloggte Besucher
PHP-Code:
<?php
session_start
();
if(!isset(
$_SESSION['userid'])) {
    die('Bitte zuerst <a href="login.php">einloggen</a>');
}
echo 
"Hallo hier ist der Bereich den nur registrierte User sehen können";
echo 
'<a href="logout.php">Log dich aus</a>';
?>

Nr 4 Beispiel Seite Für Besucher Mit Admin Status
PHP-Code:
<?php
session_start
();
if(!isset(
$_SESSION['userid'])) {
    die('Bitte zuerst <a href="login.php">einloggen</a>');
}
if(isset(
$_SESSION['admin'])) {
echo 
"Hier ist der zusätzliche Bereich den nur  Admine  sehen können";
echo 
'<a href="logout.php">Log dich aus</a>';
}else{
echo 
"<h2>Error</h2>Du hast keinen Admin Status <a href='geheim.php'>Zum Passwort gesicherten Bereich zurück</a>";
}
?>

Nr 5 Logout Script.
PHP-Code:
<?php
session_start
();
if(isset(
$_SESSION['userid'])) {
session_destroy();
echo 
"Logout erfolgreich<a href='login.php'>Wieder Einloggen ?</a>";
}else{
echo 
"<h2>ERROR</h2>Wer nicht eingeloggt ist brauch sich auch nicht ausloggen<a href='login.php'>Login </a>";
}
?>
So sieht es dann aus, wenn alles fertig ist.
**Link entfernt, weil Seite nicht mehr erreichbar **
Hier wird der Ordner aufgerufen wo die ganzen Dateien drinnen sind und zu einer Indexdatei weitergeleitet wo man die Einzelne Dateien sehen kann.Je nach Status werden die verschiedene Zugriffsmöglichkeiten angezeigt.
Bei Interesse kann man das Script auch benutzen ,brauch man aber nicht.

Nr 6 Order Index
PHP-Code:
<?php
session_start
();
?>
<h1>Index Datei vom Php Login Script mit Admin Status</h1>
<?php
if(isset($_SESSION['userid'])) {
 
    if(isset($_SESSION['admin'])) {
?>
<a href="admin.php">Admin Bereich</a><br>
<?php
 
}
 
?>
 <a href="geheim.php">Passwort gesicherter Bereich</a><br>
 <a href="logout.php">Logout</a>
 <?php
}else{
?>
<h2>Gehe zu</h2>
<a href="registrieren.php">Registrieren</a><br>
<a href="login.php">Login</a><br>
<a href="geheim.php">Passwort gesicherter Bereich</a>[ Gespärt ]<br>
<a href="admin.php">Admin Bereich</a>[ Gespärt ]<br>
 <a href="logout.php">Logout</a>[ Geht erst bei eingelogten Status ]
<?php
}
?>
Damit beim Ordner aufruf auch keine Datein angezeigt wird erstellen wir noch eine .htaccess Datei die in den Ordner mit rein gehört mit folgenen Inhalt

Nr 7 .htaccess
Code:
DirectoryIndex index.php
Erstellt euch eigene Login Namen und testet es selber.
Punkt 6 und 7 wird für die Funktion des  Login Script nicht benötigt.

Da ich Anfänger bin laß ich mich auch gerne belehren wenn ich was nicht richtig gemacht habe.
Zitieren


Nachrichten in diesem Thema
Passwort gesicherter bereich mit admin Seiten - von admin - 18.04.2022, 17:20

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste