nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
9 mai 2008 à 21:05
cs_tonyni
Messages postés1Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention11 janvier 2010
-
11 janv. 2010 à 20:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_tonyni
Messages postés1Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention11 janvier 2010 11 janv. 2010 à 20:13
Moi, j'ai des beugs sous wamp:
Warning: include(file:///C|/wamp/www/membres/config.php) [function.include]: failed to open stream: Invalid argument in C:\wamp\www\membres\include\header.php on line 2
Warning: include() [function.include]: Failed opening 'file:///C|/wamp/www/membres/config.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\membres\include\header.php on line 2
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\membres\include\header.php on line 5
de plus :Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\membres\membre\index.php on line 12
il en a d'autre sur les autre pages mais je vais pas tous mettre !
Mais ou sinon très bon script !
sa vaut bien un 8/10
à part le style css que j'aime pas trop sa va
on dirait un PHPBB sur l'espace membre :)
Tonyni
geckothony
Messages postés1Date d'inscriptiondimanche 8 février 2009StatutMembreDernière intervention11 mai 2009 11 mai 2009 à 22:29
C'est exactement ce que je chercher, merci.
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 30 mars 2009 à 19:14
ça a le mérite d'un 8 faut avouer que c'est bien commenter complet MAIS mais le plus important qui manque c'est bien la récupération du mots de passe lors de l'oubli trop peu de source traitent de ca
gfpl
Messages postés172Date d'inscriptionsamedi 11 août 2012StatutMembreDernière intervention 9 avril 2011 30 mars 2009 à 19:09
un tres bon code je trouve juste que
-le code aurait été plus propre avec des function ;)
-pas de récupération du mots de passe
-pas d'activation via l'email avec une clef
-le cacha aurait été plus simple avec GD directement.
voila pour moi ce qui manque pour que le code soit parfait.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 30 oct. 2008 à 09:09
Merci sheorogath.
Je ne sais pas ce que je lui ai fait, ce doit être l'ancien membre qui a été viré de codes sources car il metteit plein de source qui ne lui appartenait pas et a qui avec quelque personne on a mis 1 car ce n'était pas commenté, le code était mauvais et minuscule et il disait qu'il était de lui alors qu'il l'avais piqué sur un site !
a++
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 28 oct. 2008 à 18:08
j'ai supprime la note, j'attends que se soit justifie.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 28 oct. 2008 à 16:13
Pourquoi 1 ?
Ce n'est pas que la note me dérange mais j'aimerai une argumentation plutot quune stupide grimace !
a++
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 13 mai 2008 à 16:17
ok, je vais voir ça !
merci
a++
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 13 mai 2008 à 15:06
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 20:28
ok, merci pour le 10, par contre si vous trouvez des failles XSS comme je n'ai pas très bien compris le principe... je crois que c'est par l'url mais rien de sur ...
a++
cs_djmaster
Messages postés28Date d'inscriptionvendredi 10 juin 2005StatutMembreDernière intervention12 mai 2008 12 mai 2008 à 20:23
Je vais tester pour voir ça :)
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 18:38
non, non ne t'inquiète pas, je ne prend pas mal tes remarques, oui il est vrai que je répond a beaucoup de post sur les forum code source (plus particulièrement phpcs et javascriptfr) !
a++
bcmfr
Messages postés137Date d'inscriptionjeudi 18 juillet 2002StatutMembreDernière intervention20 novembre 2016 12 mai 2008 à 14:50
Slt
j'ai mis cette note car vu le nombre de post auxquels tu réponds sur le forum, je pensais pas qu'en postant ta source, tu ferais autant d'erreurs classiques...
Maintenant, cette note, je la trouve réaliste car ton espace membre n'apporte pas grand chose vis à vis de ceux postés sur le site et qui sont fiables et sécuriés.
Peut etre n'est ce pas toi qui a fait les parties qui bugs mais c'est ton rôle de relire le boulot de ton associé avant de poster.
@+ et ne prends pas mal mes remarques, elles n'engagent que moi
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 12:23
je n'ai pas fait toute les modifications mais elles viendront plus tard !
a++
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 11:41
ok, merci ! je suis en train de faire les mises a jour sur ce que tu as dis mais on ne peut pas dire que c'est facile quand c'est pas nous qui avons fait tout le code !
a++
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 12 mai 2008 à 11:30
@Nicomilville : tu le supprimes tout simplement. La session n'a pas à être ouverte tout en haut de la page. Elle doit l'être uniquement quand l'inscription s'est bien passée. Ca tu le fais bien juste avant la redirection vers membre/index.php à la ligne 31.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 09:45
@webdeb : je ne comprend pas ce que tu m'a dit : 0/... je dois le mettre ou mon session start ?
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 mai 2008 à 09:43
Salut webdeb,
Merci pour la liste des modifications a faire !
@bcmfr : on dirai que tu adore mettre des notes en dessous de la moyenne perso si j'avais été toi j'aurai d'abord donné des conseil pour améliorer le code et ensuite si ça n'avais pas bougé j'aurai mis cette note mais toi tu arrive tu me met un 3 directement, je ne sais pas vous mais tu aurai pu attendre que je fasse quelque modification !
a++
bcmfr
Messages postés137Date d'inscriptionjeudi 18 juillet 2002StatutMembreDernière intervention20 novembre 2016 11 mai 2008 à 21:55
Slt
ta page membres.php n'est pas sécurisée, tu n'as pas mis le code pour vérifier l'identification.
De toute facon:
if (!isset($_SESSION['pseudo'])) {
header ('Location: connection.php');
exit();
}
c'est un peu léger pour vérifier dans toutes les pages que le membre est identifié,non?
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 11 mai 2008 à 19:10
@Neigedhiver : tu peux aussi faire SELECT COUNT(1). J'ai des doutes quant au SELECT COUNT(*) plus lent que le SELECT COUNT(id).
@Nicomville : j'ai ouvert uniquement ton fichier inscription.php et il y'a plein de trucs à améliorer.
0/ Ton session_start() tout en haut n'a pas lieu d'être. Tu le fais quand le membre est bien inscrit et redirigé vers son espace. Ca suffit largement.
1/ Déjà tu fais des echo $erreur !!! Pourquoi le echo ?
2/ Tu contrôles que tous les champs sont saisis d'un coup mais il vaudrait mieux le faire un par un pour savoir ensuite quel(s) champ(s) n'a pas été remplis.
3/ En règle général un login est composé de caractères alphanumériques + tiret et underscore. Toi tu acceptes tous les caractères... On peut donc écrire un login complètement exotique... Pas terrible nan?
4/ On ne fait pas de "or die()" en production. Il faut les utiliser uniquement quand on développes le script. Quand celui ci est prêt, on les dégage afin de ne pas risquer d'afficher des erreurs critiques à l'utilisateur final.
5/ Remplace ta requête de comptage par ceci :
$req = mysql_query(sprintf('SELECT COUNT(1) FROM membre WHERE login="%s"', mysql_real_escape_string($_POST['login'])));
6/ Remplace ton $data = mysql_fetch_array() par :
$nbResults = (int) mysql_result($req, 0, 0);
7/ Ainsi tu remplaces if($data[0] == 0) par :
if(0 === $nbResults)
8/ La requête d'insertion peut-être améliorée par :
$sql = sprintf(
'INSERT INTO membre (login, pass_md5, date) VALUES("%s","%s",NOW())',
mysql_real_escape_string($_POST['login']),
md5($_POST['pass'])
);
if(mysql_query($sql)) {
// Suite du code
} else {
$erreur = 'Une erreur interne a empêché l\'inscription';
}
10/ On ne fait pas de SELECT * mais on liste les champs
11/ mysql_fetch_array() est à remplacer par mysql_fetch_assoc() car plus rapide
12/ Dans ton <form> tag, remplace le <? par <?php
13/ Pas la peine de faire des htmlentities(). Htmlspecialchars() suffit
14/ Il ne faut pas faire de stripslashes(). Le stripslashes() c'est uniquement si le serveur est mal configuré, c'est-à-dire avec magic_quotes_gpc à On
Voilà, pas moins de 15 améliorations pour un même fichier. Amuse toi bien ;)
++
Hugo.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 10 mai 2008 à 18:45
C'est bon, j'ai fait les modifs sauf pour SELECT count(*) !
a++
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 10 mai 2008 à 16:02
ok, je vais voir, on dirai que ce script me réserve encore plein de surprise !
a++
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 10 mai 2008 à 15:57
Salut,
C'est quoi l'intérêt d'établir la connexion à la base dans config.php si c'est pour ensuite l'établir dans une autre page, alors que le fichier config.php a quand même été inclus... ?
Tu établis la connexion combien de fois ?
mysql_escape_string() => Bravo. Mais mysql_real_escape_string(), c'est encore mieux.
SELECT count(*) => C'est vraiment, vraiment, vraiment crade. SELECT COUNT(id) c'est mieux : compter sur un champ indexé c'est forcément mieux que compter sur tous les champs.
md5(mysql_escape_string($_POST['pass'])) => là, la fonction d'échappement ne sert à rien. La fonction md5 retourne obligatoirement une chaine de caractères ne contenant QUE des caractères alphanumériques, et rien d'autre. Donc pas de risque d'injection.
obtimal => j'ai un vieux dictionnaire, mais quand même... j'ai pas trouvé.
Bon pis j'arrête là, sinon j'y passe le week end...
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 10 mai 2008 à 12:37
c'est bon j'ai fait les modifs sur tout les fichiers et j'ai dis a mon associé de ne plus mettre la balise <? mais celle la <?php
a++
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 10 mai 2008 à 09:46
@depression : j'ai oublié de préciser que j'ai fais cette espace membre avec mon associé et je lui dirai que connexion...
0bentom32390 : je vais changer ça tout de suite, je ne l'avais pas remarqué, d'habitude je met toujours des <?php donc la les <? c'est l'ancienne manière de coder et je passerai le message a mon associé aussi !
a++
bentom32390
Messages postés25Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention21 février 2009 10 mai 2008 à 08:41
sur ton scrpit il il y une erreur dans les php <? doit etre <?php pour que tout les serveur puisse le lire du cou sa marche pas
cs_depression
Messages postés100Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention13 juillet 2009 9 mai 2008 à 23:53
Nanan, les questions et remarques, c'est ici qu'on les fait.
J'ai pas encore pu regarder ton code, mais en français, on écrit pas connection, mais connexion.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 9 mai 2008 à 21:05
11 janv. 2010 à 20:13
Warning: include(file:///C|/wamp/www/membres/config.php) [function.include]: failed to open stream: Invalid argument in C:\wamp\www\membres\include\header.php on line 2
Warning: include() [function.include]: Failed opening 'file:///C|/wamp/www/membres/config.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\membres\include\header.php on line 2
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\membres\include\header.php on line 5
de plus :Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\membres\membre\index.php on line 12
il en a d'autre sur les autre pages mais je vais pas tous mettre !
Mais ou sinon très bon script !
sa vaut bien un 8/10
à part le style css que j'aime pas trop sa va
on dirait un PHPBB sur l'espace membre :)
Tonyni
11 mai 2009 à 22:29
30 mars 2009 à 19:14
30 mars 2009 à 19:09
-le code aurait été plus propre avec des function ;)
-pas de récupération du mots de passe
-pas d'activation via l'email avec une clef
-le cacha aurait été plus simple avec GD directement.
voila pour moi ce qui manque pour que le code soit parfait.
30 oct. 2008 à 09:09
Je ne sais pas ce que je lui ai fait, ce doit être l'ancien membre qui a été viré de codes sources car il metteit plein de source qui ne lui appartenait pas et a qui avec quelque personne on a mis 1 car ce n'était pas commenté, le code était mauvais et minuscule et il disait qu'il était de lui alors qu'il l'avais piqué sur un site !
a++
28 oct. 2008 à 18:08
28 oct. 2008 à 16:13
Ce n'est pas que la note me dérange mais j'aimerai une argumentation plutot quune stupide grimace !
a++
13 mai 2008 à 16:17
merci
a++
13 mai 2008 à 15:06
# $donn = mysql_fetch_array($retour);
tu ne fais aucune verification d'erreur... si ca se trouve, qqn fait ces interrogations sans avoir installe la base de donnnee...
12 mai 2008 à 21:33
12 mai 2008 à 21:24
12 mai 2008 à 20:59
faille xss: http://php.developpez.com/faq/?page=securite#reproduire-faille-xss
@+
12 mai 2008 à 20:28
a++
12 mai 2008 à 20:23
12 mai 2008 à 18:38
a++
12 mai 2008 à 14:50
j'ai mis cette note car vu le nombre de post auxquels tu réponds sur le forum, je pensais pas qu'en postant ta source, tu ferais autant d'erreurs classiques...
Maintenant, cette note, je la trouve réaliste car ton espace membre n'apporte pas grand chose vis à vis de ceux postés sur le site et qui sont fiables et sécuriés.
Peut etre n'est ce pas toi qui a fait les parties qui bugs mais c'est ton rôle de relire le boulot de ton associé avant de poster.
@+ et ne prends pas mal mes remarques, elles n'engagent que moi
12 mai 2008 à 12:23
a++
12 mai 2008 à 11:41
a++
12 mai 2008 à 11:30
12 mai 2008 à 09:45
12 mai 2008 à 09:43
Merci pour la liste des modifications a faire !
@bcmfr : on dirai que tu adore mettre des notes en dessous de la moyenne perso si j'avais été toi j'aurai d'abord donné des conseil pour améliorer le code et ensuite si ça n'avais pas bougé j'aurai mis cette note mais toi tu arrive tu me met un 3 directement, je ne sais pas vous mais tu aurai pu attendre que je fasse quelque modification !
a++
11 mai 2008 à 21:55
ta page membres.php n'est pas sécurisée, tu n'as pas mis le code pour vérifier l'identification.
De toute facon:
if (!isset($_SESSION['pseudo'])) {
header ('Location: connection.php');
exit();
}
c'est un peu léger pour vérifier dans toutes les pages que le membre est identifié,non?
11 mai 2008 à 19:10
@Nicomville : j'ai ouvert uniquement ton fichier inscription.php et il y'a plein de trucs à améliorer.
0/ Ton session_start() tout en haut n'a pas lieu d'être. Tu le fais quand le membre est bien inscrit et redirigé vers son espace. Ca suffit largement.
1/ Déjà tu fais des echo $erreur !!! Pourquoi le echo ?
2/ Tu contrôles que tous les champs sont saisis d'un coup mais il vaudrait mieux le faire un par un pour savoir ensuite quel(s) champ(s) n'a pas été remplis.
3/ En règle général un login est composé de caractères alphanumériques + tiret et underscore. Toi tu acceptes tous les caractères... On peut donc écrire un login complètement exotique... Pas terrible nan?
4/ On ne fait pas de "or die()" en production. Il faut les utiliser uniquement quand on développes le script. Quand celui ci est prêt, on les dégage afin de ne pas risquer d'afficher des erreurs critiques à l'utilisateur final.
5/ Remplace ta requête de comptage par ceci :
$req = mysql_query(sprintf('SELECT COUNT(1) FROM membre WHERE login="%s"', mysql_real_escape_string($_POST['login'])));
6/ Remplace ton $data = mysql_fetch_array() par :
$nbResults = (int) mysql_result($req, 0, 0);
7/ Ainsi tu remplaces if($data[0] == 0) par :
if(0 === $nbResults)
8/ La requête d'insertion peut-être améliorée par :
$sql = sprintf(
'INSERT INTO membre (login, pass_md5, date) VALUES("%s","%s",NOW())',
mysql_real_escape_string($_POST['login']),
md5($_POST['pass'])
);
if(mysql_query($sql)) {
// Suite du code
} else {
$erreur = 'Une erreur interne a empêché l\'inscription';
}
9/ Normalement dans le header() on doit placer un chemin absolu. Par exemple : http://www.tonsite.com/membre/page.php
10/ On ne fait pas de SELECT * mais on liste les champs
11/ mysql_fetch_array() est à remplacer par mysql_fetch_assoc() car plus rapide
12/ Dans ton <form> tag, remplace le <? par <?php
13/ Pas la peine de faire des htmlentities(). Htmlspecialchars() suffit
14/ Il ne faut pas faire de stripslashes(). Le stripslashes() c'est uniquement si le serveur est mal configuré, c'est-à-dire avec magic_quotes_gpc à On
Voilà, pas moins de 15 améliorations pour un même fichier. Amuse toi bien ;)
++
Hugo.
10 mai 2008 à 18:45
a++
10 mai 2008 à 16:02
a++
10 mai 2008 à 15:57
C'est quoi l'intérêt d'établir la connexion à la base dans config.php si c'est pour ensuite l'établir dans une autre page, alors que le fichier config.php a quand même été inclus... ?
Tu établis la connexion combien de fois ?
mysql_escape_string() => Bravo. Mais mysql_real_escape_string(), c'est encore mieux.
SELECT count(*) => C'est vraiment, vraiment, vraiment crade. SELECT COUNT(id) c'est mieux : compter sur un champ indexé c'est forcément mieux que compter sur tous les champs.
md5(mysql_escape_string($_POST['pass'])) => là, la fonction d'échappement ne sert à rien. La fonction md5 retourne obligatoirement une chaine de caractères ne contenant QUE des caractères alphanumériques, et rien d'autre. Donc pas de risque d'injection.
obtimal => j'ai un vieux dictionnaire, mais quand même... j'ai pas trouvé.
Bon pis j'arrête là, sinon j'y passe le week end...
10 mai 2008 à 12:37
a++
10 mai 2008 à 09:46
0bentom32390 : je vais changer ça tout de suite, je ne l'avais pas remarqué, d'habitude je met toujours des <?php donc la les <? c'est l'ancienne manière de coder et je passerai le message a mon associé aussi !
a++
10 mai 2008 à 08:41
9 mai 2008 à 23:53
J'ai pas encore pu regarder ton code, mais en français, on écrit pas connection, mais connexion.
9 mai 2008 à 21:05
Pour toutes question sur le script allez sur le forum suivant : http://ressource.superforum.fr/index.htm
a++