Programmation Web : PHP

Slides:



Advertisements
Présentations similaires
PTI n°5: PDO.
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
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Cours 5 : XML et les architectures N-tier Janvier Version 1.0 -
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.
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
TP 3-4 BD21.
10:59:29 Programmation Web Programmation Web : PHP Jérôme CUTRONA
Programmation Web : Protocole HTTP
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
PhpMyAdmin 01:08:02 Programmation Web
CPI/BTS 2 Programmation Web Introduction au PHP
LES LANGAGES DE PROGRAMMATIONS JAVASCRIPTH.T.M.LP.H.PS.Q.L Reynald Maréchal DI045.
Nouveau blog. WordPress connexion Nommez votre blog.
Rapport de TER 2002 R₫alisation d'un site web dynamique en PHP / MySql
Comprendre l’environnement Web
Développement Rapide dApplications Web avec.NET « Mon premier site »
Lycée Louis Vincent Séance 1
Les instructions PHP pour l'accès à une base de données MySql
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
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.
Atelier « Créations de sites » : Les techniques de réalisation de sites EPN :...
ISICIL SWEETDEKI Intégration du logiciel Mindtouch Core dans la plate-forme ISICIL Guillaume HUSSON.
Présentation et utilisation du logiciel R Komi Sodoké Université du Québec à Montréal Février 2007.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Olivier Nocent Programmation Web Olivier Nocent
Les Serveurs WEB.
Wiki pour les nuls le LGI
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
La Programmation CGI Principe Général Traitement des informations
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Département Technologie de l’Information et de la Communication
Etude comparative JSP, ASP et PHP
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
PHP & MySQL Master1 ICD Claire Jacquot Emilie Hot le 24/10/2006.
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.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Développement d’application Web.  Internet  WWW  Client/Serveur  HTTP.
Introduction au socle MEAN
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
Programmation Web : PHP
PHP SpeedBerg Templates EPFL PHP IIème Conférence des WebMasters EPFL 5/12/2001 Tuan Lam E-PFL
Initiation au JavaScript
Centralisation des sites web d’ELTA & Mise en place d’un serveur NAS
Initiation au web dynamique Licence Professionnelle.
PPE 2 : Val Lamartinien Passion
Introduction à PHP TOURNADRE Guillaume - Informatique Réseaux URL :
Séance /10/2005 CSS et Dreamweaver. CSS : principes Cascading Style Sheet = feuille de style en cascade Norme du W3C :
Séance /01/2006 Les technologies des sites dynamiques.
Séance /10/ Projet de site dynamique avec Dreamweaver : MyCMS
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.
SOMMAIRE  Intro et cahier des charges 2 Présentation Projets Étude et recherche Développement Doc. et manuels Conclusion J.
Principes et variables
1 Sommaire Présentation de l’entreprise Présentation du stage Présentation de Scarabée Réalisation Conclusion.
INF2005– Programmation web– A. Obaid Les cartes. INF2005– Programmation web– A. Obaid Images cliquables Outil permettant d'effectuer des liens à partir.
1 CEC A.-CHAVANNE Sites Web et bases de données. 2 UNE BASE DE DONNÉES : POURQUOI ? Manipulation de grandes quantités d’information – représentation des.
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:

Programmation Web : PHP Jérôme CUTRONA Avec quelques modifications apportées par Abdallah ARIOUA 05:50:47 Programmation Web 2012-2013

PHP: Langage de script pour le Web Qu’est-ce que PHP ? Langage de script. Utilisé coté serveur Acronyme récursif : PHP: Hypertext Preprocessor Créé en 1994-1995 par Rasmus Lerdorf Extension utilisée sur certains serveurs Web (33%) Langage multi plate-forme (UNIX / Windows…) Open Source Versions actuelles (source nexen.net) : PHP4 (52% en octobre 2008) PHP5 (48% en octobre 2008) 05:50:47 Programmation Web 2012-2013

Utilité et utilisation de PHP Création de pages HTML « dynamiques », fabriquées à la volée, construite à la demande Interface entre un serveur Web et des bases de données Création d’applications Web 05:50:47 Programmation Web 2012-2013

Principales fonctionnalités de PHP Manipulation de chaînes et tableaux Calendrier / dates / heures Fonctions mathématiques Accès au système de fichiers Manipulation d’images HTTP / FTP / IMAP Bases de données (Oracle, MySQL, …) XML … 05:50:47 Programmation Web 2012-2013

