A.S: 2006 – 2007 Présenté par : Khalifa Anis

Slides:



Advertisements
Présentations similaires
Module 5 : Implémentation de l'impression
Advertisements

Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
CRÉER UNE APPLICATION INTERNET RELIEE A UNE BASE DE DONNEES
GESTION D’IMPRISSION SOUS WINDOWS & LINUX
Conception de Site Webs dynamiques Cours 6
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 8 Patrick Reuter.
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
Création de Pages Web Dynamiques
A.S: 2006 – 2007 Présenté par : Khalifa Anis
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Module 6 : Gestion et analyse du système DNS
TP n°1 PHP LES BASES Premier programme Affichage
HTML Les types de balises
Design Pattern MVC En PHP5.
TP 3-4 BD21.
Formulaire HTML Introduction. Définition de formulaire.
Créer un document LES FONCTIONS ENREGISTRER LES FORMATS Retour au menu principal.
La balise <FORM>:
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
CPI/BTS 2 Programmation Web Introduction au PHP
SECURITE DU SYSTEME D’INFORMATION (SSI)
LES LANGAGES DE PROGRAMMATIONS JAVASCRIPTH.T.M.LP.H.PS.Q.L Reynald Maréchal DI045.
Module 1 : Préparation de l'administration d'un serveur
Lycée Louis Vincent Séance 1
Les instructions PHP pour l'accès à une base de données MySql
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Programmation multimédia 3
Gestion des bases de données
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Module 4 : Création et gestion de comptes d'utilisateur
Création et gestion de comptes d'utilisateur
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
FICHIERS : Définition : Algorithme général:
Manipulation de formulaires en Javascript
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Module 2 : Préparation de l'analyse des performances du serveur
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Initiation au web dynamique
Animateur : Med HAIJOUBI
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
PHP & My SQL.
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Département Technologie de l’Information et de la Communication
Création et présentation d’un tableau avec Word 2007
Internet WEB.
PHP 5° PARTIE : LES COOKIES
JavaScript.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Cours de programmation web
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
S'initier au HTML et aux feuilles de style CSS Cours 5.
Module : Pages Web Dynamiques (Production Électronique Avancée)
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Module : Langage XML (21h)
Initiation au web dynamique Licence Professionnelle.
Module 133 Développer des applications Web Introduction à PHP.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Principes et variables
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

A.S: 2006 – 2007 Présenté par : Khalifa Anis Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Janvier 2007 Crefoc de Sousse

Sommaire Introduction Comparatif PHP / JavaScript Domaines d’utilisation de PHP Installation d’ EasyPHP Découvrir PHP Les structures de données Les structures de contrôle Les fichiers et les répertoires Communication entre page Web et un script PHP PHP et MySQL Quelques fonctions PHP (voir Annexes)

Introduction À sa création, en 1994, PHP signifiait Personal Home Page. Maintenant il traduit une désignation plus générale : PHP Hypertext Preprocessor. Spécialement conçu pour e développement d'application Web. Il peut être intégré facilement au HTML. PHP est un langage de scripts et non un langage de programmation, car il est conçu pour faire quelque chose à la suite un événement ou lorsqu'un utilisateur soumet un formulaire à un serveur Web.

PHP, qui s'intègre dans vos pages HTML, permet entre autres de rendre automatiques des tâches répétitives, notamment grâce à la communication avec une base de données (utilisation la plus courante de PHP). Comment se déroule une requête HTTP : Que se passe-t-il lorsque vous tapez une adresse dans votre navigateur, où interviennent PHP et MySQL (la base de données), et les conséquences que cela implique ? Voici, en simplifiant, ce qu'il se passe lorsque vous consultez une page html dite statique :

Votre navigateur envoie l'adresse URL (Uniform Ressource Locator) que vous avez tapée Le serveur Web est un "ordinateur" présent sur l'Internet et qui héberge la page que vous demandez. Sur ce serveur on trouve Apache, logiciel apte à traiter les requêtes HTTP que vous envoyez lorsque vous demandez une page web. Apache va donc chercher le fichier demandé dans son arborescence et renvoie à votre navigateur la page HTML Votre navigateur interprète les différents langages se trouvant dans ce fichier (HTML, JavaScript, CSS, etc ...) et affiche la page.

Que se passe lorsque votre page HTML contient du code PHP ? Votre navigateur envoie l'adresse que vous avez tapée Le serveur Web cherche dans son arborescence si le fichier existe, et si celui-ci porte une extension reconnue comme une application PHP (.PHP, .PHP3, .PHP4 par exemple). Si c'est le cas, le serveur Web transmet ce fichier à PHP. PHP va analyser et exécuter le code PHP qui se trouve entre les balises <?PHP et ?>. Si ce code contient des requêtes vers une base de données MySQL, PHP envoie la requête SQL. La base de données renvoie les informations voulues au script qui peut les exploiter (pour les afficher par exemple).

