ESPACE MEMBRE COMPLET

mickbad Messages postés 71 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 20 avril 2008 - 5 juin 2006 à 18:50
cs_bonhommecrea Messages postés 44 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 13 mars 2011 - 21 août 2010 à 00:19
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/37973-espace-membre-complet

cs_bonhommecrea Messages postés 44 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 13 mars 2011
21 août 2010 à 00:19
ça fait 2ans, waw. c'est quoi le nouveau code SQL ? :x
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 23:30
Dans ce cas utilise ça :

CREATE TABLE membre(

id int( 20 ) NOT NULL AUTO_INCREMENT,
login varchar( 30 ) NOT NULL default '',
pass_md5 varchar( 40 ) NOT NULL default '',
rang enum( '1', '2', '3' ) NOT NULL default '1',
activ enum( 'oui', 'non', 'banni' ) NOT NULL default 'non',
UNIQUE KEY ( id ) UNIQUE KEY ( login )
) TYPE = MYISAM ;

Je pense que ça marchera.

bloodoogang_cs => Si tu lis tous ce qu'il y a de marqué, tu vois que je prévois de la faire mais qu'elle n'est pas encore faite (2 ans après ça fait long je sais). Mais alors que j'étais en plein en train de bien avancer, j'ai commencé un autre projet qui me prend vraiment beaucoup de temps (un jeu comme E-Univers, pour les connaisseurs). Si j'ai assez de temps, je vais essayer de vous faire une nouvelle version cet été (avec mon expérience de plus de 2 ans de PHP à contribution ^^).

Voilà pour les news.
dededede4 Messages postés 235 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 11 septembre 2009
12 mai 2008 à 16:47
Erreur
requête SQL:

CREATE TABLE membre(

id int( 20 ) NOT NULL AUTO_INCREMENT default '',
login varchar( 30 ) NOT NULL default '',
pass_md5 varchar( 40 ) NOT NULL default '',
rang enum( '1', '2', '3' ) NOT NULL default '1',
activ enum( 'oui', 'non', 'banni' ) NOT NULL default 'non',
UNIQUE KEY ( id ) UNIQUE KEY ( login )
) TYPE = MYISAM ;



MySQL a répondu:

#1067 - Invalid default value for 'id'


Bonne nuit :D
bloodoogang_cs Messages postés 1 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 24 décembre 2007
24 déc. 2007 à 20:10
Tu parles de 1.2 mais y a que la 1.1 qui est mises....
astuces_jeux Messages postés 731 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 27 mai 2010
26 juin 2007 à 19:05
Je trouve que c'est un bon code mais ce serait bien d'enlever ton "complet" dans le titre il y a plusieurs autres codes beaucoup plus complet comme les avatars. Les mp, les forums, les membres connecters, les fiches des membres, et plein d'autres choses que tu ne fais pas. Il faudrait ajouter plein de fonctions ou enlever le "complet"
patrick532 Messages postés 40 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 20 avril 2009
18 juil. 2006 à 21:19
bon boulot, continue !
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
15 juin 2006 à 18:51
Merci de ton avis ! Je pense que je metterai le pseudo et l'id unique car il est vrai que sinon n'importe qui peut pirater le compte. Le champ pass_md5 contient le mot de passe haché en md5 et il n'y a pas de renvoie de mot de passe par mail (pourrait arrivé un jour). Je suis en plein dans la programmation de la partie administration et je rajoute un champ à la base de données pour faire des rangs ! Je passe aussi à une méthode plus simple pour configurer les paramètres de connexion (include)!

Dans la version 1.3 devrait se trouver donc une nouvelle table SQL, une page admin, une page modo, une page de paramètre de connexion à la BDD, une page de vérification du rang, une page des pages de redirection en cas d'erreur !!! Donc du travail en percpective qui devrait se faire avant fin juillet (du moins je l'espère).

Dans la version 1.4 devrait arriver le cookie et le renvoie de mot de passe par mail mais cette version n'a pas encore de date de sortie prévu.

Voilà.
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
13 juin 2006 à 01:01
PS si tu compte faire un autologin avait un cookie qui contiendrai l'identifiant de ton user pour le reconnaitre.

Ne met surtout pas l'identifiant de l'utilisateur en clair dans le cookies sinon tu te fera pirater tout tes comptes clients par un petit malin qui simulera des cookies en mettant l'identifiant qu'il souhaite. avec une bonne machine en php tu peux ainsi rentré dans 50 000 comptes changer leur mot de passe en moins d'une heure.
Voilà comment on tue un site.

Donc si tu dois mettre l'id de l'utilisateur dans un cookie, accole lui une signature numérique unique que tu pourras vérifiée par la suite.

exemple pour le client avec l'id 178 :

$id = 178;
$signature = $id.'_'.md5('Un texte qui sert à signé mon cookie'.($id + 1500));

ce qui de donne un truc du genre 178_sdf65g4635qert31321qzSgqe1QZTQae

sur ton site quand tu reçois un cookie d'autologue tu procède de la sorte :

$cooki = $_COOKIE['autolog']; // vaut 178_sdf65g4635qert31321qzSgqe1QZTQae
list($id, $signature) = explode('_', $cooki, 2);
if ($signature == md5('Un texte qui sert à signé mon cookie'.($id + 1500))) {
// ce cookie est valide je peux loguer ce client
} else {
// cookie invalide je peux jeter ce client qui me semble pas etre honnete.
}

