modex web dominique rossin mysql et sessions php
TRANSCRIPT
![Page 1: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/1.jpg)
MODEX WEBDOMINIQUE ROSSIN
Mysql et Sessions PHP
![Page 2: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/2.jpg)
La semaine passée ?
http://www.polytechnique.fr/index.php
ind
ex.p
hp
OU
TP
UT
de P
HP
in
dex.
ph
pC:\xampp\htdocs\index.php
Mysql
![Page 3: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/3.jpg)
Détruire des données
SELECT * FROM ‘contact‘WHERE (login1 = ’rossin’)OR (login2 = ’rossin’)
Id login1 login2
1 serre euler
2 serre desprez
3 morain desprez
4 rossin desprez
5 serre rossin
Recherche des contacts de rossin
Recherche des contacts de rossin
DELETE FROM ‘contact‘WHERE (login1 =
’rossin’)OR (login2 = ’rossin’)
DELETE SELECT *
![Page 4: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/4.jpg)
Mise à jour d’un enregistrement
Solution 1DELETEINSERTOn veut changer l’age de Olivier Serre
Solution 1DELETEINSERTOn veut changer l’age de Olivier Serre
id prenom nom Age
1 olivier serre 20
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
Id p1 p2
1 1 2
2 1 3
3 2 4
![Page 5: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/5.jpg)
Exemple
On détruit l’enregistrement DELETE FROM `table_nom` WHERE `nom`=‘serre’ AND
`prenom`=‘olivier’ id prenom nom age
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
Id p1 p2
1 1 2
2 1 3
3 2 4
On réinsère le nouveau INSERT INTO`table_nom` (`prenom`,`nom`,age `) VALUES (‘olivier’,
‘serre’,’30’)id prenom nom age
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
5 Olivier Serre 30
Id p1 p2
1 1 2
2 1 3
3 2 4
PB : id a changéPB : id a changé
![Page 6: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/6.jpg)
Patch
INSERT INTO`table_nom` (`id`,`prenom`,`nom`,age `) VALUES (‘1’,‘olivier’, ‘serre’,’30’)
id prenom nom age
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
1 Olivier Serre 30
Id p1 p2
1 1 2
2 1 3
3 2 4
OKOK
![Page 7: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/7.jpg)
Problème : retour en arrière
On détruit l’enregistrement DELETE FROM `table_nom` WHERE `nom`=‘serre’ AND
`prenom`=‘olivier’ id prenom nom age
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
Id p1 p2
1 1 2
2 1 3
3 2 4
INCOHERENCEINCOHERENCE
![Page 8: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/8.jpg)
Bonne solution : UPDATE
UPDATE `table_nom` SET `age`=’30’ WHERE `id`=‘1’
UPDATE `table_nom` SET `age`=’30’ WHERE `id`=‘1’
UPDATE `table_nom` Quelle tableUPDATE `table_nom` Quelle table
SET `age`=’30’ Quelle modif
SET `age`=’30’ Quelle modif
WHERE `id`=‘1’ Quels enregistrements
WHERE `id`=‘1’ Quels enregistrements
![Page 9: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/9.jpg)
Exemple : Mots de passe
Changement de mot de passe.2 opérations:
Vérification de l’ancien mot de passe Modification du mot de passe
login prenom nom age mdp
serre olivier serre 30 aigle
euler Leonhard Euler 302 lemme
desprez Baptiste Desprez 15 prez
morain François Morain 12 ouichef
UPDATE `tableLogin` SET `mdp`=‘groupir’ WHERE `login`=‘morain’ AND `mdp`=‘ouichef’
UPDATE `tableLogin` SET `mdp`=‘groupir’ WHERE `login`=‘morain’ AND `mdp`=‘ouichef’
![Page 10: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/10.jpg)
Opération réussie ?
Connaitre le nombre de lignes qui ont changé
mysql_query(‘’UPDATE ……..’’);if (mysql_affected_rows()==1) …mysql_query(‘’UPDATE ……..’’);if (mysql_affected_rows()==1) …
Bonne méthode : les transactions et le système de verrou
![Page 11: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/11.jpg)
Concurrence
Effacement d’un utilisateur (ex : serre)id prenom nom Ag
e
1 olivier serre 20
2 Leonhard
Euler 302
3 Baptiste Desprez
15
4 François Morain 12
Id p1 p2
1 1 2
2 1 3
3 2 4
Action sur 2 tables2 opérations DELETE sont nécessaires
![Page 12: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/12.jpg)
LOCK des tables
LOCK TABLES `personnes`,`contact` WRITE DELETE from `personnes` WHERE ... DELETE from `contact` WHERE ...UNLOCK TABLES
Entre LOCK et UNLOCK personne ne peut toucher aux tables.
![Page 13: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/13.jpg)
Système de réservation
Réservation de placesGestion d’un panierOn doit réserver des éléments pour une
certaine durée de temps
TIMESTAMP : Tampon de temps
![Page 14: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/14.jpg)
TimeStamp
Champ DATETIME ou TIMESTAMPOn stocke NOW() lors de la réservationPour vérifier la disponibilité on vérifie le délai
depuis le TIMESTAMP.
![Page 15: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/15.jpg)
Retour sur PHP
< ?php$var = 3 ;var_dump(isset($var)) ;unset($var) ;var_dump(isset($var)) ;$var = NULL ;var_dump(isset($var)) ;
?>
TRUETRUE
FALSEFALSE
FALSEFALSE
![Page 16: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/16.jpg)
Clés de tableaux
< ?php$search_array = array(’premier’ => null, ’second’=>
4);
isset($search_array[’premier’]) ;
array_key_exists(’premier’, $search_array) ;
?>
FALSEFALSE
TRUETRUE
![Page 17: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/17.jpg)
Sessions
Une session permet de garder des informations d’une visite à l’autre d’un utilisateur
On peut garder des informations entre les pages
Les variables se transmettent sous forme de tableau
$_SESSION
Il est toujours possible de pirater une session
Ajout de cryptographie
![Page 18: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/18.jpg)
Comment ?
On commence par session_start() avant tout code HTML.
On travaille ensuite avec les tableau $_SESSION vu comme un tableau persistent
![Page 19: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/19.jpg)
Exemple
<?phpsession_start();if (isset($_GET[’reset’])) unset($_SESSION[’count’]);if (isset($_SESSION[’count’])) $_SESSION[’count’]++;
else $_SESSION[’count’] = 0;$sess = $_SESSION[’count’];
echo <<<END<html><body><a href="index.php">retour $sess</a><a href="index.php?reset=1">reset</a></body></html>END;?>
Pas d’espace
Pas d’espace
![Page 20: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/20.jpg)
Utilisation
Connexion des utilisateurs:<?php
session_start();if ($_POST[‘action’]==‘login’ && estUtilisateurValide()) {
$_SESSION[‘login’] = …; } if (array_key_exists(‘login’,$_SESSION))
echo ‘’Bonjour ‘’.$_SESSION[‘login’];?>
![Page 21: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/21.jpg)
La face cachée des sessions
A chaque session est associé un identifiant ou SID
Le SID est un identifiant unique
Le SID est transmis de manière transparente de page en page
Soit utilisation de cookie, soit via l’URL
Un SID n’est valable que pendant la visite du site et 30 min environ après
![Page 22: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/22.jpg)
Détruire une session
<?phpsession_start() ;//destruction de toutes les variable de sessionssession_unset() ;//destruction de la sessionsession_destroy() ;// redirectionheader("Location: index.php") ;
?>
![Page 23: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP](https://reader035.vdocuments.net/reader035/viewer/2022062312/551d9db9497959293b8dd67c/html5/thumbnails/23.jpg)
CNIL
Dans le cas d’enregistrement d’un utilisateur et d’un mail. Déclaration à la CNIL Envoi d’un mail de vérification mail(destinataire,
objet, contenu) Possibilité de désinscription