Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-installer-mysql-creer-une-bdd-pour-un-site-en-php-objet [28/06/2016 20:17] Hypathie [Utilisation] |
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-installer-mysql-creer-une-bdd-pour-un-site-en-php-objet [01/09/2016 10:48] (Version actuelle) Hypathie [Utilisation] |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | ===== Introduction ===== | + | |
===== Installations relative à la base de données ===== | ===== Installations relative à la base de données ===== | ||
Ligne 23: | Ligne 23: | ||
<code user>./creerMysqlBDDetUser.sh essaiLogin essaiLogin <motDePasse></code> | <code user>./creerMysqlBDDetUser.sh essaiLogin essaiLogin <motDePasse></code> | ||
- | === Création de la table membre=== | + | === Création des tables membre et login=== |
<code sql> | <code sql> | ||
+ | #-- fichier : /home/$user/createTableMembreLogin.sql | ||
USE essaiLogin; | USE essaiLogin; | ||
+ | DROP TABLE IF EXISTS `login`; | ||
+ | |||
+ | CREATE TABLE IF NOT EXISTS login( | ||
+ | login_id int NOT NULL AUTO_INCREMENT, | ||
+ | pseudo VARCHAR(20) NOT NULL, | ||
+ | motPasse VARCHAR(100) NOT NULL, | ||
+ | cle VARCHAR(50) NULL, | ||
+ | actif TINYINT(1) NULL, | ||
+ | mail VARCHAR(50) NOT NULL, | ||
+ | lastConnect TIMESTAMP DEFAULT 0, | ||
+ | PRIMARY KEY (login_id), | ||
+ | UNIQUE KEY username (pseudo) | ||
+ | )ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
+ | |||
+ | |||
DROP TABLE IF EXISTS `membre`; | DROP TABLE IF EXISTS `membre`; | ||
CREATE TABLE IF NOT EXISTS membre( | CREATE TABLE IF NOT EXISTS membre( | ||
- | membre_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | + | membre_id int NOT NULL AUTO_INCREMENT, |
prenom VARCHAR(50) NOT NULL, | prenom VARCHAR(50) NOT NULL, | ||
nom VARCHAR(50) NOT NULL, | nom VARCHAR(50) NOT NULL, | ||
- | pseudo VARCHAR(20) NOT NULL, | + | isAdmin tinyint(1) NOT NULL DEFAULT 0, |
- | motPasse VARCHAR(100) NOT NULL, | + | dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), |
- | mail VARCHAR(100) NOT NULL, | + | dateModif TIMESTAMP DEFAULT 0, |
- | isAdmin tinyint(1)NOT NULL DEFAULT 0, | + | idLogin int NOT NULL, |
- | dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | + | |
- | dateModif TIMESTAMP, | + | |
PRIMARY KEY (membre_id), | PRIMARY KEY (membre_id), | ||
- | UNIQUE KEY username (pseudo) | + | CONSTRAINT FK_login FOREIGN KEY(`idLogin`) REFERENCES login(`login_id`) |
)ENGINE=InnoDB DEFAULT CHARSET=utf8; | )ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
</code> | </code> | ||
+ | |||
+ | <code user>mysql -uessaiLogin -p <createTableMembreLogin.sql</code> | ||
=== Quelques insertions pour les tests=== | === Quelques insertions pour les tests=== | ||
<code sql> | <code sql> | ||
+ | #--fichier : /home/$user/insertTableMembreLogin.sql | ||
USE essaiLogin; | USE essaiLogin; | ||
- | TRUNCATE `pseudo`; | + | SET FOREIGN_KEY_CHECKS=0; |
- | DELETE FROM `pseudo`; | + | TRUNCATE `login`; |
+ | SET FOREIGN_KEY_CHECKS=1; | ||
+ | DELETE FROM `login`; | ||
- | INSERT INTO membre(prenom, nom, pseudo, motPasse, mail, isAdmin, dateInscription) VALUES | + | INSERT INTO login(pseudo, motPasse, mail) VALUES |
- | ('prenom', 'nom', 'pseudo', MD5('motPasse'), 'mail@mail.fr', 0, now()), | + | ('admin', '$2y$09$vDdO6/IMSHdk/ja2MQGHfO1KJasWHNRCUDr4ZCecaZjtl4GpM3I9m', 'admin@adm.fr'); |
- | ('toto', 'toto', 'toto' ,MD5('toto'), 'toto@toto.fr', 0, now()); | + | |
+ | |||
+ | SET FOREIGN_KEY_CHECKS=0; | ||
+ | TRUNCATE `membre`; | ||
+ | DELETE FROM `membre`; | ||
+ | |||
+ | |||
+ | INSERT INTO membre(prenom, nom, isAdmin, dateInscription, idLogin) VALUES | ||
+ | ('admin', 'Admin', 1, now(), 1); | ||
</code> | </code> | ||
+ | |||
+ | <code user>mysql -uessaiLogin -p <insertTableMembreLogin.sql</code> | ||
<note tip> | <note tip> | ||
Ligne 65: | Ligne 95: | ||
These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true</code> | These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true</code> | ||
- | </note> | ||
- | * Ce qui donne : | + | * Le mot de passe pour admin a été généré à titre d'exemple par la fonction php suivante. \\ La documentation déconseille l'utilisation de md5 et de sha1 http://php.net/manual/fr/faq.passwords.php |
- | <code user>mysql -uessaiLogin -p essaiLogin -e "select * from membre;"</code> | + | <code php> |
- | <code>Enter password: | + | // pour première insertion |
- | +-----------+--------+------+-------+----------------------------------+--------------+---------+---------------------+---------------------+ | + | $pseudo = "admin"; |
- | | membre_id | prenom | nom | pseudo | motPasse | mail | isAdmin | dateInscription | dateModif | | + | $motPasse = "admin"; |
- | +-----------+--------+------+-------+----------------------------------+--------------+---------+---------------------+---------------------+ | + | echo "<p>mot de passe pour " .$pseudo. ": </p>"; |
- | | 1 | prenom | nom | pseudo | 335368c4ed30a8f0f3b3919a2dfade2a | mail@mail.fr | 0 | 2016-06-24 15:08:29 | 0000-00-00 00:00:00 | | + | $motPasseHash = password_hash($motPasse,PASSWORD_BCRYPT,['cost' => 9]); |
- | | 2 | toto | toto | toto | f71dbe52628a3f83a77ab494817525c6 | toto@toto.fr | 0 | 2016-06-24 15:08:29 | 0000-00-00 00:00:00 | | + | echo "<p>".$motPasseHash."</p>"; |
- | +-----------+--------+------+-------+----------------------------------+--------------+---------+---------------------+---------------------+ | + | // |
- | </code> | + | $bool = password_verify($motPasse, $motPasseHash); |
+ | var_dump($bool); | ||
- | * On insert un administrateur : | + | // retour : |
+ | //mot de passe pour admin: | ||
+ | //$2y$09$OLK0HP3JDYjMKSoJxC00o.MCnMWHjT/sUI.rynSHxw.p9A6tSZYM. | ||
+ | //boolean true | ||
- | <code user> | ||
- | mysql -uessaiLogin -p essaiLogin -e "INSERT INTO membre(prenom, nom, pseudo, motPasse, mail, isAdmin) VALUES ('admin', 'Admin', 'admin' ,MD5('<passdwCHOISI>'), 'admin@admin.fr', 1);" | ||
</code> | </code> | ||
- | * On ajoute la date et l'heure de l'update pour l'administrateur : | + | </note> |
- | + | ||
- | <code user>mysql -uessaiLogin -p essaiLogin -e "UPDATE \`membre\` SET \`dateModif\`=NOW() WHERE \`pseudo\`='admin';"</code> | + | |
- | + | ||
- | ===On vérifie === | + | |
- | + | ||
- | <code user>mysql -uessaiLogin -p essaiLogin -e "select * from membre;"</code> | + | |
- | + | ||
- | + | ||
- | <code> | + | |
- | Enter password: | + | |
- | +-----------+--------+-------+-------+----------------------------------+----------------+---------+---------------------+---------------------+ | + | |
- | | membre_id | prenom | nom | pseudo | motPasse | mail | isAdmin | dateInscription | dateModif | | + | |
- | +-----------+--------+-------+-------+----------------------------------+----------------+---------+---------------------+---------------------+ | + | |
- | | 1 | prenom | nom | pseudo | 335368c4ed30a8f0f3b3919a2dfade2a | mail@mail.fr | 0 | 2016-06-24 15:08:29 | 0000-00-00 00:00:00 | | + | |
- | | 2 | toto | toto | toto | f71dbe52628a3f83a77ab494817525c6 | toto@toto.fr | 0 | 2016-06-24 15:08:29 | 0000-00-00 00:00:00 | | + | |
- | | 3 | admin | Admin | admin | 21232f297a57a5a743894a0e4a801fc3 | admin@admin.fr | 1 | 2016-06-24 15:10:16 | 2016-06-24 15:12:40 | | + | |
- | +-----------+--------+-------+-------+----------------------------------+----------------+---------+---------------------+---------------------+ | + | |
- | + | ||
- | + | ||
- | </code> | + | |