COURS 8 : REDIRECTIONS ET SESSIONS

Documents pareils
PHP et les Bases de données - Généralités

TP JAVASCRIPT OMI4 TP5 SRC

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

PHP 4 PARTIE : BASE DE DONNEES

Attaques de type. Brandon Petty

Stockage du fichier dans une table mysql:

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

PHP. PHP et bases de données

Attaques applicatives

SYSTÈMES D INFORMATIONS

STID 2ème année : TP Web/PHP

Introduction. Passage de sites statiques à des sites dynamiques

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

PDO : PHP Data Object 1/13

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Mysql avec EasyPhp. 1 er mars 2006

Pratique et administration des systèmes

Comment développer et intégrer un module à PhpMyLab?

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

ITSR43 : INGÉNIERIE DES SYSTÈMES D INFORMATION Benoît Darties INTRODUCTION NOTION D INFORMATION QUELLES DONNÉES? EXPLOITATION DES DONNÉES

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

ISPConfig Documentation

Mysql. Les requêtes préparées Prepared statements

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Formulaire pour envoyer un mail

PHP 5. La base de données MySql. A. Belaïd 1

Création de formulaires interactifs

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Démonstration de la mise en cache via HTML 5 sur iphone

Comment faire pour créer ses propres pages html?

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Programmation Web. Madalina Croitoru IUT Montpellier

Dans l'article précédent, vous avez appris

Utilisation de GalaxShare

Module http MMS AllMySMS.com Manuel d intégration

CREATION WEB DYNAMIQUE

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

LA PLATE-FORME D'ALTERN C

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Module BD et sites WEB

GUIDE DE PAIEMENT. Pour Bien Effectuer votre Paiement, veuillez suivre les instructions suivantes :

Sécurité des applications web. Daniel Boteanu

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

DOM - Document Object Model

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Web statique : client-serveur. PHP/MySQL: Sites dynamiques Formulaires et bases de données. Discussion HTTP. Caractéristiques du HTTP

I. MySQL : Serveur et SGBD

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Tests de montée en charge avec Tsung

Installation locale de JOOMLA SEPIA

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Transfert de fichiers (ftp) avec dreamweaver cs5 hébergement et nom de domaine. MC Benveniste

équipement radio Procédure

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département

Live box et Nas Synology

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Hébergement de site web Damien Nouvel

MESVISITEURSPRO.COM. TUTO : Comment intégrer Google Analytics à mon site?

Mise en place d un serveur Proxy sous Ubuntu / Debian

Rapport de stage Nicolas PLAZE Licence Pro A2I. Rapport de Stage LICENCE PRO A2I. Société INFHOTIK. Nicolas PLAZE

Créer un sondage en ligne

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Programmation Web. Introduction

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

Guide d'installation

2 Formation utilisateur

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

CREATION d UN SITE WEB (INTRODUCTION)

Le stockage local de données en HTML5

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

PLUGINS Guide du Développeur STEPHANE FERRARI. P l u X m l 5.4

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Rapport de projet Site web pour une association

Un serveur web, difficile?

Initiation à html et à la création d'un site web

Ecriture d'un Plugin pour GLPI

Solution Pro pour l Envoi de SMS direct opérateurs PUSH SMV MODE HTTP. Documentation Technique

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Transcription:

COURS 8 : REDIRECTIONS ET SESSIONS LES REDIRECTIONS Les redirections sont des en-têtes HTTP. Or, selon le protocole HTTP, les en-têtes HTTP doivent être envoyés avant tout autre type de contenu, ce qui signifie qu'aucun caractère ne doit être envoyé avant l'appel de la fonction header, pas même un espace! En d'autre termes, la fonction header() doit impérativement être utilisée avant tout code HTML. Pour plus d'informations, lire cet article : http://www.commentcamarche.net/faq/1916-php-headersalready-sent-by Pour rediriger le visiteur vers une autre page (particulièrement utile dans une boucle conditionnelle), il suffit d'utiliser le code suivant : header('location: autrepage.php'); Où autrepage.php représente l'adresse de la page vers laquelle vous voulez rediriger. Cette adresse peut être absolue et peut également posséder des paramètres de la forme : header('location: autrepage.php?param1=val1&param2=val2'); LES SESSIONS Les sessions constituent un moyen de conserver des variables sur toutes les pages de votre site. Jusqu'ici, nous étions parvenus à passer des variables de page en page via les méthodes : GET (en modifiant l'url : page.php?variable=valeur) POST (à l'aide d'un formulaire). Mais imaginez maintenant que vous souhaitez transmettre des variables sur toutes les pages de votre site pendant la durée de la présence d'un visiteur. Ce ne serait pas facile avec GET et POST car ils sont plutôt faits pour transmettre les informations une seule fois, d'une page à une autre. On sait ainsi envoyer d'une page à une autre le nom et le prénom du visiteur, mais dès qu'on charge une autre page ces informations sont «oubliées». C'est pour cela qu'on a inventé les sessions. Fonctionnement des sessions ( http://www.siteduzero.com/informatique/tutoriels/concevezvotre-site-web-avec-php-et-mysql/les-sessions) Comment sont gérées les sessions en PHP? Voici les trois étapes à connaître. 1. Un visiteur arrive sur votre site. On demande à créer une session pour lui. PHP génère alors un numéro unique. Ce numéro est souvent très gros et écrit en hexadécimal, par exemple : a02bbffc6198e6e0cc2715047bc3766f. 2. Une fois la session générée, on peut créer une infinité de variables de session pour nos besoins. Par exemple, on peut créer une variable $_SESSION['nom'] qui contient le nom du visiteur, $_SESSION['prenom'] qui contient le prénom, etc. Le serveur conserve ces variables même lorsque la page PHP a fini d'être générée. Cela veut dire que, quelle que soit la page de votre site, vous pourrez récupérer par exemple le nom et le prénom du visiteur via la superglobale $_SESSION!

3. Lorsque le visiteur se déconnecte de votre site, la session est fermée et PHP «oublie» alors toutes les variables de session que vous avez créées. Il est en fait difficile de savoir précisément quand un visiteur quitte votre site. En effet, lorsqu'il ferme son navigateur ou va sur un autre site, le vôtre n'en est pas informé. Soit le visiteur clique sur un lien «Déconnexion» (que vous aurez créé) avant de s'en aller, soit on attend quelques minutes d'inactivité pour le déconnecter automatiquement.la session conserve les informations pendant quelques minutes. Cette durée dépend de la configuration du serveur mais est généralement fixée à 24 minutes par défaut. Le serveur crée des fichiers stockés dans un repertoire particulier. Tout ceci peut vous sembler un peu compliqué, mais c'est en fait très simple à utiliser. Vous devez connaître quelques fonctions : session_start() : démarre le système de sessions. Si le visiteur vient d'arriver sur le site, alors un numéro de session est généré pour lui. Vous devez appeler cette fonction au tout début de chacune des pages où vous avez besoin des variables de session. $_SESSION['login'] = 'toto' ; // création d'une variable de session login session_destroy() : ferme la session du visiteur. Cette fonction est automatiquement appelée lorsque le visiteur ne charge plus de page de votre site pendant plusieurs minutes, mais vous pouvez aussi créer une page «Déconnexion» si le visiteur souhaite se déconnecter manuellement. On peut également s'en fermer la session détruire une variable de session avec la fonction unset unset ($_SESSION['login']); ATTENTION : il faut appeler session_start() sur chacune de vos pages AVANT d'écrire le moindre code HTML (avant même la balise <!DOCTYPE>). Si vous oubliez de lancer session_start(), vous ne pourrez pas accéder aux variables $_SESSION. Si une session est déjà lancée à partir d'une autre page, celle-ci est reconduite, sinon une session est créée. MISE EN OEUVRE DES SESSIONS ET REDIRECTIONS Les sessions et redirections sont particulièrement utilisées pour les accès sécurisés avec authentification. authentification.php <form action="login.php" method="post"> Votre login : <input type="text" name="login"><br /> Votre mot de passe : <input type="password" name="pwd"><br /> <input type="submit" value="connexion"> </form> Les données du formulaire sont envoyées à la page login.php, ils seront récupérés via la méthode POST : $_POST['login'] $_POST['pwd']

