Frage

Ich habe PHP und JavaScript zum Erstellen der Website meines Vaters verwendet.Er möchte ein Login-System in seine Website integrieren, und ich habe das Design für das System mit PHP.Mein Problem ist, wie ich Schaltflächen anzeigen kann, wenn die Person angemeldet ist?

Zum Beispiel - Du hast Heim, Produkte, Über uns, Und Kontakt.Ich möchte Knöpfe für haben Händler, Verteiler, und möglicherweise andere Informationen, wenn der Benutzer angemeldet ist.Also werde ich haben Heim, Produkte, Über uns, Kontakte, Händler (bei Händler-Login), Verteiler (bei Händler-Login) usw.

Wäre JavaScript eine gute Möglichkeit, dies zu tun, oder wäre PHP oder vielleicht sogar beides?Verwenden Sie JavaScript zum Ein- und Ausblenden von Schaltflächen und PHP, um zu prüfen, welche Schaltflächen angezeigt werden sollen.­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

War es hilfreich?

Lösung

Was die Sicherheit betrifft, Sie können dem, was vom Kunden kommt, nicht vertrauen:

  • Der Besucher kann Ihren gesamten Code sehen (HTML und Javascript, nicht PHP) und Dinge ausprobieren
  • Der Besucher darf nicht einmal einen Browser verwenden;Es ist trivial einfach, eine Anfrage mit einem Skript zu senden

Das bedeutet, dass das Ausblenden der Schaltflächen ein gutes Design der Benutzeroberfläche ist (weil Sie sie nicht verwenden können, wenn Sie nicht angemeldet sind).Aber es handelt sich nicht um eine Sicherheitsfunktion.Die Sicherheitsfunktion überprüft auf dem Server, ob der Besucher angemeldet ist, bevor jede Aktion ausgeführt wird, die dies erfordert.

Wenn Sie die Schaltflächen nicht anzeigen möchten, ist es nicht sinnvoll, den HTML-Code und die Bilder an den Browser zu senden und sie dann mit Javascript auszublenden.Ich würde mit PHP nachsehen.

Andere Tipps

In Ihre Menüdatei oder wo Sie Folgendes einfügen:

<? require 'auth.php' ?>
<ul>
    <li><a href="">Home</a></li>
    <li><a href="">Products</a></li>
    <? if( loggedin() ): ?><li><a href="">Secret area</a></li><? endif; ?>
</ul>

Dann machen Sie auf Seiten, die eine Authentifizierung erfordern, einfach Folgendes:

<?php 
    require 'auth.php';
    require_login();
?>

Wobei auth.php Folgendes enthalten kann:

<?php
    function loggedin(){
        return isset( $_SESSION['loggedin'] );
    }

    function require_login(){
        if( !loggedin() ){
            header( 'Location: /login.php?referrer='.$_SERVER['REQUEST_URI'] );
            exit;
        }
    }
?>

Wenn Sie Javascript zum Ausblenden der Schaltflächen verwenden, entsteht eine Sicherheitslücke in der Anwendung.Ein böswilliger Benutzer könnte entweder Javascript deaktivieren oder eigenes verwenden, um Ihre Sicherheit zu umgehen.

Ich schlage vor, PHP zu verwenden, um zu entscheiden, ob die Schaltflächen gerendert werden sollen oder nicht.Ich mache das ziemlich oft in .NET.

Sie sollten auch in der Lage sein, den Zugriff des Benutzers auf der Serverseite zu überprüfen, wenn dieser versucht, eine eingeschränkte Schaltfläche zu verwenden.

Was wir bei meiner Arbeit gemacht haben, ist eine Bibliothek, die Funktionen bereitstellt, wie zum Beispiel die Überprüfung, ob der Benutzer angemeldet ist.Zum Beispiel:

<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
    echo 'html for logged in user';
}
// rest of html

Bei Seiten, die nur authentifizierte Benutzer sehen sollen, prüft der Controller, ob sie angemeldet sind, und leitet sie andernfalls zur Anmeldeseite weiter.

<?php
public function viewCustomer($customerId) {
    if (!isLoggedIn())
        redirectToLoginPage();
}

Alles, was Christian Lescuyer geschrieben hat, ist richtig.Beachten Sie jedoch, dass er „Ich würde“ und nicht „Sie sollten“ sagte.Die Wahl ist nicht so einfach.

Erstens ist Sicherheit bei der Wahl kein Thema.Sie sollten eine Sicherheitsüberprüfung des Servers durchführen, wenn Sie eine Aktion ausführen.Welcher Code entscheidet, die Schaltfläche anzuzeigen/auszublenden, die zur Aktion führt, ist unerheblich.

Damit haben wir nur einen Nachteil bei der Ein-/Ausblendlogik in Javascript: Der an den Benutzer gesendete HTML-Code ist größer als nötig.Das ist vielleicht keine große Sache.

Allerdings hat die Ein-/Ausblendlogik in PHP auch einen Nachteil.Der erforderliche PHP-Code ist normalerweise a Schlagwort Suppe.Der Code von Akira ist ein gutes Beispiel dafür, wie es normalerweise gemacht wird.

Der entsprechende Javascript-Code würde wahrscheinlich etwa so aussehen:

if (logged())
{
    elementSecretArea.style.display = "list-item";
}

(vorausgesetzt, dass Elemente, die ausgeblendet werden könnten, standardmäßig display:none haben).

Dieser Stil ermöglicht auch ein schönes „Ajax“-Szenario:Der Benutzer sieht eine Seite ohne geheimen Bereich, gibt das Passwort ein und sieht den geheimen Bereich, ohne die Seite zu aktualisieren.

Wenn Sie also aus anderen Gründen bereits über ein Skript verfügen, das beim Laden Ihres Dokuments ausgeführt wird, würde ich ernsthaft darüber nachdenken, dort eine Ein-/Ausblendlogik einzuführen.

Grundsätzlich haben Sie Ihr Menü in HTML, beispielsweise als Liste <ul> <li>Home</li> </ul> Sie fügen danach PHP hinzu </li> des letzten Artikels:

<?php
  if($session-logged_in) {    
?>

<li>My Account</li>

<?php  
  }
?> 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top