Execution d’une page php Live Hello.php 05:50:47 Programmation Web 2012-2013

Exécution d’un programme sur le serveur Fonctionnement de PHP Réseau Localisation du code PHP dans le fichier Localisation de la ressource Requête HTTP du client (hello.php) Exécution du code PHP Envoi du résultat au client = réponse HTTP Connexion sur le serveur (port 80) Fermeture de la connexion Rendu graphique des données Client Navigateur HTML JavaScript CSS GET /hello.php HTTP/1.0 Protocole HTTP Exécution d’un programme sur le serveur <html> <head> <title>Hello</title> </head> <body>Hello world</body> </html> Serveur <?php echo <<<HTML <html> <head> <title>Hello</title> </head> <body>Hello world</body> </html> HTML; Serveur Web .html .php .jpg hello.php Module PHP MySQL 05:50:47 Programmation Web 2012-2013

Fonctionnement de PHP Client  Serveur Connexion TCP sur le serveur (port 80) Requête HTTP du client (mon_fichier.php) Localisation de la ressource Exécution du code PHP Envoi du résultat de l’exécution au client = réponse HTTP Fermeture de la connexion Rendu graphique des données (HTML, image, …) 05:50:47 Programmation Web 2012-2013

Programme en PHP Délimitation du code PHP dans le fichier .php : <?php Code PHP ?> <script language="PHP"> Code PHP </script> <? Code PHP ?> <% Code PHP %> Fermeture optionnelle Confusion avec JavaScript  à bannir !! Dépend de la configuration du serveur  à bannir !! short_open_tag asp_tags 05:50:47 Programmation Web 2012-2013

Eléments de syntaxe PHP La syntaxe de PHP ressemble à celle de famille "C" (C, C++, Java, …) Chaque instruction se termine par ";" Commentaires: /* jusqu’au prochain */ // jusqu’à la fin de la ligne # jusqu’à la fin de la ligne 05:50:47 Programmation Web 2012-2013

Les variables et les types de données Tout identificateur commence par "$" Les affectations sont réalisées grâce à "=" Numérique entier: 12 ou réel: 1.54 Chaîne: "Hello" ou ’Bonjour’ Booléen: true, false (PHP 4) Tableau: $tab[2]=12 Objet (PHP4, PHP5) Ressource NULL Le type d’une variable est dynamique et est déterminé par la valeur qui lui est affectée 05:50:47 Programmation Web 2012-2013

Typage faible. Exemple // Pas de déclaration de variable $test = 1.5 ; // Réel $test = 12 ; // Entier $test = array() ; // Tableau $test = "10" ; // Chaîne echo $test ; // 10 05:50:47 Programmation Web 2012-2013

Typage automatique. Exemple $nombre1 = 1.5 ; // Réel $nombre2 = 12 ; // Entier $chaine1 = "10" ; // Chaîne $chaine2 = 'coucou' ; // Chaîne $total = $nombre1 + $nombre2 + $chaine1 + $chaine2 ; echo $total ; // 23.5 Réel 1.5 12 "10" 'coucou' 13.5 10 23.5 23.5 05:50:47 Programmation Web 2012-2013

Les chaînes de caractères Substitution de variables dans les chaînes Guillemets simples $a='chaîne' ; $b='voici une $a'; Guillemets doubles $a="chaîne" ; $b="voici une $a"; Syntaxe HereDoc $b=<<<MARQUE_DE_FIN voici une $a sur deux lignes ;-) MARQUE_DE_FIN; chaîne voici une $a chaîne voici une chaîne chaîne voici une chaîne sur deux lignes ;-) 05:50:47 Programmation Web 2012-2013

Variables et les opérations arithmétiques Live Variables et les opérations arithmétiques « vars.php » 05:50:47 Programmation Web 2012-2013

Concaténation de chaînes Permet d’assembler plusieurs chaînes Réalisé grâce à l’opérateur point : . "Bonjour " . "Marcel"   vaut "Bonjour Marcel"  $nb = 6*2 ; "Acheter " . $nb . " oeufs"   vaut "Acheter 12 oeufs" 05:50:47 Programmation Web 2012-2013