PHP continue à analyser la page, puis retourne le fichier dépourvu du code PHP au serveur Web. Le serveur Web renvoie donc un fichier ne contenant plus de PHP, donc seulement du HTML au navigateur qui l'interprète et l'affiche. Vous remarquez donc que PHP s'exécute côté serveur. Il n'y a plus aucune trace du code PHP lorsque vous regardez le code source de la page dans votre navigateur PHP.

La base de données la plus couramment utilisée avec PHP est sans aucun doute MySQL. A quoi sert une base de données ? Lorsque vous allez produire des informations dans votre script PHP, vous devez les stocker quelque part. Si ce n'est pas le cas, elles seront alors perdues lorsque le serveur renverra la page html au client (votre navigateur). Pour les stocker, il existe deux solutions: les enregistrer dans un fichier texte sur le serveur (quelque part dans l'arborescence de votre hébergement), ou les enregistrer dans une base de données. La sauvegarde dans un fichier texte n'est pas l'idéal, notamment lorsque vous souhaitez chercher, modifier ou supprimer une partie de l'information que vous stockez. Les bases de données ont été conçues dans cette optique là.

Les Bases de données suivantes sont toutes supportées par PHP : Adabas D dBase Empress File Pro (lecture seule) Hyperwave IBM DB2 Informix Ingres InterBase FrontBase mSQL Direct MS-SQL MySQL ODBC Oracle Ovrimos PostgreSQL Solid Sybase Velocis UNIX dbm Sommaire

Comparatif PHP / JavaScript S'exécute sur un serveur Web S'exécute chez un client Il n'existe aucune norme du langage Le langage fait l'objet de la norme ECMA Peut aborder le trait. de fichiers ou BD sur le serveur où tourne le script ou sur d'autres sites web Adapté pour réagir en temps réel aux manip. d'utilisateurs et aux évènements de la souris ou du clavier Permet de générer ou de manipuler des images Gère efficacement une structure de cadres Autorise l'accès aux variables d'environnement du serveur Permet l'exploitation de pages écrites en DHTML Facilite la création de pages Web dynamiques Permet de créer des pages dynamiques, mais très lourdes Peut gérer des sessions complètes impliquant une transmission de données entre des pages Web chargées successivement Pas proposé par tous les fournisseurs et autres hébergeurs, ou se limitent au PHP3 Disponible sur tous les nouveaux navigateurs avec assez peu de variantes Sa portabilité est réduite du fait des extensions optionnelles Sa portabilité est satisfaisante Renferme plus de 2 000 fonctions Ne comporte qu'environ 200 fonctions Sommaire

Domaines d’utilisation de PHP PHP est un langage de script coté serveur. Pour l’exploiter nous aurons besoin de : Un analyseur PHP (CGI ou module serveur) Un serveur Web Un navigateur Web C’est un langage de programmation en ligne de commande. Nous pouvons écrire des scripts PHP et les exécuter en ligne de commande, sans l’aide du serveur Web et du navigateur, il suffit de disposer de l’exécutable PHP ; Écrire des applications graphiques ;

Caractéristiques PHP est utilisable sur la majorité des systèmes d’exploitation et est reconnu par la plupart des serveurs Web actuels ; Avec PHP, vous avez le choix d’utiliser la programmation procédurale ou objet ou un mélange de deux ; Avec PHP vous n’êtes pas limité à la production de code HTML. Il permet de générer aussi bien des images, des fichiers pdf, des animations FLASH, du texte, …les sauve dans un système de fichiers ou les envoi directement au navigateur Web ; Supporte un grand nombre de bases de données ; Supporte de nombreux protocoles ; Dispose de fonctionnalités pour le traitement de texte Intègre des outils Cybercash et CyberMut, Verisign Payflow Pro et CCVS pour le paiement en ligne Sommaire

Installation de EasyPHP Lancer l'exécution de easyphp1-8_setup.exe. Un dossier EasyPHP sera créé dans Program Files.

Au démarrage d'EasyPHP, une icône apparaît à côté de l'heure. Pour automatiser le lancement au démarrage de Windows, double-cliquez sur l'icône de la barre des taches (ou lancez d'abord EasyPHP) et activez l'option "Démarrer EasyPHP en même temps que Windows" puis appliquez avant de fermer la boîte : Configurer le navigateur afin de « ne pas utiliser le Proxy pour les adresses locales » Supprimer le fichier : ..\EasyPHP\www\index.php test.php

Pour vérifier le fonctionnement, relancez Windows. A l'aide d'un éditeur de texte (ConTEXT) tapez la ligne : <? php phpinfo(); ?> Enregistrez dans le dossier EasyPHP\www sous le nom test.php ; Lancez un navigateur ; Tapez l'adresse : http://localhost/test.php Accédez au dossier www et supprimez le fichier index.php. Ainsi, vous pourrez naviguer dans ce répertoire à partir d’un navigateur en tapant http://localhost/ ou http://127.0.0.1/ ou même http://nomposte/ Informations sur l'interpréteur PHP Sommaire

Découvrir PHP Exemples Règles de base Sommaire

Exemples Rien que du PHP : (afficher du texte) Saisir ce code PHP et l'enregistrer sous le nom BONJOUR.PHP dans EasyPHP\WWW Accéder à l'adresse http://localhost/bonjour.php <?php print ("Bonjour tout le monde !"); ?> bonjour.php

