javascript - true - script defer




Script de connexion avec des boutons cachés (4)

J'ai utilisé PHP et JavaScript pour construire le site Web de mon père. Il veut intégrer un système de connexion dans son site Web, et j'ai la conception pour le système en utilisant PHP. Mon problème est de savoir comment afficher les boutons si la personne est connectée?

Par exemple - Vous avez Accueil , Produits , À propos de nous et Contact . Je veux avoir des boutons pour Dealer , Distributeur , et peut-être d'autres informations si l'utilisateur est connecté. Donc je vais avoir Accueil , Produits , À propos de nous , Contacts , Concessionnaire (si connexion concessionnaire), Distributeur (si connexion distributeur), et ainsi avant.

JavaScript serait-il un bon moyen de le faire ou serait PHP, ou peut-être même les deux? Utiliser JavaScript pour afficher et masquer les boutons, et PHP pour vérifier les boutons à afficher.


En ce qui concerne la sécurité, vous ne pouvez pas faire confiance à ce qui vient du client :

  • Le visiteur peut voir tout votre code (HTML et Javascript, pas PHP) et essayer des trucs
  • Le visiteur ne peut même pas utiliser un navigateur; il est trivialement facile d'envoyer une requête avec un script

Cela signifie cacher les boutons est une bonne conception de l'interface utilisateur (parce que vous ne pouvez pas les utiliser si vous n'êtes pas connecté). Mais ce n'est pas une fonctionnalité de sécurité. La fonction de sécurité vérifie, sur le serveur, que le visiteur est connecté avant chaque action qui l'exige.

Si vous n'avez pas l'intention d'afficher les boutons, il n'est pas utile d'envoyer le code HTML et les images au navigateur, puis de les cacher avec Javascript. Je voudrais vérifier avec PHP.


Si vous utilisez javascript pour masquer les boutons, vous ouvrez un trou de sécurité dans l'application. Un utilisateur malveillant peut soit désactiver le javascript, soit en appliquer quelques-uns pour contourner votre sécurité.

Je suggère d'utiliser PHP pour choisir de rendre les boutons ou non. Je le fais souvent dans .NET.

Vous devriez être en mesure de vérifier l'accès de l'utilisateur côté serveur chaque fois qu'il essaie d'utiliser un bouton restreint.


Fondamentalement où vous avez votre menu en HTML, disons comme une liste <ul> <li>Home</li> </ul> vous ajoutez php après </li> du dernier élément:

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

<li>My Account</li>

<?php  
  }
?> 

Dans votre fichier de menu ou w / e vous mettez:

<? 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>

Ensuite, dans les pages qui exigent auth, faites ceci:

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

Où auth.php peut contenir:

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

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






php