La commande echo Permet d’envoyer du texte au navigateur du client (« écrire » la page au format HTML résultant de l’interprétation de PHP) echo "Bonjour" ; $nom="Marcel" ; echo "Bonjour $nom" ; Plus généralement, permet d’envoyer des octets au navigateur du client Ficher HTML, XML, CSS, JavaScript, … Données d'une image Contenu d'un ficher PDF, Flash, etc. 05:50:47 Programmation Web 2012-2013

Impossible de voir le code PHP depuis le navigateur !! Hello world ! Interprétation du code PHP sur le serveur et transmission du résultat au client <?php $debut = <<<HTML <html> <head>   <title>hello</title> </head> <body>\n HTML; $corps = "Hello world!\n"; $fin  = <<<HTML  </body> </html> /* Envoi au client */ echo  $debut.$corps.$fin ; Serveur <html> <head> <title>hello</title> </head> <body> Hello world! </body> </html> Navigateur Impossible de voir le code PHP depuis le navigateur !! 05:50:47 Programmation Web 2012-2013

Live 1 HTML dans PHP La commande echo Eco_php.php 05:50:47 Programmation Web 2012-2013

Live 2 PHP dans HTML La commande echo php_in_html.php 05:50:47 Programmation Web 2012-2013

Les opérateurs arithmétiques $a + $b Somme $a - $b Différence $a * $b Multiplication $a / $b Division $a % $b Modulo (Reste de la division entière) 05:50:47 Programmation Web 2012-2013

Les opérateurs d’in- et de dé-crémentation pré- et post-fixés Retourne la valeur de $a puis augmente la valeur de $a de 1 ++$a Augmente la valeur de $a de 1 puis retourne la nouvelle valeur de $a $a-- Retourne la valeur de $a puis diminue la valeur de $a de 1 --$a Diminue la valeur de $a de 1 puis retourne la nouvelle valeur de $a 05:50:47 Programmation Web 2012-2013

Les opérateurs de comparaison $a == $b Vrai si égalité entre les valeurs de $a et $b $a != $b Vrai si différence entre les valeurs de $a et $b $a < $b Vrai si $a inférieur à $b $a > $b Vrai si $a supérieur à $b $a <= $b Vrai si $a inférieur ou égal à $b $a >= $b Vrai si $a supérieur ou égal à $b $a === $b Vrai si $a et $b identiques (valeur et type) $a !== $b Vrai si $a et $b différents (valeur ou type) 05:50:47 Programmation Web 2012-2013

Les opérateurs logiques [Expr1] and [Expr2] Vrai si [Expr1] et [Expr2] sont vraies [Expr1] && [Expr2] idem [Expr1] or [Expr2] Vrai si [Expr1] ou [Expr2] sont vraies [Expr1] || [Expr2] [Expr1] xor [Expr2] mais pas les deux ! [Expr1] Vrai si [Expr1] est non vraie 05:50:47 Programmation Web 2012-2013

Les opérateurs sur bits $a & $b ET binaire $a | $b OU binaire $a ^ $b XOR binaire ~ $a Inversion bit à bit $a << $b $a décalé à gauche de $b rangs $a >> $b $a décalé à droite de $b rangs 05:50:47 Programmation Web 2012-2013

Précédence des opérateurs new [ ++ -- ! ~ - (int) (float) (string) (array) (object) @ * / % + - . << >> < <= > >= == != === !== & 05:50:47 Programmation Web 2012-2013

Précédence des opérateurs ^ | && || ? : = += -= *= /= .= %= &= |= ^= <<= >>= and xor or En cas de doute, utilisez les parenthèses ;-) 05:50:47 Programmation Web 2012-2013

Structure de contrôle Si…Alors…Sinon… if (condition) { /* Bloc d’instructions exécuté si la condition est vraie */ } [else /* Bloc d’instructions exécuté si la condition est fausse */ }] 05:50:47 Programmation Web 2012-2013

Structure de contrôle Tant que… faire… while (condition) { /* Bloc d’instructions répété tant que la condition est vraie */ } do { /* Bloc d’instructions exécuté une fois puis répété tant que la condition est vraie */ } while (condition) ; 05:50:47 Programmation Web 2012-2013

Structure de contrôle Tant que… faire… for(avant; condition; fin_chaque_itération) { /* Bloc d’instructions répété tant que la condition est vraie */ } Équivalent à: avant ; while (condition) fin_chaque_itération ; 05:50:47 Programmation Web 2012-2013

