Probleme avec session et md5

Fermé
pady - 25 janv. 2010 à 15:55
 pady - 26 janv. 2010 à 13:39
Bonjour,
j'ai un probleme avec mon code je m'explique:
je travail sur une base existante ou les login et les mots de passe son existant(les mot de passe son codé en md5 dans la base)
à parti de l'utilisateur et du mot de passe entré l'application doit reconnaitre l'utilisateur et le redirigé vers l'espace approprié : sauf que sa se fait pas la page login.php n'est pas appelé voici mon code :

<?php
session_start ();
include("php/connect.php");

db_connect();

$sql="select
*
from securite
where secu_mdp= '".md5($_POST['pass'])."'
AND secu_login = '".$_POST['login']."';";

$req = db_query($sql);
$row = db_fetch_array($req);

//on vérifie si le login et le mot de passe son autorisé

if ( $_POST['login']==$row['secu_login'] && $_POST['pass']==$row['secu_mdp']) {

$_SESSION['login'] = $_POST['login'];
$_SESSION['pass'] = $_POST['pass'];

header ('location: demande_conge.php');

}else{
echo '<body onLoad="alert(\'Membre non reconnu...\')">';

echo '<meta http-equiv="refresh" content="0;URL=index.html">';
}
?>


pourriez vous m'aider SVP

20 réponses

le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
25 janv. 2010 à 16:08
Salut,

Dans ton if ou tu vérifie le login et le mot de passe du oublie de crypté le mot de passe saisi en md5.

if ( $_POST['login']==$row['secu_login'] && $_POST['pass']==$row['secu_mdp'])

Donc forcément le mot de passe en claire ne correspond pas au hash md5() de ta basse. Crypte le et normalement cela devrais fonctionner.

if ( $_POST['login']==$row['secu_login'] && md5($_POST['pass']==$row['secu_mdp']))

Bonne continuation.
0
Bonjour

Petite faute de frappe de le_joker_jour au niveau des parenthèses :

if ( $_POST['login']==$row['secu_login'] && md5($_POST['pass'])==$row['secu_mdp'])

Mais je ne vois pas très bien l'intérêt de cette vérification, puisqu'elle a déjà été faite par la clause WHERE de la requête .
Par contre, il faut vérifier if (mysql_num_rows($req) >0) pour savoir s'il y a au moins un membre a été reconnu
0
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
25 janv. 2010 à 16:20
Erf désolé j'ai été un peu trop vite. Merci de m'avoir corriger le père.
0
merci,
pour votre consideration rapide envers mon problème

