Heim  >  Fragen und Antworten  >  Hauptteil

So fügen Sie der PHP-Anmeldefunktion eine Benutzerzugriffsebene hinzu

<p>Ich habe ein PHP-Anmelde-/Registrierungsskript entwickelt, das, wenn sich ein Benutzer anmeldet, eine Sitzung startet, ein Cookie erstellt und den Benutzer dann zu Dashboard.php umleitet, indem es Folgendes verwendet: </p> <pre class="brush:php;toolbar:false;">//Daten in Variablen abrufen $emailAddress = mysqli_real_escape_string($conn,$_POST['emailAddress']); $password = mysqli_real_escape_string($conn,$_POST['password']); $remember = isset($_POST['rememberMe']); if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) { $error = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'; } elseif(email_exists($emailAddress,$conn)) { // wenn E-Mail-Adresse vorhanden ist $result = mysqli_query($conn,"SELECT Passwort FROM Benutzer WHERE email = '$emailAddress'"); $retrievePassword = mysqli_fetch_assoc($result); if(!password_verify($password,$retrievePassword['password'])) // wenn das Passwort nicht übereinstimmt { $error = 'Passwort ist falsch.'; } else { // wenn Passwort korrekt, Benutzer anmelden $_SESSION['email'] = $emailAddress; if($remember == 'on') { // wenn "Benutzer angemeldet lassen" aktiviert wurde setcookie("email",$emailAddress,time()+7200); // Benutzer 2 Stunden lang angemeldet halten } header("location: Dashboard.php"); } } else { // wenn E-Mail nicht existiert $error = 'E-Mail-Adresse nicht registriert.'; }</pre> <p>Oben auf allen meinen eingeschränkten Seiten (z. B. Dashboard.php) befindet sich: </p> <pre class="brush:php;toolbar:false;">if(logged_in()) { // Wenn Benutzer angemeldet ist, Seite anzeigen</pre> Die Funktion <p>logged_in() lautet: </p> <pre class="brush:php;toolbar:false;">functionLOGged_in(){ if(isset($_SESSION['email']) || isset($_COOKIE['email'])) { return true; } anders { falsch zurückgeben; } }</pre> <p>In der Datenbank habe ich eine Spalte mit dem Titel <code>usrUserTypeNo</code>, die „1“ für Administratoren und „3“ für normale Benutzer enthält. Wie binde ich diesen Benutzertyp in die Sitzung ein, damit ich anhand seiner Rolle bestimmen kann, welche Inhalte dem Benutzer angezeigt werden? </p>
P粉680000555P粉680000555382 Tage vor395

Antworte allen(1)Ich werde antworten

  • P粉041856955

    P粉0418569552023-09-06 00:31:46

    不完全是。

    如果您想要执行三种不同的操作之一(未登录操作、正常用户操作、管理员用户操作),那么您必须测试这些状态并为每种状态编写逻辑。

    您可以将访问级别存储在会话中,而不是每次都从数据库请求它。

    Antwort
    0
  • StornierenAntwort