Structure de contrôle switch… switch (val) { case v1: instructions exécutées si val==v1 case v2: instructions exécutées si val==v2 ou si val==v1 … default: instructions dans tous les cas } 05:50:47 Programmation Web 2012-2013

L’instruction break Permet de sortir d’une structure de contrôle switch (val) { case v1: instructions exécutées si val==v1 break ; /* On sort du switch si val==v1 */ case v2: instructions exécutées si val==v2 ou si val==v1 break ; /* On sort du switch si val==v2 */ … default: instructions exécutées dans tous les cas si val!=v1 et val!=v2 } 05:50:47 Programmation Web 2012-2013

Les tableaux Création / initialisation: $tab1=array(12, "fraise", 2.5) ; $tab2[] = 12 ; $tab2[] = "fraise" ; $tab2[] = 2.5 ; $tab3[0] = 12 ; $tab3[1] = "fraise" ; $tab3[2] = 2.5 ; Clé Valeur 12 1 "fraise" 2 2.5 05:50:47 Programmation Web 2012-2013

Les tableaux « à trous » Les éléments du tableaux ne sont pas forcement d’indices consécutifs : $tab4[0] = 12 ; $tab4[1] = "fraise" ; $tab4[2] = 2.5 ; $tab4[5] = "el5" ; Comment parcourir de tels tableaux ? Clé Valeur 12 1 "fraise" 2 2.5 3 4 5 "el5" 05:50:47 Programmation Web 2012-2013

Les tableaux « à trous » (suite) 4 Parcours classique : for ($i=0; $i < sizeof($tab4); $i++) { echo "tab4[$i]: "       . $tab4[$i] . "<BR>\n"; } Clé Valeur 12 1 "fraise" 2 2.5 3 4 5 "el5" ? 05:50:47 Programmation Web 2012-2013

Structure de contrôle Pour chaque… foreach ($tableau as $element) { /* Bloc d’instructions répété pour chaque élément de $tableau */ /* Chaque élément de $tableau est accessible grâce à $element */ } 05:50:47 Programmation Web 2012-2013

Parcours de tableau : foreach … $tab4[0] = 12 ; $tab4[1] = "fraise" ; $tab4[2] = 2.5 ; $tab4[5] = "el5" ; foreach($tab4 as $v) { echo "Val: $v<br>\n"; } PHP … Val:12<br>\n Val:fraise<br>\n Val:2.5<br>\n Val:el5<br>\n HTML Navigateur 05:50:47 Programmation Web 2012-2013

Tableaux associatifs Tableaux dont l’accès aux éléments n’est plus réalisé grâce à un index (0,1,…) mais grâce à une clé de type entier ou chaîne. Exemples de clés: $tab['un'] = 12 ; $tab[205] = "bonjour" ; $tab["la valeur"] = 3.0 ; Création $tab = array(cle1 => val1, cle2 => val2, …); 05:50:47 Programmation Web 2012-2013

Tableaux associatifs - Exemples $tab5['un']    = 12 ; $tab5['trois'] = "fraise" ; $tab5["deux"]  = 2.5 ; $tab5[42]  = "el5" ; $tab6 = array('un'    => 12, 'trois' => "fraise", "deux"  => 2.5, 42  => "el5") ; Clé Valeur "un" 12 "trois" "fraise" "deux" 2.5 42 "el5" 05:50:47 Programmation Web 2012-2013

Structure de contrôle Pour chaque… foreach($tableau as $cle => $element) { /* Bloc d’instructions répété pour chaque élément de $tableau */ /* Chaque élément de $tableau est accessible grâce à $element */ /* La clé d’accès à chaque élément est donnée par $cle */ } 05:50:47 Programmation Web 2012-2013

Parcours de tableau <?php $html = <<<HTML <html> <head><title>foreach clé</title> </head> <body> HTML; $tab6 = array('un' => 12, 'deux' => "fraise", "trois" => 2.5, "quatre" => "el5") ; foreach ($tab6 as $cle => $val) { $html .= "tab[$cle]: $val<br>\n" ; } echo $html . "</body>\n</html>" ; 05:50:47 Programmation Web 2012-2013

