modex web dominique rossin mysql et sessions php

23
MODEX WEB DOMINIQUE ROSSIN Mysql et Sessions PHP

Upload: roxane-toussaint

Post on 04-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

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