kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015
-
14 avril 2007 à 01:36
solafsara
Messages postés3Date d'inscriptionmardi 14 décembre 2010StatutMembreDernière intervention21 mai 2012
-
21 mai 2012 à 12:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
solafsara
Messages postés3Date d'inscriptionmardi 14 décembre 2010StatutMembreDernière intervention21 mai 2012 21 mai 2012 à 12:37
Voila mon code mais il affiche un message d'erreur: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\www.dimanord.com\verification_mail.php on line 25
Probléme lors de l'envoi du mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$objet = 'Récupération de votre mot de passe';
if(!mail($row1['emailuser'], $objet, $row2['mdp'], $headers))
echo 'Probléme lors de l\'envoi du mail';
else
echo 'Mail envoyé';
//}
mysql_close($c);
?>
Besoin d'aide SVP...
solafsara
Messages postés3Date d'inscriptionmardi 14 décembre 2010StatutMembreDernière intervention21 mai 2012 21 mai 2012 à 12:19
Urgeeeeent S.V.P: Salut, j'ai besoin d'une autentification qui contient juste le login et le mot de passe avec le boutton envoyer et un lien "Mot de passe oublié":
ce dernier permet à l'utilisateur si jamais il a oublié son mot de passe, un email va etre envoyer
à sa boite de reception qui va contiendra le correcte mot de passe. "php"
Et merci.
folla1987
Messages postés28Date d'inscriptionmardi 19 février 2008StatutMembreDernière intervention18 juin 2011 14 avril 2011 à 22:24
il a pas de réponse sur ma question ??
tony88110
Messages postés2Date d'inscriptiondimanche 13 février 2011StatutMembreDernière intervention14 avril 2011 14 avril 2011 à 16:33
j'aimerai crée un espace mot de passe oublier pourriez vous m'aidez
tony88110
Messages postés2Date d'inscriptiondimanche 13 février 2011StatutMembreDernière intervention14 avril 2011 14 avril 2011 à 16:31
utilise md5
folla1987
Messages postés28Date d'inscriptionmardi 19 février 2008StatutMembreDernière intervention18 juin 2011 8 avril 2011 à 12:08
pour securiser un mot de passe par le cryptage ..comment faire ?? Merci
samirmeridien
Messages postés1Date d'inscriptionmardi 17 août 2010StatutMembreDernière intervention19 août 2010 19 août 2010 à 13:36
je crois qu'il faut mettre dans la e haut de la page include("ta page de login")
morando007
Messages postés3Date d'inscriptionsamedi 10 mai 2008StatutMembreDernière intervention 9 février 2009 9 févr. 2009 à 15:49
Mr wouwou1!!
j'ai un probléme qui vous pouvez m'aider si il te plait!!
quant le mot de passe et le login sont incorrecte et je veux qu'il m'affiche que sur la meme page l'erreur du mot de passe et le login et la possibilité de le resaisir!!
merci d'avance
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 10 juil. 2007 à 10:51
@ piranhaworld... non je stock les deux car l'id est à usage unique... .. .
@ tchaOo°
piranhaworld
Messages postés10Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention 9 juillet 2007 9 juil. 2007 à 22:16
Entierement d'accord avec FHX.. un test en PHP c'est pas pro.
@Kankrelune : Si tu as tellement besoin du passe utilise $_POST['passwd']; et stock ton fameux id (et non le passe)
@Teclis01 : Cette source est razmoket.. elle apporte rien (d'ou la note)
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 18 avril 2007 à 00:16
Pardonnez mon intrusion mais je viens d'arriver et euh je voudrais savoir ce que cette source apporte ? Les commentaires oui mais la source ...?
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 16 avril 2007 à 18:55
"et si je garde le hash chargé c'est parce qu'il me sert dans la création d'id..." Je suis pas sur d'avoir tout compris lol ;)
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 16 avril 2007 à 18:41
Les mot de pass sont hashés avec sha1... et si je garde le hash chargé c'est parce qu'il me sert dans la création d'id... .. . ;o)
@ tchaOo°
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 16 avril 2007 à 16:46
Hu ?
Le mot de passe ne doit servir que lors de la phase de login. Après, on considère que l'utilisateur est loggué ou non.
Si il est loggué, alors tu ne gardes que son identifiant unique au pire... ou alors toutes ses infos au mieux mais SANS son mot de passe (qui doit être hashé md5 voir sha1 ou mieux au minimum).
Je comprends pas pourquoi tu veux garder son mot de passe, il ne sert à rien une fois qu'il est loggué.
Ex :
1ère requète :
// Je passe volontairement les étapes.
SELECT id FROM users WHERE login $login AND passwd $passwd;
if ( $q->num_rows() === 1 ) {
$id = $q->fetch_row();
SELECT x,y,z,a,b,c,d FROM users WHERE id = (int) $id[0]
$_SESSION['user']['x'] = $data['x'];
$_SESSION['user']['y'] = $data['y'];
// ou alors
$user = new membre($data);
}
Et voila. Je n'ai plus besoin de son mot de passe :)
Je comprends pas pourquoi tout le monde s'obstine à vouloir récupérer et garder le mot de passe via PHP :s
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 16 avril 2007 à 16:24
Euuuuuh... le fait de tester le mot de pass en php ne veut pas dire que l'on révèlera au final lequel à mal été taper... là je te rejoins FhX c'est un mauvais point coté sécurité et pour moi la question ne se pose même pas... personnellement je teste mon pass via php tout simplement parce que je m'en ressers après, notamment en session, et que je n'ai pas envie (et ça serait idiot) de refaire une requête en BDD à chaque fois que j'en ai besoin... .. .
@ tchaOo°
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 16 avril 2007 à 13:27
"C'est vrai que c'est un couple, mais normalement le login est la clef primaire ou une clef sans doublon, le mot de passe sert de sécurité.Quand on fait un enregistrement dans une table, pour savoir qui l'a effectué, on enregistre le login de l'utilisateur..."
Faux, on enregistre l'ID unique de l'utilisateur en tant que clef primaire. Le login et le mot de passe servent de sécurité pour cet identifiant justement.
La relation de cette table est rapide à écrire :
User ( id_user, login_user, passwd_user );
id_user: clé primaire
Le fait d'aimer si c'est le login ou le mot de passe qui est faux relève du confort pour l'utilisateur, certes... mais peut aussi permettre à un attaquant de savoir si le login est bon ou si il ne l'est pas.
A savoir si l'on aime une sécurité en plus ou pas... pour moi c'est vite choisi :)
cs_bluedemon
Messages postés41Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 3 novembre 2008 16 avril 2007 à 09:37
Pour moi, en tant que professionnel aussi et surtout internaute, j'aime savoir si c mon login ou mot de passe qui est bon ou pas, ça m'évite de chercher lequel n'est pas bon. C'est vrai que c'est un couple, mais normalement le login est la clef primaire ou une clef sans doublon, le mot de passe sert de sécurité. Quand on fait un enregistrement dans une table, pour savoir qui l'a effectué, on enregistre le login de l'utilisateur, permettant ainsi de mettre comme une sorte de mouchard. Je me vois mal mettre le login et mot de passe dans une table pour un mouchard.
amine_hassini
Messages postés23Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention16 avril 2007 16 avril 2007 à 06:05
Slt, Bien que je ne suis pas un expert en php, je suis entièrement d'accord avec FHX et pour s'en convaincre tapez votre identifiant sur msn ou de yahoo ou peu importe, et un mot de passe faux : vous remarquerez que le site ne répondra jamais en disant que "le mot de passe est incorrecte". Il répondra toujours "l'identifiant ou le mot de passe est incorrect". Parole de professionnelless ! ;)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 15 avril 2007 à 20:41
Non, ce n'est pas une faille. C'est une erreur de logique.
Le login et le pass, c'est un couple. Tu testes un couple... donc tu testes 2 choses en même temps.
Ce que tu peux faire en 1 temps tu le fais en 2 :
--> Le fait de récupérer le mot de passe de la base de donnée en testant le login.
--> Le fait de tester le mot de passe après sa récupération.
Pourquoi ne pas inclure ce double test directement en SQL ? Comme si SQL ne savait pas faire ce genre de chose ! C'est une perte évidente de temps... En plus, à quoi cela va servir de dire "Erreur de mot de passe" ? A rien du tout. Autant dire que le couple login/pass est mauvais et on en parle plus.
Imaginons un scénario type :
J'ai un utilisateur en mode super-user (ayant tous les droits sur le site), mais dont le login est inconnu pour tout le monde (nous dirons que son login, c'est xxxadminxxx, son pass yyyadminyyy). Je me fais un petit robot et je balance un gros dictionnaire ou n'importe quel type de bruteforce.
Donc avec ta méthode, je vais tester :
-> xxxadmin ==> (pas de msg d'erreur, cela est dû à une erreur de programmation de ta part, tu n'as pas testé le fait qu'un login pouvait être mauvais.)
-> xxxadminx ==> pareil
-> xxxadminxx ==> pareil
-> xxxadminxxx ==> "Ton Pass ne correspond pas à celui de la BDD"
Ouh la, grosse erreur !! La, ca veut dire que le robot sait que le login existe, mais que le mot de passe est mauvais. Et la, attend toi au pire.
Avec ma méthode, si le login ou le passe est mauvais, il renverra toujours la même erreur. Impossible de savoir si c'est l'un ou l'autre qui est mauvais.
Je ne parle même pas de perte de temps d'éxécution dû au ( if ($data['passwd']) == $_POST['passwd']) ) qui exécute un strcmp() en C donc une instruction inutile ici quand, dans ta requète SQL, tu peux faire un COUNT(*) qui est plus rapide.
Voila pourquoi je déconseille très fortement le test en PHP, il ne sert à rien.
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 15 avril 2007 à 14:58
Je ne suis pas vraiment d'accord avec toi FhX... personnellement je préfère vérifier si l'utilisateur existe et récupérer son pass pour vérification... à chacun sa façon de faire... .. . ;o)
@ tchaOo°
wouwou1
Messages postés10Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention15 avril 2007 15 avril 2007 à 00:44
Reste calme FhX... ;-)
Dis moi pourquoi ma méthode n'est pas bonne.
Je suppose que c'est une faille de sécurité???
Ca m'aiderai parce que tous les sites que j'ai fait ont ce script...
Bye
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 14 avril 2007 à 18:08
" $mysql = "SELECT password FROM ta_table WHERE login='".$_POST['login']."'";
$req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $_POST['password']) {
echo "Ton Pass ne correspond pas à celui de la BDD";
}"
NON NON NON NON NON ET NON !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Rahhhhh jvais m'énerver !!!!!!!!!
Il faut faire le test du mot de passe EN MEME TEMPS que le test de login !!!!
SELECT COUNT(*) FROM .... WHERE login $login AND passwd $passwd;
Si la requète renvoit faux, alors le couple login/passwd n'est pas bon.
Pourquoi vouloir à tout prix faire le test en PHP ???!!!
wouwou1
Messages postés10Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention15 avril 2007 14 avril 2007 à 12:53
Bien Maître...lol
Bye
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 14 avril 2007 à 11:27
$mysql = 'SELECT password FROM ta_table WHERE login=\''.mysql_real_escape_string($_POST['login']).'\'';
Ca évitera des sql injections... .. . ;o)
@ tchaOo°
wouwou1
Messages postés10Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention15 avril 2007 14 avril 2007 à 08:35
Salut.
Tu ne fais que récupérer deux variables. Il faut que tu testes tes variables par rapport a celles dans ta BDD. Sinon je suis au regret de t'annoncer que ton script ne sert à rien.
# <form method="post" action="exemple1.php">
# <label>Nom d utilisateur : </label>
# <label>Mot de passe : </label>
#
#
# </form>
Certes c'est pas du grand art mais ca marche.
Apres faut que tu protèges chacune de tes pages d'administration, mais je vais pas tout te faire y'a déjà plein de codes là dessus.
Bye
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 14 avril 2007 à 01:36
o_Ô
Mais ça protège rien ta source il y a aucune identification là... .. .
21 mai 2012 à 12:37
Probléme lors de l'envoi du mail
<?php
if(!empty($_POST['emailuser']))
$email = $_POST['emailuser'];
$c=mysql_connect("localhost","root","");
mysql_select_db("ecommercedim");
//else
//exit("Mail vide.");
$sql "SELECT emailuser FROM utilisateur WHERE emailuser '$email'";
$req = mysql_query($sql);
if(mysql_num_rows($req) != 1)
//exit("Mail inconnu.");
//else
//{
$row1 = mysql_fetch_assoc($req);
$retour mysql_query("SELECT mdp FROM utilisateur WHERE emailuser '$email'");
$row2 = mysql_fetch_assoc($retour);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$objet = 'Récupération de votre mot de passe';
if(!mail($row1['emailuser'], $objet, $row2['mdp'], $headers))
echo 'Probléme lors de l\'envoi du mail';
else
echo 'Mail envoyé';
//}
mysql_close($c);
?>
Besoin d'aide SVP...
21 mai 2012 à 12:19
ce dernier permet à l'utilisateur si jamais il a oublié son mot de passe, un email va etre envoyer
à sa boite de reception qui va contiendra le correcte mot de passe. "php"
Et merci.
14 avril 2011 à 22:24
14 avril 2011 à 16:33
14 avril 2011 à 16:31
8 avril 2011 à 12:08
19 août 2010 à 13:36
9 févr. 2009 à 15:49
j'ai un probléme qui vous pouvez m'aider si il te plait!!
quant le mot de passe et le login sont incorrecte et je veux qu'il m'affiche que sur la meme page l'erreur du mot de passe et le login et la possibilité de le resaisir!!
merci d'avance
10 juil. 2007 à 10:51
@ tchaOo°
9 juil. 2007 à 22:16
@Kankrelune : Si tu as tellement besoin du passe utilise $_POST['passwd']; et stock ton fameux id (et non le passe)
@Teclis01 : Cette source est razmoket.. elle apporte rien (d'ou la note)
18 avril 2007 à 00:16
16 avril 2007 à 18:55
16 avril 2007 à 18:41
@ tchaOo°
16 avril 2007 à 16:46
Le mot de passe ne doit servir que lors de la phase de login. Après, on considère que l'utilisateur est loggué ou non.
Si il est loggué, alors tu ne gardes que son identifiant unique au pire... ou alors toutes ses infos au mieux mais SANS son mot de passe (qui doit être hashé md5 voir sha1 ou mieux au minimum).
Je comprends pas pourquoi tu veux garder son mot de passe, il ne sert à rien une fois qu'il est loggué.
Ex :
1ère requète :
// Je passe volontairement les étapes.
SELECT id FROM users WHERE login $login AND passwd $passwd;
if ( $q->num_rows() === 1 ) {
$id = $q->fetch_row();
SELECT x,y,z,a,b,c,d FROM users WHERE id = (int) $id[0]
$_SESSION['user']['x'] = $data['x'];
$_SESSION['user']['y'] = $data['y'];
// ou alors
$user = new membre($data);
}
Et voila. Je n'ai plus besoin de son mot de passe :)
Je comprends pas pourquoi tout le monde s'obstine à vouloir récupérer et garder le mot de passe via PHP :s
16 avril 2007 à 16:24
@ tchaOo°
16 avril 2007 à 13:27
Faux, on enregistre l'ID unique de l'utilisateur en tant que clef primaire. Le login et le mot de passe servent de sécurité pour cet identifiant justement.
La relation de cette table est rapide à écrire :
User ( id_user, login_user, passwd_user );
id_user: clé primaire
Le fait d'aimer si c'est le login ou le mot de passe qui est faux relève du confort pour l'utilisateur, certes... mais peut aussi permettre à un attaquant de savoir si le login est bon ou si il ne l'est pas.
A savoir si l'on aime une sécurité en plus ou pas... pour moi c'est vite choisi :)
16 avril 2007 à 09:37
16 avril 2007 à 06:05
15 avril 2007 à 20:41
Le login et le pass, c'est un couple. Tu testes un couple... donc tu testes 2 choses en même temps.
Ce que tu peux faire en 1 temps tu le fais en 2 :
--> Le fait de récupérer le mot de passe de la base de donnée en testant le login.
--> Le fait de tester le mot de passe après sa récupération.
Pourquoi ne pas inclure ce double test directement en SQL ? Comme si SQL ne savait pas faire ce genre de chose ! C'est une perte évidente de temps... En plus, à quoi cela va servir de dire "Erreur de mot de passe" ? A rien du tout. Autant dire que le couple login/pass est mauvais et on en parle plus.
Imaginons un scénario type :
J'ai un utilisateur en mode super-user (ayant tous les droits sur le site), mais dont le login est inconnu pour tout le monde (nous dirons que son login, c'est xxxadminxxx, son pass yyyadminyyy). Je me fais un petit robot et je balance un gros dictionnaire ou n'importe quel type de bruteforce.
Donc avec ta méthode, je vais tester :
-> xxxadmin ==> (pas de msg d'erreur, cela est dû à une erreur de programmation de ta part, tu n'as pas testé le fait qu'un login pouvait être mauvais.)
-> xxxadminx ==> pareil
-> xxxadminxx ==> pareil
-> xxxadminxxx ==> "Ton Pass ne correspond pas à celui de la BDD"
Ouh la, grosse erreur !! La, ca veut dire que le robot sait que le login existe, mais que le mot de passe est mauvais. Et la, attend toi au pire.
Avec ma méthode, si le login ou le passe est mauvais, il renverra toujours la même erreur. Impossible de savoir si c'est l'un ou l'autre qui est mauvais.
Je ne parle même pas de perte de temps d'éxécution dû au ( if ($data['passwd']) == $_POST['passwd']) ) qui exécute un strcmp() en C donc une instruction inutile ici quand, dans ta requète SQL, tu peux faire un COUNT(*) qui est plus rapide.
Voila pourquoi je déconseille très fortement le test en PHP, il ne sert à rien.
15 avril 2007 à 14:58
@ tchaOo°
15 avril 2007 à 00:44
Dis moi pourquoi ma méthode n'est pas bonne.
Je suppose que c'est une faille de sécurité???
Ca m'aiderai parce que tous les sites que j'ai fait ont ce script...
Bye
14 avril 2007 à 18:08
$req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $_POST['password']) {
echo "Ton Pass ne correspond pas à celui de la BDD";
}"
NON NON NON NON NON ET NON !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Rahhhhh jvais m'énerver !!!!!!!!!
Il faut faire le test du mot de passe EN MEME TEMPS que le test de login !!!!
SELECT COUNT(*) FROM .... WHERE login $login AND passwd $passwd;
Si la requète renvoit faux, alors le couple login/passwd n'est pas bon.
Pourquoi vouloir à tout prix faire le test en PHP ???!!!
14 avril 2007 à 12:53
Bye
14 avril 2007 à 11:27
Ca évitera des sql injections... .. . ;o)
@ tchaOo°
14 avril 2007 à 08:35
Tu ne fais que récupérer deux variables. Il faut que tu testes tes variables par rapport a celles dans ta BDD. Sinon je suis au regret de t'annoncer que ton script ne sert à rien.
Comme ca, ca protège déjà un peu mieux :
<?
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
$database = mysql_connect('hote', 'utilisateur', 'pass');
mysql_select_db('ta_base',$database);
$mysql = "SELECT password FROM ta_table WHERE login='".$_POST['login']."'";
$req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $_POST['password']) {
echo "Ton Pass ne correspond pas à celui de la BDD";
}
else {
session_start();
$_SESSION['login'] = $_POST['login'];
echo "Tu es bien connecté";
}
}
else {
echo "Tu as oublié de remplir un champ";
}
?>
# <form method="post" action="exemple1.php">
# <label>Nom d utilisateur : </label>
# <label>Mot de passe : </label>
#
#
# </form>
Certes c'est pas du grand art mais ca marche.
Apres faut que tu protèges chacune de tes pages d'administration, mais je vais pas tout te faire y'a déjà plein de codes là dessus.
Bye
14 avril 2007 à 01:36
Mais ça protège rien ta source il y a aucune identification là... .. .
@ tchaOo°