Exemple de génération de code HTML <?php $html = <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">     <title>Boucle</title>   </head>   <body> HTML; for ($i=1; $i<20; $i++) {     $html .= "Le serveur compte... " . $i . "<br>\n" ; } $html .= <<<HTML   </body> </html> echo $html ; 05:50:47 Programmation Web 2012-2013

Traitement des données de formulaires PHP permet de traiter les données saisies grâce à un formulaire HTML si le champ ACTION du formulaire désigne une page PHP du serveur. Après récupération par le serveur Web, les données sont contenues dans l'une des variables superglobales de type tableau associatif $_GET ou $_POST (ou $_REQUEST). La valeur peut être trouvée grâce à une clé qui porte le même nom que le champs du formulaire de la page HTML de saisie. 05:50:47 Programmation Web 2012-2013

Live Formulaire form.html 05:50:47 Programmation Web 2012-2013

Traitement des données de formulaires Réseau Client Navigateur HTML JavaScript CSS name=robert <html> <head> <title>bonjour</title> </head> <body> Bonjour robert ! </body> </html> Serveur name Serveur Web <?php $html = <<<HTML <html> <head><title>bonjour</title></head> <body> HTML; $html .= "Bonjour ".$_GET['name']." !\n" ; echo $html . "</body>\n</html>" ; Module PHP robert 05:50:47 Programmation Web 2012-2013

Exemple – Formulaire HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>formulaire</title> </head> <body> <form action=“action.php" method="get"> Nom: <input type="text" name=“ name"> <input type="submit" value="Envoyer"> </form> </body> </html> 05:50:47 Programmation Web 2012-2013

Exemple – Traitement en PHP $html = <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Validation</title> </head> <body> HTML; if (isset($_GET[‘name'])) { if (!empty($_GET[‘name'])) $html .= "Vous avez saisi '" .$_GET['nomPers']."'\n" ; } else $html .= "Aucune valeur saisie\n"; $html .= "Utilisation incorrecte\n" ; echo $html . "</body>\n</html>" ; $_GET[‘name'] est-il défini ? $_GET[‘name'] est-il vide ? 05:50:47 Programmation Web 2012-2013

Formulaire avec validation Live Formulaire avec validation form.html 05:50:47 Programmation Web 2012-2013

Formulaire avec post et get Live Formulaire avec post et get form.html 05:50:47 Programmation Web 2012-2013

Live Les bases de données database.php Sql.sql 05:50:47 Programmation Web 2012-2013

e.g.: http://infolimon.iutmontp.univ-montp2.fr/~arioua TP - PHP Chaque étudiant dispose d'un espace dans son répertoire de travail personnel sur lequel il peut mettre ses pages web. On y accède à l'url suivante : http://infolimon.iutmontp.univ-montp2.fr/~votrelogin e.g.: http://infolimon.iutmontp.univ-montp2.fr/~arioua Publication de vos documents web Un répertoire nommé public_html, accessible par le serveur Apache en lecture et en exécution, est présent dans votre répertoire personnel Placer vos documents dans ce répertoire public_html. Créer un fichier index.html (ou index.php) qui sera votre page d'accueil. Vos documents sont accessibles via un navigateur à l'adresse ci-dessus Si le dossier public_html n’existe pas suivez les infos dur cette page pour le créer: https://iutdepinfo.iutmontp.univ-montp2.fr/index.php/cote-technique/site-web/pour-tous Base de données: https://infolimon.iutmontp.univ-montp2.fr/my/ Login: votrelogin MDP: Numero etudiant (ou bien votre mdp de la base de données) 05:50:47 Programmation Web 2012-2013

TP Télécharger le fichier « php.zip » et l’extraire vers votre public_html: http://www2.lirmm.fr/~arioua/cours/progweb/php/php.zip Visiter le lien: http://infolimon.iutmontp.univ-montp2.fr/~arioua/hello.php Créer votre base de données en utilisant le fichier « sql.sql ». Reconfigurer les paramètres de connexion dans le fichier «  database.php » en spécifiant les paramètres de votre base de données. Afficher les produits de la table produit. 05:50:47 Programmation Web 2012-2013

TP – plan B Cliquer ici Cliquer ici Et ensuite: Créer votre site web ici: http://www.000webhost.com/order.php Confirmer l’inscription par email Se connecter ici: http://members.000webhost.com/login.php Cliquer ici Cliquer ici Et ensuite: 05:50:47 Programmation Web 2012-2013

