Afin de bien comprendre le tutorial, assurez vous de maîtriser les points suivants :



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

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

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Comment faire pour créer ses propres pages html?

Stockage du fichier dans une table mysql:

CREATION WEB DYNAMIQUE

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

Attaques applicatives

1. Installation du Module

1. Introduction Sauvegardes Hyper-V avec BackupAssist Avantages Fonctionnalités Technologie granulaire...

Sage CRM. Sage CRM 7.3 Guide du portable

WordPress :: Migrer son site du local vers le serveur en ligne

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)

Tutorial sur SQL Server 2000

PHP 4 PARTIE : BASE DE DONNEES

LA PLATE-FORME D'ALTERN C

I. MySQL : Serveur et SGBD

SERVEUR DE MESSAGERIE

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

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

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Le stockage local de données en HTML5

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. - media-2001.communication &.

inviu routes Installation et création d'un ENAiKOON ID

Installation / configuration des applications PreInscription et Inscription Web Ajax

Base de Connaissances

Introduction à JDBC. Accès aux bases de données en Java

Auguria_PCM Product & Combination Manager

Cyberclasse L'interface web pas à pas

Fichiers, dossiers, enregistrer et arborescence

Thème : Création, Hébergement et référencement d un site Web

Guide Reseller Onbile

Installation de Concrete 5

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

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

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

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

Les BASES de DONNEES dans WampServer

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

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

ISPConfig Documentation

TeamViewer 9 Manuel Management Console

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

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

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

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

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

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Samsung Drive Manager FAQ

Vous venez de procéder à la mise à jour? Découvrez les nouveautés de Microsoft Dynamics CRM 2013 et Microsoft Dynamics CRM Online, automne 2013

Avec le pare-feu Windows Vista, vous protégez votre ordinateur contre les attaques provenant d'internet.

SERVEUR DE MESSAGERIE

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Guide d installation de Gael

Clauses d'hébergement web

Gestion d Active Directory à distance : MMC & Délégation

Vulnérabilités et sécurisation des applications Web

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Formation en Logiciels Libres. Fiche d inscription

Réaliser un ing avec Global Système

Création et Gestion des tables

SYSTÈMES D INFORMATIONS

FileMaker 13. Guide ODBC et JDBC

Avec PICASA. Partager ses photos. Avant de commencer. Picasa sur son ordinateur. Premier démarrage

Cours: Administration d'une Base de Données

Compte-rendu de projet de Système de gestion de base de données

Accès aux bases de données

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Programmation Web. Madalina Croitoru IUT Montpellier

Département Génie Informatique

Manuel du composant CKForms Version 1.3.2

Groupe Eyrolles, 2003, ISBN : X

Service d'authentification LDAP et SSO avec CAS

Olivier Mondet

Documentation de produit SAP Cloud for Customer (novembre 2013) Nouveautés de SAP Cloud for Customer pour les administrateurs

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

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

Galaxy est une plateforme de traitements (bio)informatiques accessible depuis l'url : (en précisant votre login et mot de passe LDAP «genotoul»).

Manuel de SQUIRRELMAIL à l'usage des étudiants.

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

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Test de HSQLDB et Comparatif avec Sqlite

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

2 Formation utilisateur

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

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

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Modules Prestashop - ExportCatalogue / EXPORT IMPORT POUR MODIFICATIONS EN MASSE DANS PRESTASHOP VERSION Optim'Informatique

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

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

Présentation Générale

Transcription:

Statistique Tuto écrit par LionZion et revu par Molokai et Raf en août 2004 Pré requis Introduction Afin de bien comprendre le tutorial, assurez vous de maîtriser les points suivants : Utilisation des sessions Connexion et requête vers Mysql Commandes SQL INSERT et UPDATE La concaténation Nous avons vu dans le tutorial sur l'espace membres que les sessions peuvent servir à protéger une partie d'un site. Nous allons dans ce tutorial voir une autre utilisation des sessions, et ce pour faire des statistiques. Cela permettra entre autre de connaître quelle page a vu le visiteur, combien de temps il est resté sur chaque page, savoir sur quel site il a cliqué pour venir sur le vôtre, etc... Ce tutorial se compose de deux parties: Création de la table Récupérer les informations sur le visiteur et les sauvegarder dans une table (cette partie ci) Exploitation de ces données pour faire des statistiques (la seconde partie) Les informations sur le visiteur vont être stockées dans une table. Celle ci contiendra les champs suivants : id sessid: contient le n de session unique généré par php referer: il s'agit de l'url du site sur lequel le visiteur a cliqué pour venir sur votre site parcours: contient les url des page demandées. Les url seront séparées par des point virgules. time: contient les heures de chargement de chaque page (elles aussi séparées par des point virgules) La requête sql pour créer la table Récupération des informations Nous avons donc trois informations à récupérer : le referer, l'url demandée et l'heure précise à laquelle la page a été chargée. Pour les deux premières informations, ce sont les variables d'environnement qui vont nous servir. Il s'agit d'informations envoyées par le navigateur lorsque vous vous rendez sur un site. PHP nous met entre autre à disposition : $_SERVER['HTTP_REFERER'] et $_SERVER['REQUEST_URI']. Ces variables sont accessibles à n'importe quel moment dans votre script php. Vous l'avez compris, la première contient l'url du referer et la seconde, par deduction, l'url demandée. Pour l'heure à laquelle la page a été demandée, nous allons la récuperer à l'aide de la fonction time(). Cette fonction renvoie le nombre de secondes écoulées depuis le 1 janvier 1970. Vous ne voyez peut être pas l'utilité d'un tel format, mais ce'est le plus simple à utiliser. Il nous permet à la fois de connaître le jour de la visite, ainsi qu'entre chaque page, en faisant une simple différence, de connaître en secondes combien de temps le visiteur est resté sur une page. 03/29/07 1/5

Elaboration du script En fait, parmi les trois informations à stocker, le referer n'a besoin d'être enregistré qu'une seule fois car il ne varie pas si le visiteur change de page. Pour le parcours et le temps, à chaque changement de page il va falloir compléter ces deux variables et les réenregistrer dans la base. Prenons par exemple un visiteur qui était sur google et qui a cherché le mot php. Dans la page des résultats, google a trouvé le site phpdebutant.org. Un lien vers phpdebutant figure donc sur cette page. Curieux, le visiteur clique sur ce lien en se disant "enfin je vais pouvoir apprendre php" : ). Il arrive donc sur phpdebutant.org. Et c'est là que notre script entre en scène. Il va falloir récupérer les informations souhaitées. On aura donc besoin des variables $_SERVER['HTTP_REFERER'] et $_SERVER['REQUEST_URI'], ainsi que de la fonction time(). Ensuite on stocke ces informations à l'aide d'une requête sql du type "INSERT INTO...". Il nous faut donc le code suivant quand le visiteur arrive sur le site : $sql = "INSERT INTO statistique (referer,time,parcours) "; $sql.= "VALUES ('".$_SERVER['HTTP_REFERER']."',".time().",'".$_SERVER['REQUEST_URI']."')"; Dans notre exemple, on aurait donc un premier enregistrement qui aurait cette allure là : id sessid referer time parcours 1 e9679b... http://www.google.fr/search?q=php 1002644882 http://www.phpdebutant.org Maintenant si le visiteur décide de commencer à lire les exercices, donc de changer de page, il va falloir transmettre de page en page la variable qui contient le temps, et la variable qui contient les pages demandées. Pour cela on va utiliser les sessions. Il va faloir modifier un peu notre code précédent afin de de transmettre ces deux informations. Les plus attentifs d'entre vous se seront sans doute rendus compte que l'on a pas encore utilisé le champs sessid de la table. Il va désormais nous servir à identifier la session car il va contenir le n de session unique généré par php. Pour connaître ce numero, il suffit d'utiliser la fonction session_id(). Voici donc le code quand un visiteur arrive. // on crée $parcours et $time $time = time(); $parcours = $_SERVER['REQUEST_URI']; // on ajoute le champs sessid à la requête qui a pour valeur // le n de ssion généré par php et renvoyé par session_id() $sql = "INSERT INTO statistique (referer,time,parcours,sessid) "; 03/29/07 2/5