if ( $_POST['login']==$row['secu_login'] && md5($_POST['pass'])==$row['secu_mdp']) {

je l'utilise comme condition pour acceder à l'application.
ma base de données est sous PostgresSQL (j'utilise Pgadmin)

la page login.php n'est toujours pas appelé après modification

cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ma base de données est sous PostgresSQL
Pardon, c'était donc pg_num_rows au lieu de mysql_num_rows

Je ne vois toujours pas l'intérêt de if ( $_POST['login']==$row['secu_login'] && md5($_POST['pass'])==$row['secu_mdp']) alors que dans ta requête il y a déjà
where secu_mdp= '".md5($_POST['pass'])."'
AND secu_login = '".$_POST['login']."';";


la page login.php n'est toujours pas appelé après modification
Quelle page ? login.php ou demande_conge.php ?
Vois-tu le message Membre non reconnu... ?
0
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
25 janv. 2010 à 17:06
Salut,

Que contient ta page login.php, car si ton identification est correct tu appelles la page demande_conge.php

header ('location: demande_conge.php');

je ne comprend pas très bien.
0
D'ailleurs, es-tu sûr de tes fonctions db_query et db_fetch_array ? Normalement, les fonction pour postgreSQL s'appellent pg_xxx
0
je pars d'un formulaire en html et quand on valide c'est login.php qui doit être appelé et après la reconnaissance par login.php on doit être dirigé vers demande_conge.php ou alors rediriger vers la page html en principe c'est de la sorte que je souhaiterais que la connexion se passe.
mais je reçoid rien même pas de message d'erreur je reste a la page index.html
0
voila ma fonction connect.php que j'"include":

$host = xxxxxxxxxxx;
$database = "xxxxxxxxxx";
$user = "xxxxxxx";
$password = "xxxxxxx";
$connect = xxxxx;


function db_connect()
{
global $connect;
global $host;
global $database;
global $user;
global $password;

$connect = pg_connect( "host=".$host." port=5432 dbname=".$database." user=".$user." password=".$password );
if( $connect == FALSE )
{
echo "Connexion impossible avec la base.";
}
}


function db_fetch_array( $rResultP )
{
return pg_fetch_array( $rResultP );
}

function db_query ( $szQueryP )
{
global $connect;
$result = pg_query( $connect, $szQueryP );
if( !$result )
{
echo "Error 2311 : ".$szQueryP."<br>";
}
return $result;
}

function db_query_silent ( $szQueryP )
{
global $connect;
$result = @pg_query( $connect, $szQueryP );
return $result;
}

function db_num_rows ( $rResultP )
{
return pg_num_rows( $rResultP );
}

function db_field_type( $rResultP, $NumberP )
{
return pg_field_type( $rResultP, $NumberP );
}

function DateFromDb( $DateDb )
{
return substr($DateDb,8,2)."/".substr($DateDb,5,2)."/".substr($DateDb,0,4);
}

function DisplayDes( $textP )
{
return substr($textP,0,15);
}

function Trace( $StrP )
{
$f = fopen("log.txt","a+");
fwrite( $f, $StrP."\n" );
fclose($f);
}

function db_quote( $StrP )
{
$res = $StrP;
$res = str_replace("'","''",$res);
$res = str_replace("\"","''",$res);
$res = str_replace("\\'","'",$res);
$res = str_replace(";excl;","?",$res);
$res = str_replace("#ecom#","&",$res);
return "'".$res."'";
}
?>
0
Si j'ai bien compris, la page login.php c'est celle dont tu donnes le code au début ?
Si la page login n'est pas appelée, c'est qu'il y a un problème dans celle qui l'appelle. Il faut donc commencer par corriger le formulaire en premier. Peux-tu le montrer ?
0
Ma connexion Internet a été coupe...c'est de mon iPhone que je vous envoi ce message
les élémentS sont contre moi!!!
0
Pady rime avec maudit ^^
Reviens quand ça ira mieux...
0
bonjour,
navré pour cette interruption qui m'a largement pénalisé voila le code du formulaire en vous remerciant

<html >
<head>
<title>connect_bimrh</title>


</head>
<body>



<form action="login.php" method='post'>
<table align="center" border="1">
<tr>
<td>Login :</td>
<td><input type="text" name="login" maxlength="250"></td>
</tr>
<tr>
<td>mot de passe</td>
<td><input type="password"name="pass" maxlength="10"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="logon"></td>
</tr>
</table>
</form>


</body></html>
0
Dans login.php, peux-tu modifier les deux lignes :
$req = db_query($sql);
$row = db_fetch_array($req); 

et les remplacer par :
echo $sql,'<br /';
$req = db_query($sql) or die(mysql_error());
$row = db_fetch_array($req) or die(mysql_error());
print_r ($row);
exit();

et dire ce qui se passe (en remplaçant le mot de passe par des ***) ?
0
il ne se passe rien je reste toujours a index.html!!!!!!
le mysql error ne dérange pas je suis sur posgres?
0
Pardon pour le or die(mysql_error()), effectivement il n'en faut pas ! J'espère que tu as aussi corrigé ma balise <br /> pas refermée.
Mais c'est dingue que tu restes sur index.html.
Dans ton formulaire, remplace "login.php" par "toto.php" ou n'importe quel nom qui n'existe pas pour voir si tu as au moins une erreur
0
quand je remplace login.php par une autre page elle est appellé!!!!!
oui j'ai fermé la balise "br"
je comprends plus rien
je pense que le problème se situe dans la page "login.php" mais ou????
0
ajoute quelques echo "coucou1"; echo "coucou2"; à plusieurs endroits (en particulier dès le début avant ton include) on verra bien où il va et où il ne va pas
et mets la ligne echo '<meta http-equiv="refresh" content="0;URL=index.html">'; en commentaire, ça évitera qu'elle te renvoie
0
login.php n'est toujours pas appelé !!!!!!!
0
Quand tu dis qu'elle n'est pas appelée, qu'est ce qui se passe exactement ? Pas le moindre clignotement de l'écran quand tu cliques sur logon ?
Le fichier login.php que tu manipules est-il bien le bon ?
Fais-tu tes essais en local ou en ligne ?
Respectes-tu-bien le nom du fichier login.php tout en minuscules ?
0
ok sa marche mon serveur n'étais pas bien configurer et j'ai changé ma condition par

if ( db_num_rows($req) > 0 )

remerciement cordiale
0