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 :

[Sécurité] la protection des pages par session ne marche pas


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut [Sécurité] la protection des pages par session ne marche pas
    je n'arrive pas à securisé la page membre.php
    voila mon code:
    formulaire de connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form Name="post"  action="connexion.php" method="post" onsubmit="javascript: return verification(this);" >
    <pre>
    <span class="Style6">Login</span>                           <span class="Style6">:</span> <input name="pseudo" size=25><br><br>
    <span class="Style6">Mot de passe</span>                    <span class="Style6">:</span> <input type="password" name="password" size=25><br><br>
    fichier connexion:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
    session_start();
     
    require "include/db_connect.php";
     
     
     
    	//if (isset($_POST['submit']))
    	//{
    		// bouton submit pressé, je traite le formulaire
     
    	    $pseudo  = (isset($_POST['pseudo'])) ? htmlentities(trim($_POST['pseudo'])) : '';
    	    $password   = (isset($_POST['password']))    ? htmlentities(trim($_POST['password']))   : '';
     
        if (($pseudo != '') && ($password != ''))
    	{
    		// Login et pwd non vides, on  vérifie s'il y a quelqu'un qui correspond
    		$req_utilisateur = sprintf("SELECT
    						email,
    						prenom,
                            statut						
    					FROM
    						gx_user
    					WHERE
    			(pseudo = '".$_POST["pseudo"]."' AND pass ='".$_POST["password"]."');",$pseudo, md5($password));
    		$utilisateur = mysql_query($req_utilisateur) or die($req_utilisateur."<br />\n".mysql_error());
     
    		if (mysql_num_rows($utilisateur) == 1)
    		{
    			// Oui il y a quelqu'un ...
    			$personne = mysql_fetch_array($utilisateur);
     
    			// On  enregistre ses données dans la session
    			$_SESSION['pseudo'] = $pseudo; // permet de vérifier que l'utilisateur est bien connecté
    			$_SESSION['prenom'] = $personne['prenom'];
    			$_SESSION['statut'] = $personne['statut'];
    			$_SESSION['email'] = $personne['email'];
     
    			// Maintenant que tout est enregistré dans la session, on redirige vers la page des photos
    			//echo '<p>Vous êtes correctement identifié(e), <a href="liste-photos.php">cliquez ici pour visualiser les photos</a></p>'."\n";
    			header("Location: membre/accueil.php");
                exit;
    		}
            else
    		{
    		// Erreur dans le login et / ou dans le mot de passe ...
    			echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
    			echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
    		}
     
        }
    	else
    	{
    			// Erreur dans le login et / ou dans le mot de passe ...
    			echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
    			echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
     
    	}
    ?>
    fichier dont je doit interdire l'acces aux intrus
    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
    session_start(); // ici on continue la session
    if ((!isset($_SESSION['pseudo'])) || ($_SESSION['pseudo'] == ''))
    {
    	// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
    	echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
    	echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
    	exit();
    }
    ?>
    <html>
    <body>
    contenu de la page
    </body>
    </html>
    que je clique sur lui directement il m'affiche "contenu de la page",alors qu'il devait me donner un msg et le lien pour pour se connecter ou b1 s'inscrire.
    et merci

  2. #2
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    deja essaye comme ca
    j ai remarque aussi dans le sprintf de ta requete sql, il ya des choses qui ne vont pas, je presume que c'etait pour le debuggage que tu met directement les post, mais dans ce cas la il faut hasher le password en md5 avant




    Citation Envoyé par timboy11 Voir le message
    Code php : 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
    session_start(); // ici on continue la session
    if ((!isset($_SESSION['pseudo'])) || ($_SESSION['pseudo'] == ''))
    {
    	// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
    	echo '<p>Désolé, cette page est réservée aux membres,veuillez vous identifier,<a href="login.php" >ICI</a> </p>'."\n";
    	echo '<p> Si vous n\'êtes pas membre veuillez vous enregistrer,<a href="inscrire.php" >ICI</a> </p>'."\n";
    	exit();
    }
    else
    {
    echo <html>
    <body>
    contenu de la page
    </body>
    </html>";
    }
    ?>
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    je peux toujours y acceder par url sans taper mes identifiants
    et si j'ai plusieurs pages à proteger de la meme façon,je c mieux d'utiliser
    include,mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    else
    {
    echo <html>
    <body>
    contenu de la page
    </body>
    </html>";
    }
    ?>
    c impossible vu que je aurais "contenu de la page" dans toutes mes pages.
    je te remercie

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Est-ce que tu as bien supprimé le cookie de session de ton navigateur ?
    Parce que si tu t'es loggué une fois, il est normal que tu accèdes au contenu de la page, puisque ta session est toujours ouverte...

    En plus de "contenu de la page", pour en avoir le cœur net, tu peux afficher le contenu de $_SESSION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    echo "<pre>";
    var_dump($_SESSION);
    echo "</pre>";

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    ce ce que j'ai cru au debut,mais peu importe ça marche maintenant,
    je vous remercie pour votre aide Eusebe et chtipitou.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    j'ai essayer avec deconnexion,mais elle marche pas,elle ne detruit pas la session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
    // Déconnexion
    if ((isset($_GET['act'])) && ($_GET['act'] == 'logout'))
    {
    	$_SESSION = array();
    	session_destroy();
    
    	// on relance une session pour une éventuelle reconnexion
    	session_start();
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
    <body>
    <p><a href="login.php?action=logout" title="Déconnexion">Se déconnecter</a></p>
     
    contenu de la page
    </body>
    </html

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Tu passes à ta page le paramètre "action", et tu testes le paramètre "act"...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    dsl mais j'ai pas compris ce que tu veux dire

    le deuxieme code est situé ds une page privé,et quant je cique sur deconnxion
    il m'envoi vers l'index,mais si je clique sur precedent,je constate qu'il n'a r1 detruit,et que je peux acceder à la page.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    j'ai trouvé ça "session.auto_start = 0" dans mon php.ini

    c peut etre la source du probleme,j'ai lu ça qlq part

  10. #10
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    login.php?action=logout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($_GET['act'])) && ($_GET['act'] == 'logout'))
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    j'ai corrigé ce que tu m'a montré mais r1,
    mais j'ai trouvé la solution
    fichier deconnexion.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
    // Déconnexion
    session_destroy();
    header('Location: login.php');
    
    ?>
    le fichier à proteger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="../deconnexion.php">w&lt;x&lt;wx</a></p>
    merci beaucoup

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

Discussions similaires

  1. Protection des dossiers par htaccess
    Par anthony.voilet dans le forum Apache
    Réponses: 1
    Dernier message: 26/06/2008, 13h53
  2. Gestion des pages par rapport aux menus
    Par darontankian dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 21h59
  3. [Sécurité] Protection des pages
    Par theskel dans le forum Langage
    Réponses: 16
    Dernier message: 19/10/2006, 16h20
  4. [Sécurité] Problème avec des variables de session
    Par zoom61 dans le forum Langage
    Réponses: 28
    Dernier message: 18/08/2006, 21h05
  5. Réponses: 1
    Dernier message: 14/02/2006, 00h40

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