[RESOLU] Récupération de mot de passe

Eléphant du PHP | 53 Messages

06 déc. 2011, 20:13

Voici TOUT mon code :
<?php
session_start();      include_once("config.php");
if (empty($_GET['action']))
{

$pass = $_POST['password'];
$account = $_POST['username'];
$passconf = $_POST['password_conf'];
$email = $_POST['email'];
$capatcha = $_POST['captcha'];
$capatcha2 = $_POST['captcha2'];
$rule = $_POST['rule'];
function random_str($nbr)
{


    $str = "";
    $chaine = "abcdefghijklmnpqrstuvwxy";
    srand((double)microtime()*1000);

    for($i=0; $i<$nbr; $i++) {
        $str .= $chaine[rand()%strlen($chaine)];
    }

    return $str;
}

// Exemple d'un appel avec 12 caractères
$str = random_str(12);

//capatcha
switch ($capatcha2)
{ 
case 1:
$nombre = "B6BB76";
break;
case 2:
$nombre = "jw62k";
break;
case 3:
$nombre = "DODFUS";
break;
case 4:
$nombre = "UDAQX" ;
break;
case 5:
$nombre = "MOZSQ" ;
break;
case 6:
$nombre = "A13QS" ;
break;
case 7:
$nombre = "OP903" ;
break;
case 8:
$nombre = "TYQXP" ;
break;
case 9:
$nombre = "QXUW9" ;
break;
case 10:
$nombre = "B2G9Q" ;
break;
}


//fin capatcha

if ($pass == $passconf)
{
if (strpos($email,'@')== true)
{
if ($_POST['username'] != NULL)
{
if ($nombre == $capatcha)
{
if ($rule == "check")
{

$db = mysql_connect($serveur, $serveurlogin, $serveurpass);
mysql_select_db($dbother,$db); 

$req = "INSERT INTO accounts (account,pass,email,pseudo) VALUES('$account','$motpass2','$email','$str')";
mysql_query($req); 
$_SESSION['account'] = $account;
header("Location: register.php?prob=Votre pseudo.");
}
else
{
header("Location: register.php?prob=Accepter le réglement.");
}
}
else
{
header("Location: register.php?prob=Le code de sécurité.");
}
}
else
{
header("Location: register.php?prob=Votre nom de compte");
}
}
else
{
header("Location: register.php?prob=Votre email.");
}
}
else
{
header("Location: register.php?prob=Votre mot de passe.");
}

}
elseif ($_GET['action'] == "update")
{
$pass = $_POST['password'];
$account = $_POST['username'];
$passconf = $_POST['password_conf'];
$email = $_POST['email'];

if ($pass == $passconf)
{
if (strpos($email,'@')== true)
{
if ($_POST['username'] != NULL)
{
$db = mysql_connect($serveur, $serveurlogin, $serveurpass);
mysql_select_db($dbother,$db); 
$req = "UPDATE accounts SET pass='$pass', email='$email' WHERE account='$account'";
mysql_query($req); 
$_SESSION['account'] = $account;
header("Location: register3.php?update=1");
}
else
{
header("Location: compte.php?echec=Motdepasse");
}
}
else
{
header("Location: compte.php?echec=email");
}
}
else
{
header("Location: compte.php?echec=login");
}
}
C'est pas a cause de ça vu que le compte s'enregistre bien dans la base de donnée mais quand je met mon code :
$motpass = sha1($pass)
cela ne marche pas je comprend pas..

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 déc. 2011, 22:27

Bon alors on va faire ça autrement :)

Si tout le reste de ton code fonctionne et que c'est l'ajout de cette ligne qui pose problème, c'est sur cette ligne qu'il faut commencer par chercher les erreurs.

Et si tu te penchais sur mes questions, tu saurais que la réponse est qu'à la fin d'une instruction php, on met un point-virgule.

Tant que tu t'obstineras à ajouter ton $motpass = sha1($pass) sans lui mettre un point-virgule, t'auras un message d'erreur ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 53 Messages

06 déc. 2011, 22:48

Exacte !
Par contre je viens d'avoir un autre problème avec ma base de donnée pourtant je n'est rien toucher..Je vais essayer de regarder ça demain.