Utiliser les balises HTML pour formater un texte : (voir bonjour02 Utiliser les balises HTML pour formater un texte : (voir bonjour02.php et bonjour03.php) <?php print("<font face=arial size=4 color=#FF0000>Bonjour le monde !</font> "); ?> bonjour02.php Fonction print() ou <?php echo ' <font face="arial" size="4" color="red">Bonjour le monde !</font> '; ?> bonjour03.php Fonction echo

Afficher la date et l'heure : <?php $date = date('d-m-Y'); $heure = date('h:i:s a'); print("Nous sommes le $date et il est $heure"); ?> Nous sommes le 11-12-2004 et il est 01:39:40 pm date_heure.php a - "am" (matin) ou "pm" (après-midi) A - "AM" (matin) ou "PM" (après-midi) d - Jour du mois, sur deux chiffres (éventuellement avec un zéros) : "01" à "31" D - Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi) F - Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier) h - Heure, au format 12h, "01" à "12" H - heure, au format 24h, "00" à "23" g - Heure, au format 12h sans les zéros initiaux, "1" à "12" G - Heure, au format 24h sans les zéros initiaux, "0" à "23" i - Minutes; "00" à "59" j - Jour du mois sans les zéros initiaux: "1" à "31" l - ('L' minuscule) - Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi) L - Booléen pour savoir si l'année est bissextile ("1") ou pas ("0") m - - Mois; i.e. "01" à "12" n - Mois sans les zéros initiaux; i.e. "1" à "12" M - Mois, en trois lettres (et en anglais) : par exemple "Jan" (pour Janvier) s - Secondes; i.e. "00" à "59" S - Suffixe ordinal d'un nom

Un formulaire HTML qui appelle un script PHP : Créer la page Web bienvenue.htm suivante : <html> <head> <title>Bienvenue</title> </head> <body> <FORM ACTION="http://localhost/bienvenue.php", METHOD="POST">Quel est votre prénom ? <INPUT TYPE="text" NAME="prénom" VALUE=""> <INPUT TYPE="submit" VALUE="Cliquez ici"> </FORM> </body> </html> Lorsque l'utilisateur clique sur le bouton, il appelle le script bienvenue.php

Créer la page bienvenue.php dans le dossier WWW suivante : <?php print ("<h2>Bonjour, $prénom !</h2>"); ?> Variable qui correspond à l'attribut NAME PHP admet l'utilisation des caractères accentués dans le nom des variables. Les noms de variables doivent toujours commencer par un $ et sont sensibles à la casse.

Affichage de la source 1 2

On peut tout mettre dans un même fichier PHP (saluer.php)… <html> <head> <title>Bienvenue</title> </head> <body> <?php if ($prenom != "") { print ("<h2>Bonjour, $prenom !</h2>"); exit; } ?> <FORM ACTION="http://localhost/saluer.php", METHOD="POST"> Quel est votre prénom ? <INPUT TYPE="text" NAME="prenom" VALUE=""> <INPUT TYPE="submit" VALUE="Cliquez ici"> </FORM> </body> </html> Créer la page saluer.php suivante : Appel de l'interpréteur PHP pour exécuter le script

1 2

Appel d'un fichier php : include() Il est possible d'appeler, depuis un document HTML, un fichier PHP Créer un document HTML : appel_date_heure.php <html> <head> <title>Appel d'un fichier PHP</title> </head> <body> <H2> Afficher la date et l'heure à partir d'un document HTML </H2> <? include("date_heure.php") //on appelle le fichier ?> </body> </html> Afficher la date et l'heure à partir d'un document HTML Nous sommes le 11/12/2006 et il est 02:59:04 pm

Règles de base Écriture des instructions : Un script PHP est généralement placé à l'intérieur d'un document HTML, mais peut être complètement autonome et indépendant. Quelque soit le cas, ces instructions doivent être à l'intérieure d'une paire de balises selon 4 modèles : Le style XML : C'est le style par défaut, reconnu par tous les interpréteurs. <?PHP Instructions PHP ?>

Le style court : C'est le style est reconnu par défaut par EasyPHP et par la plupart des interpréteurs des fournisseurs d'accès. <? Instructions PHP ?> Le style ASP : Celui utilisé par le langage de script ASP. Pour être reconnu, le paramètre de configuration asp_tags doit avoir la valeur on. <% Instructions PHP %> Le style JavaScript : C'est le plus proche du HTML car il utilise la balise <SCRIPT>. <SCRIPT LANGUAGE="php"> Instructions PHP </SCRIPT>

Les instructions PHP doivent se terminer par un ; sauf après l'accolade fermante d'un bloc d'instructions. Un fichier contenant un code PHP doit avoir l'extension (.php) Toutefois, certains serveurs peuvent exiger (.php3) ou (.php4) Espaces blancs : " " (espace ordinaire) "\t" (tabulation) "\n" (alinéa) "\r" (retour chariot) "\0" ("null") "\x0B" (tabulation verticale)

Types de variables : PHP est un langage pauvrement typé. On ne déclare pas le type des variables ou des constantes. Une variable peut renfermer successivement n'importe quel type de contenu. Il est, toutefois, forcer une variable à avoir un type bien déterminé par transtypage (= casting). PHP manipule des données de 3 catégories : les nombres, les chaînes de caractères et les objets.

Visitez l'URL http://www.php.net/download-docs.php Fonctions : On compte plus de 2000 fonctions dans le langage PHP. Les noms des fonctions ne sont pas sensibles à la casse. Fichiers inclus : Comme avec JavaScript, il est possible de constituer une bibliothèque extérieure à partir de laquelle on peut charger les scripts nécessaires plutôt que de les écrire directement dans le document HTML. Il est aussi possible d'inclure des éléments extérieurs au langage. La documentation : Visitez l'URL http://www.php.net/download-docs.php

Les structures de données Les constantes Les constantes numériques Les constantes chaînes Les constantes booléennes Les constantes prédéfinies Les variables Les variables d'environnement Les variables variables Les types de données Les tableaux Les objets Les opérateurs Sommaire

Les constantes Les constantes numériques : PHP reconnaît plusieurs types de constantes. Les constantes sont par défaut sensibles à la casse. Les constantes numériques : Les constantes entières : Décimales, octales (le 1er chiffre doit être un zéro), ou hexadécimales (commençant par 0x) : -34, 0651, 0x4F Pour PHP elles sont de type integer.

Les constantes chaînes de caractères : Les constantes flottantes : Exclusivement exprimées en système décimal avec un point décimal : 14.2, 8.08E3 Pour PHP elles sont de type double. Les constantes chaînes de caractères : Peuvent comporter n'importe quel caractère. Elles doivent être encadrées de guillemets ou d'apostrophes : "c'est à dire" 'c\'est à dire' Si un nom de variable figure dans la chaîne entre guillemets, il sera interprété …

Deux lignes seront affichées : $tva = 19.6; echo "Le taux de TVA normale est égal à $tva %<p>"; echo 'Le taux de TVA normale est égal à \$tva %<p>'; Deux lignes seront affichées : Le taux de TVA normale est égale à 19.6 % Le taux de TVA normale est égale à $tva % L'opérateur de concaténation des chaînes est le "." : "Le chêne, un jour "."dit au roseau" est équivalent à : "Le chêne, un jour dit au roseau"

Les constantes booléennes : Ne prennent que TRUE ou FALSE. Les constantes prédéfinies : Vous pouvez donner un nom symbolique à n'importe quelle constante scalaire (boolean, integer,double ou string). On utilise la fonction define(nom, valeur [,casse]): Chaîne de caractères représentant le nom de la cst Valeur attribuée à cette cste Indicateur booléen indiquant si le nom donné à la variable sera sensible (FALSE) ou non (TRUE) à la casse

Circonférence du cercle de rayon, 20 est : 0 Exemples : Sensible à la casse 1 <?php define(PI, 3.1415926535); $r=20; $circ=2 * pi * $r; echo "Circonférence du cercle de rayon, $r est : $circ"; ?> const_predef01.php Circonférence du cercle de rayon, 20 est : 0 Pas sensible à la casse 2 <?php define(PI, 3.1415926535,TRUE); $r=20; $circ=2 * pi * $r; echo "Circonférence du cercle de rayon, $r est : $circ"; ?> const_predef.php Circonférence du cercle de rayon, 20 est : 125.66370614

On accède à la valeur d'une constante en spécifiant simplement son nom. On ne doit PAS préfixer le nom de la constante avec $. On peut utiliser la fonction constant(), pour lire dynamiquement la valeur d'une constante, dont on obtient le nom dynamiquement (retour de fonction, par exemple). Utilisez la fonction get_defined_constants() pour connaître la liste de toutes les constantes définies.

Quelques constantes système prédéfinies Nom Signification __FILE__ Nom du fichier actuellement exécuté __LINE__ N° de la ligne actuellement exécutée PHP_VERSION Version de PHP PHP_OS Nom du système d’exploitation utilisé E_ERROR Erreur autre qu’une erreur de décodage

Quelques constantes mathématiques prédéfinies Nom Signification M_E e (2.718281828459) M_LOG2E log_2(e)=1.442695040889 M_LOG10E log_10(e)=0.43429448190325 M_LN2 log_e(2)=LN(2) M_LN10 log_e(10)=LN(10) M_PI π M_PI_2 π /2 M_PI_4 π/4 M_LNPI log_e(π) Nom Signification M_1_PI 1/ π M_2_PI 2/ π M_SQRTPI sqrt(π) M_2_SQRTPI 2/sqrt(π) M_SQRT2 sqrt(2) M_SQRT3 sqrt(3) M_SQRT1_2 1/ sqrt(2) M_EULER Constante d’Euler

Les variables Ce sont des objets pouvant recevoir n'importe quelle valeur sans distinction du type. Le nom peut comporter un nombre qcq de lettres, de chiffres et blanc souligné (_) Une variable est toujours préfixée d'un $ isset() permet de savoir si une variable contient bien quelque chose.

Les variables d'environnement Les variables d'environnement sont désignées dans un script en majuscules. Ces données concernent l'environnement du script au niveau du serveur et du client. Les variables d'environnement sont stockées directement dans les variables associées à leur nom. Exemple : Obtenir le type du navigateur du visiteur var_envir.php <?php echo "Avec HTTP_USER_AGENT : $HTTP_USER_AGENT<br>"; echo "Avec getenv() : ".getenv("HTTP_USER_AGENT"); ?> Avec HTTP_USER_AGENT : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461) Avec getenv() : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)

