apt-get install php5-mysql
apt-get install mysql-server
apt-get install phpmyadmin
===== 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
./creerMysqlBDDetUser.sh essaiLogin essaiLogin
=== Création des tables membre et login===
#-- 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,
isAdmin tinyint(1) NOT NULL DEFAULT 0,
dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
dateModif TIMESTAMP DEFAULT 0,
idLogin int NOT NULL,
PRIMARY KEY (membre_id),
CONSTRAINT FK_login FOREIGN KEY(`idLogin`) REFERENCES login(`login_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql -uessaiLogin -p
=== Quelques insertions pour les tests===
#--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');
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `membre`;
DELETE FROM `membre`;
INSERT INTO membre(prenom, nom, isAdmin, dateInscription, idLogin) VALUES
('admin', 'Admin', 1, now(), 1);
mysql -uessaiLogin -p
* 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
BOOL, BOOLEAN
These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true
* 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
// pour première insertion
$pseudo = "admin";
$motPasse = "admin";
echo "mot de passe pour " .$pseudo. ":
";
$motPasseHash = password_hash($motPasse,PASSWORD_BCRYPT,['cost' => 9]);
echo "".$motPasseHash."
";
//
$bool = password_verify($motPasse, $motPasseHash);
var_dump($bool);
// retour :
//mot de passe pour admin:
//$2y$09$OLK0HP3JDYjMKSoJxC00o.MCnMWHjT/sUI.rynSHxw.p9A6tSZYM.
//boolean true
**Remarque sur les dates :**
Pour le champ ''dateModif'', si on avait choisi le type ''DATE'' à la place de ''TIMESTAMP''
CREATE TABLE IF NOT EXISTS membre(
<...>
dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
dateModif DATE,
<...>
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
On aurait pu modifier la date seulement
* avec la fonction mysql ''now()'' :
UPDATE `membre` SET `dateModif`=NOW() WHERE `pseudo`='admin';
* ou avec la fonction mysql ''CURRENT_TIMESTAMP()'' :
UPDATE `membre` SET `dateModif`=CURRENT_TIMESTAMP() WHERE `pseudo`='admin';
* qui donneraient ce résultat :
select pseudo, dateModif from membre where pseudo='admin';
+-------+------------+
| pseudo | dateModif |
+-------+------------+
| admin | 2016-06-24 |
+-------+------------+