8722 sujets

Développement web côté serveur, CMS

Bonjour, je vient d'installer sur mon site, un script pour protéger une page avec sessions php, le problème est que lorsque je rentre mes identifiants, je me retrouve sur la page de verification.php et la il ne ce passe plus rien, étant débutant en php, pouvez-vous m'aider merci. Vous pouvez trouver le formulaire de session sur mon site a cette adresse : http://dijonnumismatique.free.fr/auth.php

Voici les différents fichier pour l'authentification.

identification.php

<?php
session_start(); // on initalise les sessions php

// on inclu la page de config
include("config.php");

if(isset($_POST['login']) && isset($_POST['mdp']))
{
    $login = htmlentities($_POST['login'], ENT_QUOTES); 
    $mdp = htmlentities($_POST['mdp'], ENT_QUOTES);
    
    // on crypt le mot de passe envoyer par le formulaire
    $password_md5 = md5($mdp);
  
    if(($_admin_login == $login) && ($password_md5 == $_admin_pass))
    {
        $_SESSION['_login'] = $login;
        $_SESSION['_pass'] = $password_md5;

        echo '<p style="color:green">Connexion réussi! </p>';
        echo '<p><a href="admin.php">Page admin</a></p>';
    }
    else
    {
        echo '<p style="color:red">Mauvais login ou mot de passe</p>';
        include("auth.php");
        exit();
    }
  
 }
?>


verif.php

<?php
session_start();

// on inclu la page de config
include("config.php");

if(!isset($_SESSION['_login']) || !isset($_SESSION['_pass']))
{
    // si on ne détecte aucune sessions, c'est que cette personne n'est pas connecté
    // on affiche le formulaire de connexion
    echo '<p><b style="color:red">espace sécurisé</b><br />Connecté vous pour accéder à cette page</p>';
    include("auth.php");
    exit();
}
else
{
    // les sessions existe ... reste à savoir si les informations sont correct ou non
    if(($_admin_login != $login) || ($password_md5 != $_admin_pass))
    {
        echo '<p><b style="color:red">Votre connexion ne semble pas valide</b></p>';
        include("auth.php");
        exit();
    }
}
?>


config.php

<?php
$_admin_login = md5('admin'); // on crypt pour pouvoir comparer - plus securisé
$_admin_pass = 'test';
?>


admin.php

<?php
include('verif.php'); // si la vérification est ok : on aura accès au reste de la page.

echo '
<p>
    <b>Bonjour</b><br />
    Vous est connecté en tant que <b>'.$_SESSION['_login'].'</b>
</p>';
?>


authentification.php

<p>Formulaire de connexion Login : admin ; password : test</p>
<form action="identification.php" method="post">
Login :<input type="text" name="login" value=""><br>
Password :<input type="password" name="mfp" value=""><br>
<input type="submit" value="envoyer">
</form>


Merci pour votre aide
Modifié par 2bstudio (30 Aug 2007 - 17:59)
$_admin_login = md5('admin');


Déjà ça ne va pas ça : Tu met ton password en clair dans un fichier php, donc le md5 ne sert à rien Smiley smile

Ce qu'il faut faire : mettre l'empreinte md5 directement dans $_admin_login (donc la chaine de 32 caracteres). Et vu que tu hash le pass lors de l'identification, l'egalité reste la même Smiley smile

De plus, regarde ton fichier de config, c'est le login que tu as hashé en md5, pas le mot de passe ! Ca ne risque pas de fonctionner déjà Smiley smile
@Surfoo > +1

Salut 2bstudio Smiley cligne ,

j'ajouterais que dans ton formulaire tu as mis mfp à la place de mdp Smiley langue .

D'autre part dans verif.php tu testes bien que tes variables de session existent mais le test qui vient ensuite :
if(($_admin_login != $login) || ($password_md5 != $_admin_pass))
ne peut pas fonctionner. Il faudrait plutôt écrire :
if(($_admin_login != $_SESSION['_login']) || ($_admin_pass != $_SESSION['_pass']))

A+ Smiley smile
Merci à tous le script fonctionne maintenant correctement. Smiley cligne
Modifié par 2bstudio (30 Aug 2007 - 17:59)