<?php phpinfo(); ?> En voici quelques unes : Il est possible d'avoir la liste des variables environnement à l'aide de phpinfo(); voir fichier test.php <?php phpinfo(); ?> En voici quelques unes : Nom Description (exemple) DOCUMENT_ROOT Racine du serveur (/home/www/phpfrance) HTTP_ACCEPT_LANGUAGE Langage accepté par le navigateur client (fr,ie-ee;q=0.5) HTTP_HOST Nom de domaine du serveur (phpfrance.com) HTTP_USER_AGENT Navigateur (et système) et client (Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)) REMOTE_ADDR Adresse IP du client (212.78.54.36) REMOTE_PORT Port sur lequel la requête HTTP a été envoyée au serveur (1211) SERVER_ADDR Adresse IP du serveur (209.15.23.241) SERVER_ADMIN Adresse de l'administrateur du serveur (damien@phpfrance.com) SERVER_NAME Nom local du serveur (localhost) SERVER_SIGNATURE Type de serveur (Apache/1.3.12 Server at 127.0.0.1 Port 80) REQUEST_METHOD Méthode d'appel du script (GET) QUERY_STRING Liste des paramètres passés au script (id=14&page=3&action=voir) REQUEST_URI Chemin du script (/chemin/script.php?id=14&page=3&action=voir) PATH_INFO Chemin web du script (/chemin/script.php) PATH_TRANSLATED Chemin complet du script (/home/www/phpfrance/chemin/script.php)

