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

Langage PHP Discussion :

Mot de passe sans BDD


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut Mot de passe sans BDD
    Bonsoir,

    je souhaite restreindre une partie de mon site avec un mot de passe unique en utilisant un simple login en php (je ne compte pas faire un niveau de sécurité "CIA"; si il est hacké ce n'est pas bien grave^^).

    J'ai beau chercher de partout, à chaque fois que j'utilise un script, que le mot de pase soit bon ou erroné il m'autorise l'accès à la page en question.

    Voici ce que j'ai mis dans la page où l'on doit s'identifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <body>
     
    identification
     
    <form action="testmdp.php" methode="post" > 
    <input type="text" name="motdepasse" /> 
    <input type="submit" value="envoyer" /> 
    </form> 
     
    </body>
    Et voici ma page testmdp.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <body>
     
    <? if ( $_POST['motdepasse']!= 'toto' ) 
    { 
    header ("Location: testmdp.php"); 
    echo 'ok'; 
    exit(); 
    }else {echo "Mauvais mot de passe";} 
    } 
    echo 'Veuillez saisir votre mot de passe: <br>'; 
    echo '<form name="motdepasse" method="post" action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '">'; 
    echo '<input type=password name="motpasse" size="10" value="" />'; 
    echo '<input type="submit" name="action onClick=(this.form)" value="OK">'; 
    echo '</form>'; 
    ?> 
     
    Salut et bienvenu !
     
    </body>
    Vous allez me dire j'ai surement fais une grosse bourde mais il y a au moins 6 mois que je n'ai pas fait de php (et j'étais loin d'être un dieu avant ).

    Please help me !

    Edit : si vous avez en tete un code plus simple qui marche, je suis preneur.

    Edit 2 : j'ai testé un nouveau script qui me paraissait propre, mais ca ne marche toujours pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    if ( ($PHP_AUTH_USER=="eric") and ($PHP_AUTH_PW=="toto") )
         {$auth=true;} 
    else
         {$auth=false;}    
    if (!$auth) {
          header( 'WWW-Authenticate: Basic realm="Compte gestionnaire"' );
          header( 'HTTP/1.0 401 Unauthorized' ); 
          print "<html><head><title> ACCES NON AUTORISE</title></head><body>";   
          print "<center>Authentification nécessaire</center></html>";  
          exit;
    }
    else {
     
    header ("Location: private.php");
     
    }
     
    ?>
    Pour info : je fais mes tests sur wampserver 2.0

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Par défaut
    donc ... je reprend ton premier code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <body>
     
    <? if ( $_POST['motdepasse']!= 'toto' ) // là tu dis Si le mot de passe n'est pas bon ...
    { 
    header ("Location: testmdp.php");  // le Header ne marcheras pas vu que tu as déja envoyé au moins une info au navigateur ("<body>")
    echo 'ok'; // ne sert à rien si tu lance un header qui fonctionne, cette partie ne s'affichera pas !
    exit(); 
    }else {echo "Mauvais mot de passe";} 
    } 
    echo 'Veuillez saisir votre mot de passe: <br>'; 
    echo '<form name="motdepasse" method="post" action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '">'; 
    echo '<input type=password name="motpasse" size="10" value="" />'; 
    echo '<input type="submit" name="action onClick=(this.form)" value="OK">'; 
    echo '</form>'; 
    ?>
    correction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    <? 
    $erreur = '';
    if ( $_POST['motdepasse'] == 'toto' ) // Si le mot de passe est bien la chaine "toto"
    { 
    header ("Location: pageSecurisee.php"); 
    exit(); 
    }else {$erreur = "Mauvais mot de passe";} 
    } 
    ?>
    <!doctype ... >
    <html>
    <body>
    <div id="alert"><?php echo $erreur; ?></div>
    Veuillez saisir votre mot de passe: <br /> 
    <?
    echo '<form name="motdepasse" method="post" action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '">'; 
    echo '<input type=password name="motpasse" size="10" value="" />'; 
    echo '<input type="submit" name="action onClick=(this.form)" value="OK">'; 
    echo '</form>'; 
    ?>
    ceci devrait tourner ! @++

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le deuxième corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER']=="eric" && $_SERVER['PHP_AUTH_PW']=="toto") {
    	header ("Location: private.php");
    	exit();
     
    }
    else {
        sleep(2);
        header( 'WWW-Authenticate: Basic realm="Compte gestionnaire"' );
        header( 'HTTP/1.0 401 Unauthorized' ); 
        echo "<html><head><title>ACCES NON AUTORISÉ</title></head><body>";   
        echo "<center>Authentification nécessaire</center></html>";  
        exit;
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    Merci pour votre aide à tous les 2, mais ca ne marche toujours pas.

    Pour nours :

    Je n'ai pas touché à ma page d'identification (mdp.php), comme prévu, qui doit m'amener à testmdp.php si le code est bon.

    Pour ce qui est de testmdp.php j'ai fait les modifications que tu m'as proposé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <? 
    $erreur = '';
    if ( $_POST['motdepasse'] == 'toto' ) // Si le mot de passe est bien la chaine "toto"
    { 
    header ("Location: testmdp.php"); 
    exit(); 
    }else {$erreur = "Mauvais mot de passe";} 
    } 
    ?>
     
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Accueil IUP PVIA</title>
     
    </head>
    <body>
     
    <div id="alert"><?php echo $erreur; ?></div>
    Veuillez saisir votre mot de passe: <br /> 
    <?
    echo '<form name="motdepasse" method="post" action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '">'; 
    echo '<input type=password name="motpasse" size="10" value="" />'; 
    echo '<input type="submit" name="action onClick=(this.form)" value="OK">'; 
    echo '</form>'; 
    ?> 
     
    </body>
    </html>
    Que je rentre le bon ou le mauvais mot de passe, voici ce que j'obtiens :
    Notice: Undefined variable: erreur in D:\Programmes\wamp\www\testmdp.php on line 21

    Veuillez saisir votre mot de passe:
    A noter, l'url dans la barre d'adresse apparu devient :

    Pour toi sabotage :

    j'ai une page standart avec un lien qui m'amene à mdp2.php. Cette mdp2.php, la voici la voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Accueil IUP PVIA</title>
     
    </head>
    <body>
     
     
    <?php
    if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER']=="eric" && $_SERVER['PHP_AUTH_PW']=="toto") {
    	header ("Location: index.php");
    	exit();
     
    }
    else {
        sleep(2);
        header( 'WWW-Authenticate: Basic realm="Compte gestionnaire"' );
        header( 'HTTP/1.0 401 Unauthorized' ); 
        echo "<html><head><title>ACCES NON AUTORISÉ</title></head><body>";   
        echo "<center>Authentification nécessaire</center></html>";  
        exit;
    }
    ?>
     
    </body>
    </html>
    J'ai aussi fait un test en ne mettant que la partie php dans le code (donc sans le doctype et le body et tout le reste), et le resultat est idem : je n'ai plus la petite fenetre d'identification qui souvre me demandant login et mot de passe, mais j'arrive directement à ma page censée etre sécurisée (index.php).

    Je deviens fou avec ces mots de passe...

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Par défaut
    curieux, tu demande un passage des données en post ... et elles arrives en GET !...

    Vires le onClick sur ton bouton submit qui ne sert à rien, et confirmes moi que la ligne 21 est bien :

    if ( $_POST['motdepasse'] == 'toto' ) // Si le mot de passe est bien la chaine "toto"


    D'où ma question, qui a t-il au dessus ??

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    J'ai viré le onclick comme tu me l'as demandé, ce qui me donne pour cette petite partie en php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    echo '<form name="motdepasse" method="post" action="' . htmlspecialchars($_SERVER['REQUEST_URI']) . '">'; 
    echo '<input type=password name="motpasse" size="10" value="" />'; 
    echo '<input type="submit"  value="OK">'; 
    echo '</form>'; 
    ?>
    (en gros j'ai viré tout le truc action=....)

    retest, sur mdp.php je rentre "toto", je valide, et ca m'amene à la page testmdp.php toujours avec le même message d'erreur.

    La ligne "if ($post....)" est la ligne 3et non à la 21. Le code source de la page testmdp.php est copié dans son intégralité dans mes messages précédents, donc la seul chose qu'il y a au dessus est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <? 
    $erreur = '';
    if ( $_POST['motdepasse'] == 'toto' ) // Si le mot de passe est bien la chaine "toto"
    {
    Ma ligne 21 (en regardant sous dreamweaver pour ne pas me tromper de ligne^^) est celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="alert"><?php echo $erreur; ?></div>
    en esperant que ca puisse t'aider (à m'aider )

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 18
    Dernier message: 15/04/2008, 10h01
  2. Changer mot de passe sans connaître l'ancien
    Par luckan dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/06/2007, 19h12
  3. Bloquer le pc avec un mot de passe sans quiter la session
    Par paterson dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/11/2006, 21h16

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