$sql.= "VALUES ('".$_SERVER['HTTP_REFERER']."', '$time','$parcours','".session_id()."')"; // on ouvre une session // on enregistre les variables time et parcours comme variable de session $_SESSION['time']= "$time"; $_SESSION['parcours']= "$parcours"; Comme prévu le visiteur change de page et se rend sur la page de l'exo 1 de phpdebutant. Grâce aux sessions, on va pouvoir récupérer les variables $time et $parcours. Il va désormais falloir ajouter respectivement à ces deux variables ce que renvoie la fonction time(), et la variable $_SERVER['REQUEST_URI']. Une fois ces deux variables modifiées, il faut les modifier l'enregistrement de la table correspondant à la session pour tenir compte de ce changement de variable. La seule chose que l'on connaisse de cet enregistrement est le champ sessid qui contient le n de session. La requête sql aura donc cette allure là : "UPDATE... WHERE sessid='".session_id()."'" Code pour un visiteur déjà présent sur le site (stat.php) // on ouvre la session // on ajoute la nouvelle page vue, séparée par un point virgule, à la variable de session $_SESSION['parcours'].= ';'.$_SERVER['REQUEST_URI']; // on ajoute à la variable de session l'heure à laquelle la page a été vue $_SESSION['time'].= ';'.time(); // on met la table à jour $sql = "UPDATE statistique SET parcours='$parcours',time='$time'"; $sql.= "WHERE sessid='".session_id()."'"; Dans notre exemple, le premier enregistrement aura désormais cette allure là : 03/29/07 3/5

id sessid referer time parcours 1 e9679b... http://www.google.fr/search?q=php 1002644882;1002645306 http://www.phpdebutant.org; http://www.phpdebutant.org/?page=exo_001 On a donc désormais un morceau de code a éxécuter si c'est la première fois que le visiteur arrive sur le site, et un autre morceau de code si le visiteur a déjà vu le site. Vous allez me demander comment savoir si le visiteur arrive pour la première fois sur le site? Très simplement, si c'est le cas, alors le visiteur n'aura pas de session d'ouverte. Les variables time et parcours ne seront donc pas enregistrée comme variable de session. C'est donc la fonction isset qui renvoie false si la variable n'a pas été enregistrée qui va nous servir. Ce qui nous donne le script suivant pour joindre nos deux morceaux de code précédents : // on ouvre la session if(!isset($_session['parcours'])) { // il s'agit d'un nouveau visiteur, on crée $_SESSION['parcours'] et $_SESSION['time'] $_SESSION['time'] = time(); $_SESSION['parcours']= $_SERVER['REQUEST_URI']; // on crée un enregistrement dans la table $sql = "INSERT INTO statistique (referer,time,parcours,sessid)"; $sql.= "VALUES ('".$_SERVER['HTTP_REFERER']."','$time','$parcours','".session_id()."')"; } else { //Sinon c'est un visiteur déjà présent, on ajoute la nouvelle page vue, séparée par un point virgule, à la variable de session $_SESSION['parcours'].= ';'.$_SERVER['REQUEST_URI']; // on ajoute à la variable de session l'heure à laquelle la page a été vue $_SESSION['time'].= ';'.time(); // on met la table à jour $sql = "UPDATE statistique SET parcours='$parcours',time='$time'"; $sql.= "WHERE sessid='".session_id()."'"; } //Enfin on exécute la requête dans tous les cas 03/29/07 4/5

Mise en place du script Conclusion Nous voilà donc avec un script qui nous permet de sauvegarder quelques informations sur le visiteur. Pour le mettre en place sur votre site, c'est très simple. Il suffit juste de l'inclure en haut de toutes vos pages comme ceci: include('stat.php'); Ce code doit être impérativement placé tout en haut de chaque page. Il ne faut en effet aucun affichage de html avant l'appel à la fonction session_start() sous peine de provoquer une erreur. Faites bien attention aussi à supprimer les session_start() qui auraient déjà été mis sur vos pages. Pensez bien enfin que les sessions ont été introduites avec PHP4, donc vous devez disposer de PHP4 pour pouvoir exécuter ce script On dispose désormais d'une table qui va contenir des données brutes. Il va donc falloir créer un script qui analyse ces données pour les présenter de manière compréhensible (tableau voire graphique...). C'est le but de la seconde partie (à venir) de ce tutorial. Entraînez vous car le code risque de se compliquer un peu plus : ) www.phpdebutant.org 2007 L'équipe de phpdebutant 03/29/07 5/5