Les variables variables PHP offre la possibilité de créer des variables elles-mêmes variables. var_var.php <?php $a="Chat"; $$a="Minet"; //Nous avons ainsi 2 variables $a et $Chat echo "Mon $a s'appelle $Chat <br>"; echo "Mon $a s'appelle ${$a} <br>"; echo "Mon $a s'appelle $$a <br>"; ?> Mon Chat s'appelle Minet Mon Chat s'appelle Minet Mon Chat s'appelle $Chat

Les types de données Les types de données standards : integer double string array object Deux types spéciaux : ressource null PHP3 n'est pas un langage fortement typé. C'est PHP3 qui décide à l'exécution, en fonction de son contenu, quel type est sera le plus indiqué pour la variable. Quand vous utilisez une variable, vous n'avez pas besoin de la déclarer au préalable.

Les casts autorisés sont les suivants : Il est possible de forcer le transtypage en "castant" les variables vers le type de votre choix. Les casts autorisés sont les suivants : (int), (integer) - cast en un integer (real), (double), (float) - cast en un double (string) - cast en une chaîne (array) - cast en un tableau (object) - cast en un objet De même, une variable peut changer de type en fonction de son contenu … $a = "0"; // $a est une chaîne(ASCII 48) $a++; // $a est la chaîne "1" (ASCII 49) $a += 1; // $a est maintenant un entier (2) $a = $a + 1.3; // $a est un réel (3.3)

Les tableaux : Un tableau PHP est une association ordonnée (map). Une association est un type qui fait correspondre des valeurs à des clés. Comme une valeur peut elle-même être un tableau, on peut facilement simuler un arbre. Les tableaux jouent un rôle important parce que de nombreuses fonctions, en particuliers celles de MySQL, renvient leurs résultats sous forme de tableaux. Syntaxe : $tableau = array(clé => valeur, clé => valeur,…) clé est soit un entier ou une chaîne.

Exemples : création 1 <?php creer_tab.php création 1 <?php $t=array(0=>"chien",1=>"orange",2=>"crysral"); $r=array("animal"=>"chien","fruit"=>"orange","mineral"=>"crystal"); echo 'premier élément de $t ',$t[0],'<br>'; //chien echo 'premier élément de $r ',$r["animal"]; //chien $arr = array("untableau"=>array(6=>5,13=>-3, "a"=>4,2=>"tt")); //tableau à 2 dimensions echo $arr["untableau"][2]; //tt ?>

$ar=array(5=>12,14=>3); manipulation <?php $ar=array(5=>12,14=>3); $ar[]=-6; //revient à assigner –6 à l'élément 15 $ar["e"]=23; //revient à assigner 23 à l'élément "e" unset($ar[5]); //efface l'élément 5 unset($ar); //efface tout le tableau ?> manip_tab.php On peut connaître la taille d'un tableau à l'aide de la fonction count() $x=array(3=>"r",6=>5); Count($x); //vaudra 2