login.php require_once('fonctionspdo.php'); // on teste si nos variables sont définies et remplies if (isset($_post['login']) && isset($_post['pwd']) &&!empty($_post['login'])&&! empty($_post['login'])) { // on appele la fonction getauthentification en lui passant en paramètre le login et password //la fonction retourne les caractéristiques du salaries si il est connu sinon elle retourne false $result = getauthentification($_post['login'],$_post['pwd']); // si le résulat est VRAI if($result){ // on la démarre la session // on enregistre les paramètres de notre visiteur comme variables de session $_SESSION['nom'] = $result['nom']; $_SESSION['identifiant'] = $result['idsalaries']; $_SESSION['role'] = $result['role']; // on redirige notre visiteur vers une page de notre section membre header ('location: listesalariespdo.php'); //si le résultat est false on redirige vers la page d'authentification else{ header ('location: authentification.php?erreur'); //si nos variables ne sont pas renseignées on redirige vers la page d'authentification else { header ('location: authentification.php?erreur'); function getauthentification($login,$pass){ global $pdo; $query = "SELECT * FROM salaries where login=:login and password=:pass"; $prep = $pdo->prepare($query); $prep->bindvalue(':login', $login); $prep->bindvalue(':pass', $pass); $prep->execute(); if($prep->rowcount() == 1){ $result = $prep->fetch(pdo::fetch_assoc); return $result; else return false; listesalariespdo.php require_once('fonctionspdo.php'); // On teste pour voir si nos variables de session ont bien été enregistrées if (isset($_session['nom']) && isset($_session['role'])) { echo "<p style=text-align:right;>bienvenue : ".$_SESSION['nom']."(".$_SESSION['role'].")"; echo '<br><a href="./logout.php">deconnexion</a></p>'; else header ('location: authentification.php');

Dans le script listesalariespdo.php, on teste si les variables de session ont bien été enregistrées. Si c'est le cas on affiche les variables de session nom et rôle, ainsi qu'un lien vers une page de déconnexion : logout.php. Dans le cas contraire on redirige le visiteur vers la page d'authentification. logout.php // On récupère la session // On détruit les variables de notre session session_unset (); // On détruit notre session session_destroy (); // On redirige le visiteur vers la page d'accueil header ('location: authentification.php'); Pour le moment, toute personne identifiée a les mêmes droits, nous allons limiter les droits des utilisateurs, seul l'administrateur aura accès au menu «update» et «delete» On devra modifier le script listesalariespdo.php : if($_session['role']=='admin'): <th>delete</th> <th>update</th> endif; foreach ($listesalaries as $cle=>$valeur): <tr> foreach ($valeur as $val): <td><?= htmlentities($val) </td> endforeach; if($_session['role']=='admin'): <td><a href=listesalariespdo?delete=<?= htmlentities($valeur['idsalaries']) onclick="return(confirm('etes-vous sûr de vouloir supprimer <?= $valeur['nom']?'));">delete</a></td> <td><a href=formpdo.php?id=<?= $valeur['idsalaries'] >update</a></td> endif; </tr> endforeach; TRAVAIL À FAIRE : 1 Télécharger le nouveau script SQL : salaries2.sql 2 Télécharger l'archive session.tar.gz 3 Modifier vos pages PHP pour respecter les cas d'utilisation suivants