Voilà désolé j'écris tout ça à la va vite. donc ça peux ne pas etre clair, je repasserai demain soir voir après le boulot et des heures de codes php encore écrites ^_^.
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
13 juin 2006 à 00:46
Je n'ai pas regarder ta source. Mais au vu de la table laissé dans le premier commentaire je dirai qu'il manque un champ contenant le mot de passe en clair. Pourquoi ?

Comment renvoies-tu le mot de passe perdu par un de tes users ?
Si tu te dis je les laisse remettre un nouveau mot de passe uniquement par le pseudo qu'il rentre tu te feras écraser ta base par un petit malin qui tentera de changer les mots de passe pour des centaine de pseudo.
Si tu comptes les changers toi même, tu vas galérer en maintenance.

Moi personnelle j'utilise un champ crypter md5 et un champ avec le passe en clair. pour l'identification j'utilise le md5 car il est en liaison direct avec un formulaire. pour le second je revoie par email (donc je stocke aussi l'email) le mot de passe en clair.

C'est pas le plus sécurisé (puisque les mails transite en clair), puisque celui qui prend possession d'un pc a généralement accès a sa boite mail donc se fait renvoyé ses password. Mais c'est déjà un bon début.

Un flag pour savoir si un compte est ouvert ou fermé est bon. une date pour savoir quand à été crée le compte, une seconde date pour connaitre sa dernière connexion. Ceci permet de mesurer l'inactivité d'un compte par exemple.

Tu devrai faire sauter l'id et mettre plutot le login en clé primaire, si tu souhaite gardé l'id met le login en clé unique pour que deux utilisateurs n'est pas le même login et potentiellement le même mot de passe. sinon qui est qui et qui se logue sur qui ?

PS : garde toujours un moyen de contacter tes users, généralement par l'email ou le téléphone ou l'adresse postale. mais attention pas de mailing liste abusive etc ^^

voilà en espérant pas forcément que tu me suives mais que ça te donne des idées =)

@plus
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
10 juin 2006 à 00:03
Oui, il est vrai que j'ai pris comme base ce site. Mais il est vrai aussi que je l'avais un peu oublié car il me semblait que :
- 1 j'avais trouvé le code ici
- 2 après avoir travaillé sur la page profil comme un dur les pages de connexion et autre était annexes

M'approprier la propriété de quelqu'un je crois que tu abuse largement !!! Car le plus gros du travail fait dans cette source est la page PROFIL et la VALIDATION par e-mail de l'administrateur (que j'ai fait seul et en copiant une ligne à droite à gauche + les conseils). Mais il semblerai que tu ne soit pas de mon avis et que les pages de connexions soit très important même s'il en existe 100 fois plus que des pages PROFIL et VALIDATION par e-mail de l'admin !!!

P.S : La table membre je l'ai retapé tout seul (DSL si c'est une copie conforme). Merci de ton commentaire j'ai pu essayé de corrigé un problème sans grand succès masi ça m'a aidé !
cs_Franquito Messages postés 61 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 23 décembre 2006
6 juin 2006 à 23:16
Tu dis que ce code est fait en partie par toi... Ah bon ? le html ?

Car moi je reconnais tout a fait le "comment faire Un espace membre" copié collé du site (trés bon soit dit en passant) LePHPFacile.com !!!

Et je trouve ca dommage que tu ne le mentionne pas, pire que tu te l'approprie.
Naixn Messages postés 455 Date d'inscription mardi 17 septembre 2002 Statut Membre Dernière intervention 22 juillet 2007
6 juin 2006 à 10:52
L'abus de '!!!' est mauvais pour la crédibilité et la langue française :p
( c'était juste pour embêter :p )
Bartheleway Messages postés 76 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 12 mai 2008
5 juin 2006 à 21:12
Merci de ton commentaire, mais le problème c'est que je suis moi-même un débutant !!! J'ai donc créé cet espace grâce à d'autre code (plus mon grain de sel) !!!
Cet espace sert pour mon site web, qui est le site d'une alliance d'un jeu !!! Il n'y a donc pas de suivi !!! Donc pas d'utilité (surtout j'y avais pas pensé) !!!
J'ai par contre un doute sur le bon fonctionnement de ma page profil et de ma page validation (je les ai pas testé) !!!
mickbad Messages postés 71 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 20 avril 2008
5 juin 2006 à 18:50
Salut,

je n'ai pas encore regardé le code, juste la création de le table Membre :
CREATE TABLE membre (
id int(11) NOT NULL auto_increment,
login text NOT NULL,
pass_md5 text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

Une remarque est qu'il serait judicieux d'ajouter un champ de validation du compte et un autre (facultatif) indiquant qu'il est supprimé.

Pourquoi ?

Imagine un instant que ta table serve pour des commandes de produits. Il y a une commande qui fait référence à cet utilisateur (info livraison ...). L'utilisateur décide de supprimer son compte. Si ta base de données est bien faîte (et que cela soit possible), il y aura une erreur d'intégrité car le compte est référencé sur une commande. Dans le cas où il y a aucune contrainte d'intégrité, lorsque l'admin voudra pour une raison ou une autre voir les commandes passées, il y aura au pire une erreur et au mieux des données vides ou invalides.

Peu importe la solution choisie pour éviter les erreurs il va y avoir des pertes d'information et de certains historiques.

Je sais que le code est destiné pour des débutants, mais justement, autant à aller plus loin, non ?

M'enfin juste en passant par là et voyant la structure de la base et puis une validation sur un compte c'est TRES utile dans beaucoup cas de figure :)

Bonne continuation,
.Mick.
Rejoignez-nous