Recopier un tableau <?php $tab=array("nom"=>"Belhassen","prenom"=>"ali", "profession"=>"enseignant"); $vect=$tab; //suffit à copier ce tableau ?>

Déplacement du pointeur Explorer un tableau Action Déplacement du pointeur reset() Recale le pointeur au début du tableau et renvoie le 1er élément du tableau end() Recale le pointeur à la fin du tableau et renvoie le dernier élément du tableau current() ou pos() Renvoie l'élément courant du tableau next() Fait avancer le pointeur courant de façon qu'il pointe l'élément suivant dont elle renvoie la valeur prev() Fait reculer le pointeur courant de façon qu'il pointe l'élément précédent dont elle renvoie la valeur key() Renvoie l'indic de l'élément courant du tableau each() Extrait l'élément courant et fait avancer le pointeur d'une unité list($indice,$valeur) Associée à each(), elle affecte indice et valeur de l'élément courant à 2 variables qcq foreach() Permet de traiter tout un tableau sans avoir recours au structures itératives. Elle renvoie l'indice et la valeur de l'éléments courant et avance d'un cran

Exemple : parcourir un tableau balayer_tab02.php <?php $vente_hebdo = array("lundi"=>1742,"mardi"=>1562,"mercredi"=>1920,"jeudi"=>1239,"vendredi"=>2012,"samedi"=>720) ; $vente_totale = 0; reset($vente_hebdo); while (list($key, $value) =each($vente_hebdo)) { echo "<BR> Vente de $key : $value unités\n"; $vente_totale += $value; } echo "<BR>Vente sur la semaine : $vente_totale unités\n"; ?>

Exemple : Afficher une adresse IP dans un ordre inverse ip_inverse.php <?php // recuperation de l'adresse ip $ip =getenv("REMOTE_ADDR"); echo $ip; // inversion $array = explode(".",$ip); //explose une chaîne selon le séparateur indiqué end($array); // on se place à la fin while (key($array)!=0) // tant qu'on est pas arrivé au début { $iip = $iip.pos($array)."."; // mise à jour de la variable prev($array); // on revient en arrière d'un élément } $iip = $iip.pos($array); echo"<hr>$iip"; // premier élément ?>

Tableau à 2 dimensions : Exemple : déclaration ../.. deuxdim.php $livres = array ("informatique" => array("PHP", "Java", "Internet", "Architecture"), "dictionnaires" => array("Médical", "Automobiles"), "cuisine" => array("tunisienne", "française", "asiatique") ); ../..

../.. Manipulation echo "<b>Contenu du tableau \$livres :</b><br>"; while (list($k, $v) = each($livres)) { echo "<br>$k => "; while (list($kk, $vv) = each($v)) { echo "$vv "; } } echo "<br>"; reset($livres); for ($i=0; $i<count($livres); $i++) { list($k,$v) = each($livres); echo "<br>$k => "; for ($j=0; $j<count($v); $j++) { echo $livres[$k][$j]." "; } } ../..

../.. echo "<p>"; reset($livres); for ($i=0; $i<count($livres); $i++) { list($k,$v) = each($livres); echo "Le tableau \"$k\" a ".count($v)." éléments<br>"; } ?> Contenu du tableau $livres : informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique Le tableau "informatique" a 4 éléments Le tableau "dictionnaires" a 2 éléments Le tableau "cuisine" a 3 éléments

Opérateurs et expressions Affectations : = affectation += addition puis affectation -= soustraction puis affectation *= multiplication puis affectation /= division puis affectation %= modulo puis affectation $n = 1; $n += 2; // $n vaut 3 $n *= 6; // $n vaut 18 $r= $n % 5; // 18 modulo 5 => $r = 3 if ( ++$n == 20 ) echo "pas de chance !"; /* pre-increment le test renvoie vrai*/ $n=($a=8) - 2 //$n reçoit maintenant 6 et $a reçoit 8

Opérateurs arithmétiques : $a + $b $a - $b $a * $b $a / $b $a % $b ++ -- Addition Somme de $a et $b. Soustraction Reste de la différence de $b et $a. Multiplication Produit de $a par $b. Division Dividende de $a par $b. Modulo Reste de la division entière de $a par $b Incrément Décrément Opérateur sur les chaînes : (concaténation) $a = "Hello "; $b = $a . "World!"; // maintenant $b contient "Hello World!"

Opérateurs binaires : Il s'agit des opérateurs binaires dits "bit à bit", et non pas des opérateurs logiques booléens. $a & $b And Les bits qui sont à 1 dans $a ET dans $b sont mis à 1. $a | $b Or Les bits qui sont à 1 dans $a OU dans $b sont mis à 1. $a ^ $b Xor Les bits différents sont mis à 1 ~ $a Not Les bits sont inversés. $a << $b Décalage à gauche des bits de $a $b fois $a >> $b Décalage à droite des bits de $a $b fois $a = 5; // 0000 0101 $b = 12; // 0000 1100 $c = $a & $b; // $c vaut donc 0000 0100 soit 4 $d = $a | $b; // $d vaut donc 0000 1101 soit 13 $e = ~ $a; // $e contient le complément de 5, soit 1111 1010 // (avec devant autant de 1 que vous voulez) ce qui vaut -6

