modex web dominique rossin mysql et sessions php

Post on 04-Apr-2015

110 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MODEX WEBDOMINIQUE 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

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 *

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

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é

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

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

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

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’

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

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

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.

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

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.

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

Clés de tableaux

< ?php$search_array = array(’premier’ => null, ’second’=>

4);

isset($search_array[’premier’]) ;

array_key_exists(’premier’, $search_array) ;

?>

FALSEFALSE

TRUETRUE

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

Comment ?

On commence par session_start() avant tout code HTML.

On travaille ensuite avec les tableau $_SESSION vu comme un tableau persistent

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

Utilisation

Connexion des utilisateurs:<?php

session_start();if ($_POST[‘action’]==‘login’ && estUtilisateurValide()) {

$_SESSION[‘login’] = …; } if (array_key_exists(‘login’,$_SESSION))

echo ‘’Bonjour ‘’.$_SESSION[‘login’];?>

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

Détruire une session

<?phpsession_start() ;//destruction de toutes les variable de sessionssession_unset() ;//destruction de la sessionsession_destroy() ;// redirectionheader("Location: index.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

top related