TP – plan B Création de la base de données Remplir les infos: Sauvegarder ces info, elles sont très importantes 05:50:47 Programmation Web 2012-2013

TP – plan B Cliquer ici Ensuite, cliquer sur 05:50:47 Programmation Web 2012-2013

TP – plan B Après, cliquer sur choisissez un fichier et choisir sql.sql (après l’avoir sauvegardé de http://www2.lirmm.fr/~arioua/cours/progweb/php/sql.sql) Ensuite cliquer sur Go 05:50:47 Programmation Web 2012-2013

TP – plan B Transfère des fichiers Dans le Cpanel, faire le suivant Cliquer ici 05:50:47 Programmation Web 2012-2013

TP – plan B Transfère des fichiers Remplir votre infos (que le username et password), ensuite cliquer sur login 05:50:47 Programmation Web 2012-2013

TP – plan B Transfère des fichiers Cliquer sur le dossier public_html et mettre votre fichiers dedans en utilisant upload 05:50:47 Programmation Web 2012-2013

TP – plan B Transfère des fichiers Choisir le fichier Ensuite cliquer sur 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « SELECT » 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « SELECT unique» <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Formulaire de saisie des fruits</title> </head> <body> <form action="valide3.php" method="get"> Choisissez des fruits:  <select name="sel"> <option>Fraise <option>Pomme <option>Poire <option>Banane <option>Cerise </select> <input type="submit" value="envoyer"> </form> </body> </html> Envoyer valide3.php?sel=Pomme 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « SELECT multiple» <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Formulaire de saisie des fruits</title> </head> <body> <form action="valide3.php" method="get"> Choisissez des fruits:  <select name="sel" multiple> <option>Fraise <option>Pomme <option>Poire <option>Banane <option>Cerise </select> <input type="submit" value="envoyer"> </form> </body> </html> Envoyer ??? valide3.php?sel=Pomme&sel=Poire 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « SELECT multiple» <html> <head> <title>Formulaire de saisie des fruits</title> </head> <body> <form action="valide3.php" method="get"> Choisissez des fruits:  <select name="sel[]" multiple> <option>Fraise <option>Pomme <option>Poire <option>Banane <option>Cerise </select> <input type="submit" value="envoyer"> </form> </body> </html> Envoyer valide3.php?sel%5B%5D=Pomme&sel%5B%5D=Poire valide3.php?sel[]=Pomme&sel[]=Poire 05:50:47 Programmation Web 2012-2013

Traitement des données des champs « SELECT » <?php $html = <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Liste de fruits</title> </head> <body> HTML; if (isset($_GET['sel']) && !empty($_GET['sel'])) {/* La variable $_GET['sel'] est définie et elle n'est pas vide */ foreach($_GET['sel'] as $fruit) $html .= "Vous avez choisi $fruit<br>\n" ; } else $html .= "Vous n'avez pas choisi de fruit\n" ; echo $html . "</body>\n</html>" ; $_GET[‘sel'] est un tableau 05:50:47 Programmation Web 2012-2013

Résultat 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « CHECKBOX » 05:50:47 Programmation Web 2012-2013

Formulaires contenant des champs « CHECKBOX » <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Formulaire de saisie des fruits</title> </head> <body> <form name="formu" action="valide3.php" method="get"> Choisissez des fruits :<br> <input type="checkbox" name="sel[]" value="Fraise">Fraise<br> <input type="checkbox" name="sel[]" value="Pomme" >Pomme <br> <input type="checkbox" name="sel[]" value="Poire" >Poire <br> <input type="checkbox" name="sel[]" value="Banane">Banane<br> <input type="checkbox" name="sel[]" value="Cerise">Cerise<br> <input type="submit" value="Envoyer"> </form> </body> </html> 05:50:47 Programmation Web 2012-2013

Résultat 05:50:47 Programmation Web 2012-2013

Références $a = 12 ; $b = $a ; $c = &$a ; $b = "coucou" ; $c = 84 ; echo "\$a : $a\n" ; echo "\$b : $b\n" ; echo "\$c : $c\n" ; unset($c) ; $c = "hello" ; $a 12 84 12 $b 12 "coucou" $c "hello" $a : 84 $b : coucou $c : 84 05:50:47 Programmation Web 2012-2013

Fonctions utilisateur Description d’une fonctionnalité dépendant éventuellement de paramètres et retournant éventuellement un résultat Définition function moyenne($a,$b) { return ($a+$b)/2. ; } Utilisation $resultat = moyenne(2,4) ; echo $resultat ; // vaut 3 05:50:47 Programmation Web 2012-2013

Fonctions utilisateur Valeur de retour function moyenne($a,$b) { … } Arguments function moyenne( $a, $b) Typage faible de PHP : Aucune information Typage faible de PHP : Aucune information Typage faible de PHP : Aucune information 05:50:47 Programmation Web 2012-2013

Mode de passage des arguments (types natifs) <?php function permutation($x, $y) { echo "permutation..." ; $t = $x ; $x = $y ; $y = $t ; } $a = 12 ; $b = 210 ; echo "\$a = $a" ; echo "\$b = $b" ; permutation($a, $b) ; ?> Permutation impossible : Passage des arguments des fonctions par valeur $a = 12 $b = 210 permutation... 05:50:47 Programmation Web 2012-2013

Mode de passage des arguments (types natifs) <?php function permutation(&$x, &$y) { echo "permutation..." ; $t = $x ; $x = $y ; $y = $t ; } $a = 12 ; $b = 210 ; echo "\$a = $a" ; echo "\$b = $b" ; permutation($a, $b) ; ?> Permutation réussie $a = 12 $b = 210 permutation... $a = 210 $b = 12 05:50:47 Programmation Web 2012-2013

Arguments par défaut des fonctions Valeur par défaut d’un argument s’il n’a pas été défini lors de l’appel de la fonction function bonjour($nom="inconnu") { echo "Bonjour cher $nom" ; } Utilisation bonjour() ; bonjour("Marcel") ; Bonjour cher inconnu Bonjour cher Marcel 05:50:47 Programmation Web 2012-2013

Définition de fonctions fréquemment utilisées Certaines fonctions sont utilisées dans plusieurs scripts PHP Comment faire pour ne pas les définir dans chacune des pages ? Utilisation de : include("fichier") ; require("fichier") ; include_once("fichier") ; require_once("fichier") ; Permet d’inclure le contenu de fichier dans le script courant 05:50:47 Programmation Web 2012-2013

include et require Fichier utilisation1.php … require("mafonction.php") mafonction(true) ; Fichier mafonction.php <? function mafonction($arg) { if (isset($arg)) echo ("Vrai") ; } else echo ("Faux") ; ?> Fichier utilisation2.php … include("mafonction.php") $var=false ; mafonction($var) ; Fichier utilisation3.php … require("mafonction.php") 05:50:47 Programmation Web 2012-2013

Définition de constantes <?php define("ma_constante", "Bonjour à tous") ; echo ma_constante ; ?> nom valeur Définition d'une constante Utilisation de la constante 05:50:47 Programmation Web 2012-2013

Gestion des erreurs Dans certains cas, il n’est ni possible ni utile de poursuivre l’exécution du code PHP (variables non définies, valeurs erronées, échec de connexion, …) Arrêt brutal de l’exécution du code: die(message) exit(message) Envoie message au navigateur et termine l’exécution du script courant 05:50:47 Programmation Web 2012-2013

Gestion des erreurs – (Mauvais) Exemple <?php $html = <<<HTML <html> <head> <title>die-exit</title> </head> <body> HTML; if (!isset($val)) { die($html."problème val") ; /* Au delà de ce point, fin du script */ } $html .= <<<HTML Choix: $val </body> </html> PHP <html> <head> <title>die-exit</title> </head> <body> problème val HTML HTML non valide… problème val Navigateur 05:50:47 Programmation Web 2012-2013

Gestion de l'affichage des erreurs int error_reporting ( [int level] ) Constante E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL E_STRICT Ancien niveau d'erreur Sur un serveur en production, toute erreur affichée donne des indices sur les scripts et rend le site vulnérable Débogage php.ini display_errors boolean 05:50:47 Programmation Web 2012-2013

Opérateur de contrôle d'erreur $v = file("dummy.txt") or die("Problème de lecture") ; Fichier absent Warning: file(dummy.txt): failed to open stream: No such file or directory in dummy.php on line 68 Problème de lecture $v = @file("dummy.txt") or die("Problème de lecture") ; Problème de lecture 05:50:47 Programmation Web 2012-2013