Opérateurs de comparaison : Opérateurs logiques : == égalité > inférieur strict < supérieur strict <= inférieur ou égal >= supérieur ou égal != différent <> différent && (and) et || (or) ou xor ou exclusif ! (not) négation Opérateur conditionnel : (? :) ($a = = $b) ? $c=5 : $c=10; // affecte 5 à $c si $a est égale à $b

Les structures de contrôles

Les conditions La structure if => if ($temps=="ensoléillé") { echo 'il fait beau'; } else { echo 'il ne fait pas beau'; } La structure if => Il est possible d'enchaîner plusieurs structures If sans avoir à les imbriquer, à l'aide de elseif if ($nombre > 1) {   echo "\$nombre est supérieur à 1"; } elseif ($nombre < 1) {  echo "\$nombre est inférieur à 1"; } else {  echo "\$nombre est égal à 1"; }

L'opérateur ternaire => echo ($nombre == 1) ? "\$nombre est égal à 1" : "\$nombre n'est pas égal à 1"; La condition doit obligatoirement se trouver entre parenthèses. Si la condition est vérifiée, la valeur de gauche est retournée, sinon, c'est celle de droite.

L'instruction switch => switch ($nombre) { case 1: echo "\$nombre est égal à 1"; break; case 2: echo "\$nombre est égal à 2"; case 3: echo "\$nombre est égal à 3"; default: echo "\$nombre est inférieur à 1 ou supérieur à 3"; break; }

Les boucles La structure for => La structure while=> Syntaxe : Exemple : for (compteur; condition; compteur) { liste d'instructions } for ( $i = 1; $i <= 10 ; $i++ ) { echo "$i "; } La structure while=> Syntaxe : Exemple : while (condition) { liste d'instructions } $i = 1; while ( $i <= 10 ) { echo "$i "; $i++; }