Je vous tien au courant ! Merci a tous.

Eléphant du PHP | 53 Messages

10 déc. 2011, 19:15

Voilà,
J'ai corrigé tout mes bug mais maintenant quand je me connecte, je doit mettre le mot de passe codé :
Par exemple le mot de passe que j'ai mis est : florent
le mot de passe codé en Sha1 est : 8a9de9abb28fdfb6eb9e8993e74a1130efa07992

Et quand je me connecte je doit rentré le mot de : 8a9de9abb28fdfb6eb9e8993e74a1130efa07992
Au lieu de mon mot de passe habituel : florent
Comment je fais pour pouvoir le décrypter lors de la connexion ? Merci.

Eléphant du PHP | 53 Messages

10 déc. 2011, 22:12

A partir de là, je ne voie aucune utilité de codé les mot de passe.. :mrgreen:

Eléphant du PHP | 343 Messages

10 déc. 2011, 23:49

Il faut hasher le pass avant la requête tout simplement.
Développeur web

Eléphant du PHP | 53 Messages

11 déc. 2011, 00:05

Re,

Comme ceci :
1°)

Code : Tout sélectionner

$motpasse = hash('sha1','$motpasse');
OU
2°)

Code : Tout sélectionner

$motpasse = sha1($pass); $motpasse2 = hash('sha1','$motpasse');
EDIT : Aucune des deux marche donc j'ai tout faux.. La solution ?

Eléphant du PHP | 343 Messages

11 déc. 2011, 00:30

Pour debugger, un coup d'echo pour voir ce que tu obtiens comme résultat. Donc tu affiches ton $pass_hash et ton $pass_de_la_bdd_hash. Tu verras déjà si les 2 valeurs sont égales.
Et "ca marche pas", n'est pas un message d'erreur ;)
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 déc. 2011, 00:52

var_dump() plutot que echo :mrgreen:

sinon cela ne peux pas fonctionner vu que tu ne sais pas utiliser les variables en php :D

$motpasse = hash('sha1','$motpasse'); <= tu hash la chaine '$motpasse' et nom le contenu de la variable motdepasse

pour plus d'info => http://www.lephpfacile.com/cours/3-affi ... -variables


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

11 déc. 2011, 01:20

var_dump() est plutôt pour les tableaux :mrgreen:
Sinon bien vu pour les apostrophes, je n'avais pas vu (d'où l'utilité d'être flemmard est d'utiliser sha1($pass)) ;)
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 déc. 2011, 12:22

Ou l'utilité d'un ide qui, avec la colorisation de la syntaxe t'aurais évité des soucis.

L'avantage de hash c'est que tu n'est pas limité au sha1, sinon cette fonction n'aurait pas d'intérêt. Regarde dans la doc toutes les possibilités ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

11 déc. 2011, 20:25

Tu parles à locos ou à moi? Parce-que je suis quand même au courant qu'il y a plusieurs possibilités pour hasher :lol:
Développeur web

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 déc. 2011, 20:55

l'ide a toi ^^

idem pour le hash parce que bon la feignantise c'est comme la copier / coller => la mort du développeur :mrgreen:
Tu parles à locos ou à moi? Parce-que je suis quand même au courant qu'il y a plusieurs possibilités pour hasher :lol:
sinon ben j'peux pas savoir hein :)
Même si ta signature tendrait à l'indiquer je vois souvent des "je dois faire un truc ou un machin pour un client mais je sais pas faire" :)

enfin bref le principale c'est que l'autre du message ai sa réponse (enfin j'espère :) )

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

11 déc. 2011, 21:12

Il n'avait pas utilisé l'ide, seulement la balise code ;)
Après il y a fainéantise et fainéantise. Tu préfères écrire hash('sha1',$pass); ou sha1($pass)? :mrgreen:
Sinon pas de soucis mais les forums d'entraide ne sont pas que pour les particuliers (si tu vois ce que je veux dire ;)).
Développeur web

Eléphant du PHP | 53 Messages

11 déc. 2011, 21:52

Je comprend pu rien là ? Pis je voie pas comment faire avec Var_dump et tout le blabla :?