http://deptinfo.unice.fr/~renevier/progwebserveur Intervenants : Elena Cabrio, Guillaume Perez, Philippe Renevier Gonin

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

Programmation Web. Madalina Croitoru IUT Montpellier

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

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)

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

STAGE IREM 0- Premiers pas en Python

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Environnements informatiques

Programmation Web. Introduction

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

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

Algorithmique et Programmation, IMA

Développement des Systèmes d Information

Hébergement de site web Damien Nouvel

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Introduction au langage C

Préparation d un serveur Apache pour Zend Framework

2 Formation utilisateur

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Formation : WEbMaster

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Licence Sciences et Technologies Examen janvier 2010

TP1. Outils Java Eléments de correction

TP JAVASCRIPT OMI4 TP5 SRC

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Pratique et administration des systèmes

Analyse de sécurité de logiciels système par typage statique

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

Module http MMS AllMySMS.com Manuel d intégration

Le prototype de la fonction main()

Outils pour la pratique

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Formation en Logiciels Libres. Fiche d inscription

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

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

Les serveurs WEBUne introduction

Programmation Internet Cours 4

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Le langage C. Séance n 4

Le stockage local de données en HTML5

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

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

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

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

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

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

Module 7 : Configuration du serveur WEB Apache

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Open Source Job Scheduler

Introduction à MATLAB R

PHP 5.4 Développez un site web dynamique et interactif

Java Licence Professionnelle CISII,

Architectures web/bases de données

Stockage du fichier dans une table mysql:

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Bases de programmation. Cours 5. Structurer les données

Projet de programmation (IK3) : TP n 1 Correction

Remote Method Invocation (RMI)

Architecture des ordinateurs

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

OUTIL DE TRAVAIL COLLABORATIF

Introduction à l algorithmique et à la programmation M1102 CM n 3

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

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

Mise en œuvre des serveurs d application

Présentation du langage et premières fonctions

Notions fondamentales du langage C# Version 1.0

Sécurité des applications web. Daniel Boteanu

INF 321 : mémento de la syntaxe de Java

Mysql avec EasyPhp. 1 er mars 2006

1 Lecture de fichiers

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

Imprimantes et partage réseau sous Samba avec authentification Active Directory

SP1 : Intégration d'une vidéo dans une mardi 21/01/2014. page web, fonction du format vidéo et 3 mercredi 22/01/2014

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Gestion Electronique de Document (ECM/GED)

Supervision de réseau

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Exercices sur SQL server 2000

Architecture Orientée Service, JSON et API REST

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

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

La mémoire. Un ordinateur. L'octet. Le bit

Network musical jammin

TP 1. Prise en main du langage Python

Transcription:

http://deptinfo.unice.fr/~renevier/progwebserveur Intervenants : Elena Cabrio, Guillaume Perez, Philippe Renevier Gonin Philippe.Renevier@unice.fr

Introduction à la programmation côté serveur avec php Éléments de php, passage de paramètre d une page à une autre Notion de session (Contrôle d accès, redirection) Manipulation de fichier Les fonctions en php Les formulaires Introduction à la POO (notion d architecture) XML / JSON Des sujets de tps «indépendants» Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 02 / 25

Tous les lundi après-midi, tant que possible Avec Elena Cabrio et Guillaume Perez Evaluation Une note de tp (présence, comportement, avancement) pour 30% Une note de contrôles intermédiaires pour 30% QCM fait pendant le cours Un contrôle terminal (40%) Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 03 / 25

langage : PHP (html preprocessor) un pré processeur de HTTP typage dynamique orienté objet créé par Rasmus Lerdorf en 1994 Navigateur HTML, Img, Script 5 e version et 7 e version http://www.php.net/ HTTP TCP/IP 80 HTTPD TCP/IP PHP Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 04 / 25

SERVEUR Le script PHP est toujours stocké et exécuté sur le serveur web par l interpréteur de PHP Sur demande d un document (.php,.inc) Le serveur identifie que c est un fichier php (extension) Recherche les «balises» <?php?> Lance l interpréteur pour ces balises Retourne le document généré (réponse HTTP) Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 05 / 25

Exécution du PHP sur le serveur entre les étape 3.e et 3.f, avec peut-être d autres requêtes 1. L utilisatrice veut voir la page http://deptinfo.unice.fr/~renevier 2. Tape l adresse, valide 3. Le navigateur fait une requête 4. Le navigateur attend la réponse 5. Affiche la «page» 6. L utilisatrice lit la page 3.a : le navigateur, via l ordinateur, demande un document 3.c Internet «aiguille» la machine jusqu à la l endroit identifié (= un ordinateur) Internet : - 3.b identification de la localisation de la page (DNS) - - 3.f Internet aiguille la réponse vers l ordinateur demandeur 3.d - Réception de la demande par le serveur 3.e - Identification du document à partir de l URL 3.f - Renvois de la réponse (document ou erreur) Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 06 / 25 3.f

Langage interprété Utilisable comme n importe quel langage Contextualisé Web Serveur web et extension php Exemple : xampp Serveur apache httpd.conf php.ini Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 07 / 25

Un programme dont le résultat est une page web Le résultat (flux de sortie = echo) étant renvoyé au client Dont Le résultat est donc la page web Ce programme permet d avoir un contenu qui évolue sans que le code «source» ne soit modifié de traiter des données D écrire des résultats côté serveur Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 08 / 25

<!DOCTYPE html> <html> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>html avec PHP</title> </head> <body> <h1>html + PHP</h1> <p>nous sommes le <?php echo date ("j/m/y");?></p> </body></html> <head> <meta charset="utf-8" /> <title>html avec PHP</title> </head> <body> <h1>html + PHP</h1> <p>nous sommes le 14/09/2015</p> </body></html> Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 09 / 25

<?php // calcul préalable $date = "<p>nous sommes le"; $date = $date. date("j/m/y"). "</p>";?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>html avec PHP</title> </head> <body> <h1>html + PHP</h1> <?php echo $date;?> </body></html> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>html avec PHP</title> </head> <body> <h1>html + PHP</h1> <p>nous sommes le 14/09/2015</p> </body></html> Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 10 / 25

Vue au fur et à mesure Commentaires : // (sur une ligne) ou /* */ Fin des lignes par ; Début d un bloc d instruction avec { Fin d un bloc d instruction avec } Variables : Forme : $nom Pas de déclaration Le type dépend du contenu Appel de fonction (avec des variables ou des valeurs) nomdelafonction(paramètre1, paramètre2, paramètre3); Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 11 / 25

$chaine = "une chaine de caractère"; strlen($chaine) pour connaître la taille $chaine{$i} : le (i+1) ième caractère. pour concaténer (ajouter deux chaines) Remplacement des variables par leurs valeurs quand elles sont entre " " $msg = "<p>la variable \$chaine vaut : $chaine</p>"; $msg contient le texte «la variable $chaine vaut : une chaine de caractère» Caractères spéciaux : pour les voirs tels quels il faut les précéder d un \ \$ pour avoir un caractère $ \n : retour à la ligne ; \t : tabulation Fonction print de php : pour afficher (générer du html) : print($msg) ; // le contenu de $msg sera visible dans la page web echo $msg ; // équivalent echo "$msg" ; // équivalent Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 12 / 25

La structure la plus courante est le if... else. if (expression) // Bloc { } si expression est vraie. else // Bloc { } si expression est fausse (optionel). // Ici le script continue. Exemple $marquepluriel = ""; // chaine vide if ($nbjour > 1) { $marquepluriel = "s"; } s il y a plus qu un jour $texte = "<p>il y a $nbjour jour$marquepluriel</p>"; Si $NbJour vaut 1, $texte vaut "<p>il y a 1 jour</p>" Si $NbJour vaut 2, $texte vaut "<p>il y a 2 jours</p>" Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 13 / 25

($a && $b) //ET logique. ($a $b ) // OU logique ($a xor $b) //Ou exclusif (!$a) // NOT ($a == $b) //Vrai si $a est égal à $b. ($a!= $b) //Vrai si $a est différent de $b. ($a < $b) //Vrai si $a est inférieur à $b. ($a > $b) //Vrai si $a est supérieur à $b. ($a <= $b) //Vrai si $a est inférieur ou égal à $b. ($a >= $b) //Vrai si $a est supérieur ou égal à $b if ( ($a < $b) && ($a < $c) ) { /*. */ } Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 14 / 25

Opérateurs arithmétiques : $a + $b //Addition de $a et $b $a - $b //Soustraction de $b `a $a $a * $b //Multiplication de $a et $b $a / $b //Division de $a par $b $a % $b //$a modulo $b (reste de la division de $a par $b) $i++; // incrémenter $i (qui vaut 5 si son ancienne valeur est 4) $j = ++$i; // incrémenter $i puis affecter cette valeur à $j $k = $i++; // affecter la valeur de $i à $k puis incrémenter $i $k--; // décrémenter $k Opérateur de concaténation des chaînes: $c1 = "Bonjour " ; $c2 = " le monde"; $c = $c1. " tout ". $c2 ; //donne «Bonjour tout le monde» dans $c $c.= "! "; //donne «Bonjour tout le monde!» dans $c, équivalent à $c = $c. "! "; Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 15 / 25

PHP dispose de nombreuses fonctions et structures standards. http://www.php.net Il y a aussi des fonctions qui requièrent des extensions spécifiques de PHP, sans lesquelles vous obtiendrez l'erreur fatale undefined function. Utilisez phpinfo( ) ou get_loaded_extensions() pour savoir quelles sont les extensions qui sont compilées avec votre PHP. Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 16 / 25

string date ( string format [, int timestamp] ) retourne une date sous forme d'une chaîne, au format donné par la chaîne format. La date est fournie par le paramètre timestamp (un entier), sous la forme d'un timestamp. Par défaut, la date courante est utilisée. <?php // Aujourd'hui, le 12 April 2006, 10:16:18 am $aujourdhui = date("f j, Y, g:i a"); // April 12, 2006, 10:16 am $aujourdhui = date("m.d.y"); // 04.12.06 $aujourdhui = date("j, m, Y"); // 12, 04, 2006 $aujourdhui = date("ymd"); // 20060412 $aujourdhui = date('\c\'\e\s\t\ \l\e\ js \j\o\u\r\.'); // C'est le 12th jour. $aujourdhui = date("d M j G:i:s T Y"); // Wen Apr 12 10:16:18 Paris, Madrid 2006 $aujourdhui = date("h:i:s"); // 10:16:18 // notation française $aujourdhui = date("d/m/y"); // 12/04/06 $aujourdhui = date("d/m/y"); // 12/04/2006?> Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 17 / 25

int strtotime ( string time [, int now] ) essaye de lire une date au format anglais US dans la chaîne time, et de la transformer en timestamp Unix (le nombre de secondes depuis le 1er Janvier 1970 à 00:00:00 GMT), relativement au timestamp now, ou à la date courante si ce dernier est omis. Le résultat peut servir en second paramètre à date <?php $now = strtotime("now"); $Xmas = strtotime("25 december 2015"); $Xmas = strtotime("2015-12-25"); // cela ne change rien $Xmas = strtotime("2015-12-25 11:50:00"); // idem avec l heure $nextweek = strtotime("+1 week"); $nextthursday = strtotime("next Monday");?> Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 18 / 25

Notez qu il y a 60*60*24 = 86400 secondes dans un jour Les opérations de calculs sont «classique» : +, -, *, / Exemple : $diff = $date1 - $now ; La fonction de php «floor» permet d obtenir la valeur entière la plus proche (mais inférieur) Exemple : $val = floor(9.999); // 9 N OUBLIEZ PAS LES BALISES HTML POUR AFFICHER VOS CALCULS 1. Dans le fichier date.php affichiez la date du jour 2. Dans le fichier date.php affichez le nombre de jour restant avant le 21 juin 2016 3. Dans le fichier date.php affichez le nombre de jour écoulez depuis la rentrée (le 7 septembre 2015) Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 19 / 25

<?php $date = strtotime("21 june 2016"); $diff = $date - strtotime("now"); $restej = $diff / (60*60*24) ; $restej = (int) floor( $restej ); $restes = $diff - $restej*(60*60*24); $tempsrestant = "<p>il reste ".$restej." jours et ".$restes." secondes avant le $datestring</p>";?> Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 20 / 25

Structures de contrôle Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 21 / 25

C'est un moyen simple de passer en revue un tableau Deux syntaxes (avec ou sans clefs) foreach ($tableau as $value) { /* $value prend successivement toutes les valeurs contenues dans $tableau toutes les instructions faites dans ce bloc sont exécutées pour chaque valeur */ } À chaque itération la valeur de l'élément courant est assignée à $value et le pointeur interne à la liste (tableau) est avancé d'un élément Tant qu il reste des cases non parcourues dans le tableau, à la prochaine itération, on accédera à l'élément suivant. Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 22 / 25

array glob ( string $pattern [, int $flags = 0 ] ) La fonction glob() recherche tous les fichiers don t le chemin correspond à $pattern $pattern est proche de celui du «ls» "*.php" : tous les fichiers phpdans le dossier dans lequel s exécute le script "./news/*.*" : tous les fichiers dans le sous-dossiers news Les options (flags) possibles sont : GLOB_MARK - Adds a slash to each directory returned GLOB_NOSORT - Return files as they appear in the directory (no sorting) GLOB_NOCHECK - Return the search pattern if no files matching it were found GLOB_NOESCAPE - Backslashes do not quote metacharacters GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c' GLOB_ONLYDIR - Return only directory entries which match the pattern GLOB_ERR - Stop on read errors (like unreadable directories), by default errors are ignored. Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 23 / 25

Supposons que le script php soit exécuté dans le dossier «politique» // listes des fichiers.news dans le dossier courant $fichiers = glob("*.news"); $texte = "<p>le dossier contient les fichiers : "; foreach($fichiers as $f) // $f prendra successivement toutes les valeurs (ici // les noms des fichiers) contenues dans la // liste/tableau $fichiers { $texte = $texte. "$f, "; } Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 24 / 25

foreach($fichiers as $f) { $texte = $texte. "$f, "; } Avant la boucle : $texte vaut "<p>le dossier contient les fichiers : " 1 ère itération: $f vaut "01.news" ; il reste à parcourir 02,news 03,news 04.news 05,news $texte vaut "<p>le dossier contient les fichiers : 01.news, " 2 ième itération: $f vaut "02.news" ; il reste à parcourir 03,news 04.news 05,news $texte vaut "<p>le dossier contient les fichiers : 01.news, 02.news, " 3 ième itération: $f vaut "03.news" ; il reste à parcourir 04.news 05,news $texte vaut "<p>le dossier contient les fichiers : 01.news, 02.news, 03.news, " 4 ième itération: $f vaut "04.news" ; il reste à parcourir 05,news $texte vaut "<p>le dossier contient les fichiers : 01.news, 02.news, 03.news, 04.news, " 5 ième itération: $f vaut "05.news" ; il ne reste plus rien à parcourir $texte vaut "<p>le dossier contient les fichiers : 01.news, 02.news, 03.news, 04.news, 05.news, " Fin de la boucle : $texte vaut "<p>le dossier contient les fichiers : 01.news, 02.news, 03.news, 04.news, 05.news, " Philippe Renevier Gonin - Intro (à Php) - Prog Web Server, 2015-2016 25 / 25