IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Refuser accès utilisateur non logger


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut Refuser accès utilisateur non logger
    Bonjour à tous,

    Je galère un peu...
    J'ai une page index.php d'authentification, si l'user et le mot de passe sont corrects l'utilisateur est redirigé vers saisirAppel.php. J'aimerais interdire l'accès à cette page, car il suffit de la rentrer en url pour l'afficher.
    J'utilise les sessions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php // si l'utilisateur n'est pas authentifié
            if(($_SESSION['user']!=$_POST['user']) OR ($_SESSION['pass']!=$_POST['pass'])
                    OR (!isset($_SESSION['user']) OR (!isset($_SESSION['pass'])))){
                echo '<script type="text/javascript">window.location=
                "...index.php";</script>'; //redirection index
            }
            else
            {
    Le problème c'est qu'en rentrant le bon mot de passe et le bon login on me redirige quand même vers index.php alors qu'il faudrait rediriger vers saisirAppel.php.

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Au plus simple, je ferais différement:

    Dans la page de connexion, si l'utilisateur login/mot de passe est ok donc vérifiés, je mettrais une variable session 'estConnect' à true false si pas bon.

    Ensuite sur chaque page que tu veux interdire l'accés, tu testes cette variable session à true sinon retour index.php

    Sinon pour ta condition if, tu as toujours une des conditions à vrai donc vérifies les valeurs avant la condition par un affichage (var_dump de $_session et $_post)
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Merci, ça fonctionne même si j'ai pas fais exactement ça.

    Je bloque sur le session_destroy maintenant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    <form method="post" action="index.php">
                    <input type="button" class="deconnexion" name="seDeconnecter" value="Se déconnecter"
                    class="myButtonSubmit" onclick='window.location.href="index.php";'>
     
                    <?php
                    if($_POST['seDeconnecter']){
                        session_destroy();
                    }
                    ?>
     
                </form>
    Lorsque je clique sur Se déconnecter je reviens bien sur index, mais quand je reviens sur saisirAppel j'ai toujours le login de l'utilisateur qui ne s'est pas supprimé !

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Forcement, à l'affichage de la page, $_post['seDeconecter'] n'existe pas ... tu devrais revoir le mécanisme du client/serveur

    Pour ton cas, tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onclick='window.location.href="index.php?req=deconect";
    Puis au début de page de index.php (tu effectues la deconnexion) sur le serveur entestant $_get['req']
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    comment ça en testant je vois pas désolé ?

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bein, tu écris les quelques lignes dans le code de index.php pour savoir si l'utilisateur demande une déconnexion ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if( $_get['req'] ==  'deconnect'){
        // traitement pour unset les variables user, pwd en $_session
        // session_destroy détruirait toutes les variables en session
    }
     
     
    // Ensuite reste de la page
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  7. #7
    Membre du Club
    Homme Profil pro
    NC NC
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : NC NC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Points : 49
    Points
    49
    Par défaut
    Salut

    Tu peux savoir quel bouton a été actionné lorsque un formulaire est posté en verifiant la valeur retournée (et non pas si elle est retournée) puis poser des conditions pour effectuer un script en fonction du bouton actionné.

    Exemple dans ton cas :
    if (isset($_POST['seDeconnecter']) && $_POST['seDeconnecter'] == 'seDeconnecter') ;

    // Effacement des données session
    session_destroy();

    // retour vers la page index.php
    header('Location: index.php');
    exit();

    endif;


    Attention header() ne peut etre utilisé qu'une seule fois par page et retournera une erreur si quoi que ce soit a déja été affiché. Je t conseille de le mettre en tete de ton script

    En supposant que la page contenant ton formulaire s'apelle page_form.php, elle pourrait ressembler à cela :

    <?php
    //OUVERTURE DE SESSION ////////////////////////////////
    session_start();

    //TEST BTN SeDeconnecter ////////////////////////////////
    if (isset($_POST['seDeconnecter']) && $_POST['seDeconnecter'] == 'seDeconnecter') ;

    // Effacement des données session
    session_destroy();

    //Appel de la page index.php
    header('Location: index.php');
    exit();

    endif;


    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    ..........

    </head>
    <body>

    ...........

    <form method="post" action="page_form.php">
    <input type="button" class="deconnexion" name="seDeconnecter" value="Se déconnecter">
    </form>

    ........

    </body>
    </html>



    C'est bien sur à tester et n'est donné qu'à titre d'exemple.

    Cordialement, Pascal

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    http://php.net/manual/fr/function.session-destroy.php

    session_destroy() détruit toutes les données associées à la session courante. Cette fonction ne détruit pas les variables globales associées à la session, de même, elle ne détruit pas le cookie de session. Pour accéder à nouveau aux variables de session, la fonction session_start() doit être appelée de nouveau.

    Pour détruire complètement une session, comme faire sortir l'utilisateur, l'identifiant de la session doit également être effacé. Si un cookie est utilisé pour propager l'identifiant de session (comportement par défaut), alors le cookie de session doit être effacé. La fonction setcookie() peut être utilisée pour cela.

    le mieux c'est de faire une session avec dedans util par exemple

    lors de la visite
    si $_SESSION['util'] existe pas
    $_SESSION['util'] = array()

    si bon login => $_SESSION['util']['connect'] = true;

    si deconnexion =>unset($_SESSION['util'])

    sur les pages
    si $_SESSION['util']['connect'] == true => afficher page admin
    si $_SESSION['util']['connect'] != true => afficher page visiteur



    comme pour la sécurité c pas au top, il faut mettre ca en bdd avec un token, mais la c'est un autre sujet


    pour dire que session_destroy ca fonctionne bien, mais pas comme ont y s'attend.[abandonné depuis php4.2 ; curent version php5.2]
    Conception / Dev

Discussions similaires

  1. Accès refusé car données non partagées
    Par ploukinet dans le forum Windows XP
    Réponses: 2
    Dernier message: 01/02/2009, 23h17
  2. Réponses: 7
    Dernier message: 15/12/2006, 10h22
  3. Accés Refusé : "nom utilisateur/mot passe"
    Par devlopassion dans le forum Administration
    Réponses: 7
    Dernier message: 14/10/2006, 11h46
  4. Accès refusé à un utilisateur
    Par laindown dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/07/2006, 12h56
  5. Réponses: 10
    Dernier message: 07/06/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo