Télécharger la présentation
1
Modex Web Dominique Rossin
Mysql et Sessions PHP Modex Web Dominique Rossin
2
PHP La semaine passée ? Mysql C:\xampp\htdocs\index.php
index.php OUTPUT de PHP index.php Mysql PHP
3
Recherche des contacts de rossin
Détruire des données Recherche des contacts de rossin Id login1 login2 1 serre euler 2 desprez 3 morain 4 rossin 5 SELECT * FROM ‘contact‘ WHERE (login1 = ’rossin’) OR (login2 = ’rossin’) DELETE FROM ‘contact‘ WHERE (login1 = ’rossin’) OR (login2 = ’rossin’) DELETE SELECT *
4
Mise à jour d’un enregistrement
Solution 1 DELETE INSERT On 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 2 3 4
5
Exemple id prenom nom age 2 Leonhard Euler 302 3 Baptiste Desprez 15 4
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 2 3 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 2 3 4 PB : id a changé
6
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 2 3 4 OK
7
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 2 3 4 INCOHERENCE
8
Bonne solution : UPDATE
UPDATE `table_nom` SET `age`=’30’ WHERE `id`=‘1’ UPDATE `table_nom` Quelle table SET `age`=’30’ Quelle modif WHERE `id`=‘1’ Quels enregistrements
9
Exemple : Mots de passe Changement de mot de passe. 2 opérations:
login prenom nom age mdp serre olivier 30 aigle euler Leonhard Euler 302 lemme desprez Baptiste Desprez 15 prez morain François Morain 12 ouichef Changement de mot de passe. 2 opérations: Vérification de l’ancien mot de passe Modification du mot de passe UPDATE `tableLogin` SET `mdp`=‘groupir’ WHERE `login`=‘morain’ AND `mdp`=‘ouichef’
10
Opération réussie ? Connaitre le nombre de lignes qui ont changé
mysql_query(‘’UPDATE ……..’’); if (mysql_affected_rows()==1) … Bonne méthode : les transactions et le système de verrou
11
Concurrence Effacement d’un utilisateur (ex : 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 2 3 4 Action sur 2 tables 2 opérations DELETE sont nécessaires
12
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.
13
Système de réservation
Réservation de places Gestion d’un panier On doit réserver des éléments pour une certaine durée de temps TIMESTAMP : Tampon de temps
14
TimeStamp Champ DATETIME ou TIMESTAMP
On stocke NOW() lors de la réservation Pour vérifier la disponibilité on vérifie le délai depuis le TIMESTAMP.
15
Retour sur PHP < ?php $var = 3 ; var_dump(isset($var)) ; unset($var) ; $var = NULL ; ?> TRUE FALSE FALSE
16
Clés de tableaux < ?php $search_array = array(’premier’ => null, ’second’=> 4); isset($search_array[’premier’]) ; array_key_exists(’premier’, $search_array) ; ?> FALSE TRUE
17
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
18
Comment ? On commence par session_start() avant tout code HTML.
On travaille ensuite avec les tableau $_SESSION vu comme un tableau persistent
19
Exemple Pas d’espace <?php session_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; ?>
20
Utilisation Connexion des utilisateurs: <?php session_start();
if ($_POST[‘action’]==‘login’ && estUtilisateurValide()) { $_SESSION[‘login’] = …; } if (array_key_exists(‘login’,$_SESSION)) echo ‘’Bonjour ‘’.$_SESSION[‘login’]; ?>
21
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
22
Détruire une session <?php session_start() ; //destruction de toutes les variable de sessions session_unset() ; //destruction de la session session_destroy() ; // redirection header("Location: index.php") ; ?>
23
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.