La structure do…while => Syntaxe : do { liste d'instructions } while ( condition); Exemple : PGCD pgcd.php <?php function pgcd($a, $b) { if ($a < $b) list ($a, $b) = array ($b, $a); //Permutation do { $r = $a % $b; if ($r == 0) return $b ; $a = $b; $b = $r; } while ($r > 0); } $n1 = 98; $n2 = 70; $pgcd = pgcd($n1, $n2); echo "Le PGCD de $n1 et $n2 est $pgcd<hr>"; ?>

Les fichiers et les répertoires Quelques fonctions de manipulation de fichiers L’ouverture et la fermeture d’un fichier La lecture d’un fichier Exemple : Compteur de visiteurs

Les fichiers et les répertoires Les fonctions de manipulation de fichiers (voir annexe) : Contrairement à JavaScript, PHP permet de créer, lire modifier et supprimer les fichiers mais aussi les répertoires. Création de fichier : La création se fait en ouvrant un fichier qui n’existe pas encore. Ouverture d’un fichier : Ce fait à l’aide de la fonction fopen(nom fichier, mode); mode est une chaîne de caractères spécifiant comment doit être ouvert le fichier.

Les fichiers et les répertoires Si l’opération spécifiée est réalisée avec succès, la fonction renvoie un handle (pointeur) vers le fichier. Sinon, elle renvoie FALSE. Le handle servira à désigner le fichier sur lequel on va opérer. <?PHP $fp=fopen("monfichier.txt","w"); ?> open_file.php Le fichier est prêt à recevoir un contenu par fputs() ou fwrite()

Les fichiers et les répertoires Fermeture d’un fichier : Lorsqu’un fichier est devenu inutile, il faut le refermer. fclose(handle); <?PHP $fp=fopen("monfichier.txt","w"); fclose($fp); ?> open_close_file.php Lecture d’un fichier : Il existe plusieurs façons de lire un fichier. fgets(handle,longueur); longueur = nombre de caractères à lire +1. L’exécution se termine qd : - les caractères ont été incorrectement lus - un caractère (new line) a été lu (fin de ligne) - fin de fichier

Ouvrez le fichier monfichier.txt avec le bloc-note Exemple : Ouvrez le fichier monfichier.txt avec le bloc-note Saisissez votre nom et prénom Enregistrez et quittez read_file_fgets.php <?php $fd = fopen ("monfichier.txt", "r"); while (!feof ($fd)) { $buffer = fgets($fd, 10); echo "$buffer <br>"; } fclose ($fd); ?> Kalifa Anis

Exemple : Compteur de visiteurs. Créez (dans le même dossier que la page d’accueil de votre site) un fichier texte contenant la valeur 0 Enregistrez le fichier sous le nom compteur.txt Intégrez le code suivant dans la page d’accueil index.php visites.php <?php $fp=fopen("compteur.txt","r+"); //On ouvre le fichier en mode lecture/écriture $nbvisites=fgets($fp,11); //On récupère le nombre dans le fichier $nbvisites++; //On incrémente le compteur fseek($fp,0); //On place le pointeur au début du fichier fputs($fp,$nbvisites); //On écrit le nouveau nombre ds le fichier fclose($fp); //On ferme le fichier echo "Vous êtes le visiteur n° : $nbvisites"; ?> Fichiers & répertoires

Communication entre pages web et scripts PHP Les formulaires

Les formulaires : Quand l’utilisateur clique sur le bouton de validation « submit », cette action appelle le script qui figure dans l’attribut ACTION de la balise <form>. Quelque soit la valeur de l’attribut METHOD (GET ou POST), les informations qu’il a fournit vont s’acheminer du navigateur vers le serveur, accompagnées du nom indiqué dans l’attribut NAME. Une fois arrivées à l’interpréteur PHP, il y a 2 manières de les reconnaître et de les interpréter : En prenant le nom de l’attribut NAME et le préfixant de $ En exploitant le contenu de l’une des deux variables d’environnement : HTTP_GET_VARS ou HTTP_POST_VARS Les éléments y sont transmis sous forme de tableaux associatifs

PHP et MySQL PHP offre une panoplie de fonctions pour exploiter les BD dont MySQL. Connexion Requête Administration Etc … Cependant, PHP doit être compilé avec les bons paramètres.

Architecture Apache-PHP-MySQL

Architecture réseau

PHP, séquence de requête Définition de la connexion Connexion Exécution de la requête Extraction des résultats de la requête Fin de la connexion, implicite ou spécifiée

Instructions PHP pour MySQL Définition de la connexion mysql_connect ("hostname", "username", "password") Sélection de la base de données mysql_select_db ("database_name") Exécution de la requête mysql_query (identifiant) Extraction des résultats mysql_fetch_array (identifiant) Fin de la connexion mysql_close ("hostname")

3. Sécurité

MySQL et la sécurité MySQL supporte une structure de sécurité au niveau des utilisateurs. Une table USER contient les infos concernant les utilisateurs : nom, mot de passe (qui peut-être chiffré), de quelle adresse IP celui-ci provient et les fonctions qu’il peut utiliser. Il existe également une table pour les hôtes, table HOST, qui indique quelle BD qu’un hôte peut exploiter. L’échange du mot de passe entre le client et le serveur lors de l’authentification est chiffré. Il peut nécessaire de filtrer les accès au port réservé à MySQL (port TCP 3306). La sécurité au niveau des applications (PHP).

4. Appropriation de la technologie

EasyPHP http://www.easyphp.org/ EasyPHP installe et configure automatiquement un environnement de travail complet permettant de mettre en oeuvre toute la puissance et la souplesse qu'offrent le langage dynamique PHP et son support efficace des bases de données. EasyPHP regroupe un serveur Apache, une base de donnée MySQL, le langage PHP ainsi que des outils facilitant le développement de vos sites ou de vos applications.

Package EASYPHP EasyPHP http://www.easyphp.org/ Permet d’installer le serveur web Apache, la base de données MySQL ainsi que la console de gestion PHPmyADMIN dans un environnement Win9x/NT/2000/Me/XP.

Administration des bases de données

Pages de gestion

Application: Création d’une base de données lycée On se propose de créer une base de données (lycee) formé de deux tables : eleves et classes pour enregistrer les élèves et les classes du lycée

Table eleves

Table classes

Saisie des données dans la base En utilisant PhpMyadmin saisir des enregistrements dans les deux tables eleves et classes

Affichage des données à partir de la base Index.php <HTML> <HEAD> <TITLE>PHP/MySQL Demo</TITLE> </HEAD> <BODY> <H1>PHP/MySQL Demo</H1> <? mysql_connect("localhost", "root", ""); mysql_select_db(« lycee"); ?> Connexion au serveur de base de données Sélection de la base

Suite... <table border="1"> <tr> <td>N°</td> <td>Nom et prénom</td> <td>Classe</td> <td>Edit</td> <td>Delete</td> </tr>

Suite... Requête SQL Exécution de la requête Extraction des résultats <? $query ="select * from eleves order by eleve;"; $result = mysql_query($query); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $i++; echo "<tr>"; echo "<Td>".$i."</Td>"; echo "<Td>".$row["eleve"]."</Td>"; echo "<Td>".$row["classe"]."</Td>"; echo "<td><a href=\"edit.php?id=".$row['id']."&classe=".$row["classe"]."&eleve=".$row["eleve"]."\">Edit</a></td>\n"; echo "<td><a href=\"delete.php?id=".$row['id']."\">Delete</a></td>\n"; echo "</tr>\n"; } ?> <form name="form1" method="post" action="inserte.php"> <input type="submit" name="Submit" value="Ajouter" > </form> </table> </BODY></HTML> Requête SQL Exécution de la requête Extraction des résultats lien vers une autre page php avec passage de paramètre Appel d’une page d’ajout en utilisant un formulaire

Autres pages Voir les fichiers suivants: Inserte.php (ajout d’un élève) Edit.php (modification d’un élève) Delete.php (suppression d’un élève)

Merci à votre Attention Tout droit réservé Khalifa Anis ©® Janvier2007 Anis.kalifa@edunet.tn