1 Introduction. 2 Connexion à un compte. 2.1 L identifiant. La saisie et l'affichage

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

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

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

Stockage du fichier dans une table mysql:

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

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)

PHP. PHP et bases de données

Ces Lettres d informations sont envoyées aux extranautes inscrits et abonnés sur le site assistance (voir point N 3).

CREATION WEB DYNAMIQUE

RÉALISATION D UN SITE DE RENCONTRE

PHP 4 PARTIE : BASE DE DONNEES

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

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

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

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

Attaques applicatives

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

LA PLATE-FORME D'ALTERN C

PDO : PHP Data Object 1/13

Olivier Mondet

SYSTÈMES D INFORMATIONS

Encryptions, compression et partitionnement des données

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

Outils Logiciels Libres

Mysql avec EasyPhp. 1 er mars 2006

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

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

Guide d implémentation. Réussir l intégration de Systempay

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Cher utilisateur, Nous vous souhaitons une excellente utilisation d INES.FreeEdition. L équipe INES info@ines.eu

Compte rendu d activité

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

Les Utilisateurs dans SharePoint

Guide d utilisation de «Partages Privés»

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

Authentification et contrôle d'accès dans les applications web

REFONTE, DEVELOPPEMENT ET HEBERGEMENT DU SITE WEB

Programmation Web. Madalina Croitoru IUT Montpellier

GUIDE D UTILISATION DES SERVICES PACKAGES

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

OUTIL DE TRAVAIL COLLABORATIF

Formation : WEbMaster

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

Keyyo Guide de mise en service CTI / API / TAPI Keyyo

Les BASES de DONNEES dans WampServer

Devenez un véritable développeur web en 3 mois!

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

SQL Server et Active Directory

PHP 5.4 Développez un site web dynamique et interactif

Construire une application marketing Facebook sur la plateforme Windows Azure

Sécurisation d une application ASP.NET

Allegro INVOICE subito. Prise en main rapide

En date du 11 décembre 2008

WWSympa, une interface web pour Sympa

OpenPaaS Le réseau social d'entreprise

Notice d utilisation du Kiosque Famille

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

SITE I NTERNET. Conception d un site Web

SUPPORT DE COURS / PHP PARTIE 3

Module http MMS AllMySMS.com Manuel d intégration

Reporting Services - Administration

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1 Position du problème

Documentation Liste des changements apportés

Solution de gestion de newsletter 12all Version 1.0 p.montier

ISPConfig Documentation

Pratique et administration des systèmes

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

INSTALLATION D UN PORTAIL CAPTIF PERSONNALISE PFSENSE

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Accès aux bases de données

Attaques de type. Brandon Petty

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

Formation. Module WEB 4.1. Support de cours

Business Intelligence simple et efficace

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

TP Service HTTP Serveur Apache Linux Debian

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Manuel d utilisateur 1

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Manuel Viadeis CRM Connecteur intégration L100 étendue.

Installation de Joomla avec Filezilla

Manuel d utilisation du Guichet électronique V2

Compagnie des Transports Strasbourgeois. 1. La vente en ligne : comment ça marche? Avant de recharger ma carte BADGEO... 2

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Paginer les données côté serveur, mettre en cache côté client

ADF 2009 Sécurisation d applications PHP/MySQL

Ce guide détaille pas à pas les étapes d installation et de configuration de la solution jusqu'à la sauvegarde des BDD.

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Sécurité des applications web. Daniel Boteanu

UE 8 Systèmes d information de gestion Le programme

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

TP JAVASCRIPT OMI4 TP5 SRC

Transcription:

La saisie et l'affichage 1 Introduction Dans ce chapitre nous allons aborder plus précisément le développement de notre application. Les fonctions et concepts de base détaillés dans le chapitre précédent seront exploités dans les pages suivantes pour aboutir à la réalisation de notre interface avec ses différentes fonctionnalités : - les accès sécurisés pour définir les droits des utilisateurs, - la gestion du carnet d adresses, - les paramétrages du carnet d adresses, - la gestion des mots de passe, - la gestion des administrateurs. 2 Connexion à un compte 2.1 L identifiant Comme nous l avons vu dans le chapitre La préparation du développement, nous pouvons accéder à certaines parties du site par l intermédiaire d une interface. L'identifiant permet d'avoir un filtrage simple mais utile pour accéder à certaines pages du site internet. Nous allons réutiliser ce principe pour permettre à un utilisateur d accéder à la partie administration du site (admin) tout en gardant la possibilité pour ce même utilisateur de bénéficier comme tous les autres utilisateurs de la gestion de son propre carnet d adresses. Editions ENI - Toute reproduction interdite 167

PHP et MySQL - MySQLi - PDO - Construisez votre application Dans l exemple, nous allons accéder à notre espace privé à partir d un formulaire, comme ci-après : Nous proposons dans ce formulaire deux champs à remplir : un champ Login (identifiant) et un champ Mot de passe. Ces deux champs sont obligatoires et permettront au visiteur d accéder à son compte (si les champs ont été remplis correctement). 168 Editions ENI - Toute reproduction interdite

