ESPACE MEMBRE V2

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 9 mai 2008 à 21:05
cs_tonyni Messages postés 1 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 11 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.

https://codes-sources.commentcamarche.net/source/46612-espace-membre-v2

cs_tonyni Messages postés 1 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 11 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és 1 Date d'inscription dimanche 8 février 2009 Statut Membre Dernière intervention 11 mai 2009
11 mai 2009 à 22:29
C'est exactement ce que je chercher, merci.
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Derniè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és 172 Date d'inscription samedi 11 août 2012 Statut Membre Derniè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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
28 oct. 2008 à 18:08
j'ai supprime la note, j'attends que se soit justifie.
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
13 mai 2008 à 16:17
ok, je vais voir ça !

merci

a++
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mai 2008 à 15:06
# $retour = mysql_query("SELECT * FROM EM_site");
# $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...
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 mai 2008 à 21:33
merci bcmfr !
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
12 mai 2008 à 21:24
C'est vraiment le monde à l'envers... mettre une note avant de tester ou quoi... :/
bcmfr Messages postés 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 novembre 2016
12 mai 2008 à 20:59
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 28 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 20:23
Je vais tester pour voir ça :)
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 mai 2008 à 12:23
je n'ai pas fait toute les modifications mais elles viendront plus tard !

a++
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 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és 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
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';
}

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.
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
10 mai 2008 à 18:45
C'est bon, j'ai fait les modifs sauf pour SELECT count(*) !

a++
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
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és 25 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 21 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és 100 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 13 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és 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
9 mai 2008 à 21:05
Salut,

Pour toutes question sur le script allez sur le forum suivant : http://ressource.superforum.fr/index.htm

a++
Rejoignez-nous