MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP.

23
MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP

Transcript of MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP.

Page 1: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP.

MODEX WEBDOMINIQUE ROSSIN

Mysql et Sessions PHP

Page 2: MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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