mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008
-
5 juin 2006 à 18:50
cs_bonhommecrea
Messages postés44Date d'inscriptiondimanche 14 mars 2010StatutMembreDernière intervention13 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.
cs_bonhommecrea
Messages postés44Date d'inscriptiondimanche 14 mars 2010StatutMembreDernière intervention13 mars 2011 21 août 2010 à 00:19
ça fait 2ans, waw. c'est quoi le nouveau code SQL ? :x
Bartheleway
Messages postés76Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention12 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és235Date d'inscriptionjeudi 23 juin 2005StatutMembreDernière intervention11 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és1Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention24 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és731Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention27 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és40Date d'inscriptionmardi 2 septembre 2003StatutMembreDernière intervention20 avril 2009 18 juil. 2006 à 21:19
bon boulot, continue !
Bartheleway
Messages postés76Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention12 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és163Date d'inscriptionlundi 29 septembre 2003StatutMembreDerniè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és163Date d'inscriptionlundi 29 septembre 2003StatutMembreDerniè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és76Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention12 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és61Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention23 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és455Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention22 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és76Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention12 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és71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 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 :)
21 août 2010 à 00:19
12 mai 2008 à 23:30
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.
12 mai 2008 à 16:47
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
24 déc. 2007 à 20:10
26 juin 2007 à 19:05
18 juil. 2006 à 21:19
15 juin 2006 à 18:51
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à.
13 juin 2006 à 01:01
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 ^_^.
13 juin 2006 à 00:46
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
10 juin 2006 à 00:03
- 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é !
6 juin 2006 à 23:16
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.
6 juin 2006 à 10:52
( c'était juste pour embêter :p )
5 juin 2006 à 21:12
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é) !!!
5 juin 2006 à 18:50
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.