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 Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-installer-mysql-creer-une-bdd-pour-un-site-en-php-objet [24/05/2016 17:49] Hypathie [creer-son-site-web-en-php _ Installer mysql, créer une BDD pour un site en php objet] |
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-installer-mysql-creer-une-bdd-pour-un-site-en-php-objet [08/08/2016 16:22] Hypathie [Utilisation] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
* Objet : Mise en place d'une base de données mysql, organiser le code de son site web selon les conventions de la programmation //orientée objet//. | * Objet : Mise en place d'une base de données mysql, organiser le code de son site web selon les conventions de la programmation //orientée objet//. | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
- | * Commentaires : On verra comment organiser son code selon architecture orientée objet et comment utiliser sa base de donnée depuis son site web. | + | |
* 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à !.]] :-) | ||
Ligne 16: | Ligne 16: | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
+ | ====Base de données, table membre==== | ||
+ | ===On crée la base de données === | ||
+ | * Voir script sh et explication : https://debian-facile.org/utilisateurs:hypathie:config:script_creation_bdd_mysql_et_user | ||
+ | |||
+ | <code user>./creerMysqlBDDetUser.sh essaiLogin essaiLogin <motDePasse></code> | ||
+ | |||
+ | === Création des tables membre et login=== | ||
+ | |||
+ | <code sql> | ||
+ | #-- fichier : /home/$user/createTableMembreLogin.sql | ||
+ | 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`; | ||
+ | |||
+ | CREATE TABLE IF NOT EXISTS membre( | ||
+ | membre_id int NOT NULL AUTO_INCREMENT, | ||
+ | prenom VARCHAR(50) NOT NULL, | ||
+ | nom VARCHAR(50) NOT NULL, | ||
+ | mail VARCHAR(100) NOT NULL, | ||
+ | isAdmin tinyint(1) NOT NULL DEFAULT 0, | ||
+ | dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), | ||
+ | dateModif TIMESTAMP, | ||
+ | idLogin int NOT NULL, | ||
+ | PRIMARY KEY (membre_id), | ||
+ | CONSTRAINT FK_login FOREIGN KEY(`idLogin`) REFERENCES login(`login_id`) | ||
+ | )ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code user>mysql -uessaiLogin -p <createTableMembreLogin.sql</code> | ||
+ | |||
+ | === Quelques insertions pour les tests=== | ||
+ | |||
+ | <code sql> | ||
+ | #--fichier : /home/$user/insertTableMembreLogin.sql | ||
+ | USE essaiLogin; | ||
+ | |||
+ | SET FOREIGN_KEY_CHECKS=0; | ||
+ | TRUNCATE `login`; | ||
+ | SET FOREIGN_KEY_CHECKS=1; | ||
+ | DELETE FROM `login`; | ||
+ | |||
+ | INSERT INTO login(pseudo, motPasse, mail) VALUES | ||
+ | ('admin', '$2y$09$vDdO6/IMSHdk/ja2MQGHfO1KJasWHNRCUDr4ZCecaZjtl4GpM3I9m', 'admin@adm.fr'); | ||
+ | ('toto', MD5('totototo')); | ||
+ | |||
+ | 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 user>mysql -uessaiLogin -p <insertTableMembreLogin.sql</code> | ||
+ | |||
+ | <note tip> | ||
+ | * La ligne ''isAdmin tinyint(1)NOT NULL DEFAULT 0,'' \\ signifie que le champs est rempli par défaut avec la valeur ''FALSE''.\\ La valeur ''TRUE'' sera ''1''. | ||
+ | * Voir : http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html | ||
+ | <code>BOOL, BOOLEAN | ||
+ | |||
+ | These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true</code> | ||
+ | |||
+ | * 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 php> | ||
+ | // pour première insertion | ||
+ | $pseudo = "admin"; | ||
+ | $motPasse = "admin"; | ||
+ | echo "<p>mot de passe pour " .$pseudo. ": </p>"; | ||
+ | $motPasseHash = password_hash($motPasse,PASSWORD_BCRYPT,['cost' => 9]); | ||
+ | echo "<p>".$motPasseHash."</p>"; | ||
+ | // | ||
+ | $bool = password_verify($motPasse, $motPasseHash); | ||
+ | var_dump($bool); | ||
+ | |||
+ | // retour : | ||
+ | //mot de passe pour admin: | ||
+ | //$2y$09$OLK0HP3JDYjMKSoJxC00o.MCnMWHjT/sUI.rynSHxw.p9A6tSZYM. | ||
+ | //boolean true | ||
+ | |||
+ | </code> | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | <note> | ||
+ | **Remarque sur les dates :** | ||
+ | |||
+ | Pour le champ ''dateModif'', si on avait choisi le type ''DATE'' à la place de ''TIMESTAMP'' | ||
+ | |||
+ | <code> | ||
+ | CREATE TABLE IF NOT EXISTS membre( | ||
+ | <...> | ||
+ | dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | ||
+ | dateModif DATE, | ||
+ | <...> | ||
+ | )ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||
+ | </code> | ||
+ | |||
+ | On aurait pu modifier la date seulement | ||
+ | |||
+ | * avec la fonction mysql ''now()'' : | ||
+ | |||
+ | <code>UPDATE `membre` SET `dateModif`=NOW() WHERE `pseudo`='admin';</code> | ||
+ | |||
+ | * ou avec la fonction mysql ''CURRENT_TIMESTAMP()'' : | ||
+ | |||
+ | |||
+ | <code>UPDATE `membre` SET `dateModif`=CURRENT_TIMESTAMP() WHERE `pseudo`='admin';</code> | ||
+ | |||
+ | * qui donneraient ce résultat : | ||
+ | |||
+ | <code>select pseudo, dateModif from membre where pseudo='admin';</code> | ||
+ | |||
+ | <code> | ||
+ | +-------+------------+ | ||
+ | | pseudo | dateModif | | ||
+ | +-------+------------+ | ||
+ | | admin | 2016-06-24 | | ||
+ | +-------+------------+ | ||
+ | |||
+ | </code> | ||
+ | |||
+ | </note> |