Si les valeurs ne sont pas bonnes, nous afficherons un message signalant le problème qui se présentera comme ceci : Fichier indentification.php if(isset($_get['erreur']) && ($_GET['erreur'] == "login")) echo "login ou mot de passe incorrect"; if(isset($_get['erreur']) && ($_GET['erreur'] == "intru")) echo "Echec d identification!!!"; if(isset($_get['erreur']) && ($_GET['erreur'] == "session")) echo "Session expirée"; La saisie et l'affichage Un peu plus loin dans ce chapitre, section Connexion à un compte - L'e-mail, le mot de passe, nous ajouterons un lien pour le cas où le visiteur aurait oublié ses identifiants afin qu il puisse les récupérer (nous lui ferons parvenir ces éléments sur son adresse mail pour être sûrs qu il s agit de la bonne personne qui demande ces identifiants). 2.2 La connexion Avant d utiliser notre application, rappelons certains points concernant le contrôle des champs : Login : l identifiant saisi va être gardé en l état, sans aucune conversion à part la conversion des caractères au format HTML. Nous réaliserons cette manipulation avec la fonction HTML- ENTITIES() que nous avons étudiée précédemment. Mot de passe : le mot de passe va être protégé par la fonction md5. Ainsi nous allons envoyer une valeur cryptée ce qui permettra d assurer la confidentialité auprès des personnes qui possèdent un compte. La fonction md5 est une chaîne de caractères (string) qui utilise un algorithme et retourne un résultat sur 32 caractères hexadécimaux. Editions ENI - Toute reproduction interdite 169

PHP et MySQL - MySQLi - PDO - Construisez votre application En voici un petit exemple. md5 motdepasse/md5.php $exemple="editions ENI2007"; echo md5($exemple)."<br />"; Calcule le MD5 d une chaîne. Voici le résultat que nous obtenons : Lorsque le visiteur va se connecter, nous devons effectuer un certain nombre de vérifications avant de pouvoir lui donner accès à son compte. Nous allons d abord vérifier s il possède un compte, avec tous les contrôles des caractères spéciaux comme ci-après. Nous allons avoir besoin du fichier fct.inc.php qui contient une fonction qui va nous permettre de générer une clef de repérage. login.inc.php include "include/fct.inc.php"; Nous testons si le champ n est pas vide et contient bien une valeur avant de continuer. Si ce n est pas le cas, nous revenons à l écran précédent et nous affichons un message d erreur. 170 Editions ENI - Toute reproduction interdite

La saisie et l'affichage Nous utilisons la fonction mysql_real_escape_string : mysql_real_escape_string Protège les caractères spéciaux d une chaîne pour l utiliser dans une requête SQL. if (isset($_post['login']) &&!empty($_post['login']) ) $login=htmlentities($_post['login'], ENT_QUOTES,'UTF-8'); $login=mysql_real_escape_string($login); $password=htmlentities($_post['password'], ENT_QUOTES,'UTF-8'); $password=md5($password); $password=mysql_real_escape_string($password); else header("location: identification.php?erreur=login") ; Maintenant, nous allons vérifier si les caractères saisis sont bien présents dans la base de données. Nous devons avant tout convertir le login pour être sûr qu il est composé de caractères HTML pour éviter toutes les attaques possibles. Nous allons aussi chiffrer le champ mot de passe car les mots de passe de la base de données sont cryptés pour éviter que les comptes soient utilisés par des personnes auxquelles ils n'appartiennent pas. $sql="select * FROM user WHERE login='$login' AND password='$password' "; $req=mysql_query($sql); if(! $req ) echo ('Requête invalide :'. mysql_error()); if (mysql_num_rows($req)==0) header("location:identification.php?erreur=login"); Si nous ne trouvons pas le compte, nous revenons sur le formulaire d'authentification en signalant le problème. Si nous avons trouvé le compte dans la base de données, nous modifions la clef de repérage qui nous permet d être certains d identifier la bonne personne lors des différentes manipulations et navigations dans le site Internet. Nous enregistrerons en même temps la date de passage qui peut nous être utile pour plus tard. Editions ENI - Toute reproduction interdite 171

PHP et MySQL - MySQLi - PDO - Construisez votre application $idclef=recup_clef(); $date=date("y-m-d"); $sql="update user SET idclef='$idclef',date_lastpass='$date' WHERE login='$login' AND password='$password' "; $query = mysql_query($sql) OR die("mise à jour de la clé impossible : <br />". mysql_error()); La clef est déterminée par un appel à la fonction recup_clef() que nous avons vue dans la partie précédente. Cette clef change tout le temps permettant ainsi de ne pas avoir de doublon dans notre site Internet. Après avoir effectué les vérifications d usage, nous chargeons quelques informations que nous plaçons dans une variable SESSION. $sql="select * FROM user WHERE login='$login' AND password='$password' AND idclef='$idclef' "; $req=mysql_query($sql); if(! $req ) echo ('Requête invalide :'. mysql_error()); $row = mysql_fetch_object($req); if (mysql_num_rows($req)!=0) session_start(); $_SESSION['login'] = $row->login; $_SESSION['idclef'] = $row->idclef; $_SESSION['niveau'] = $row->niveau; $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; $_SESSION['iduser'] = $row->id; $destination=$row->page; header("location:$destination"); else header("location:identification.php?erreur=intru"); Si la personne est correctement identifiée, nous allons lui permettre de continuer en accédant à la partie complète du menu. 172 Editions ENI - Toute reproduction interdite