Programmation Web Serveur

Documents pareils
TP JAVASCRIPT OMI4 TP5 SRC

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

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

SYSTÈMES D INFORMATIONS

Module http MMS AllMySMS.com Manuel d intégration

Comment développer et intégrer un module à PhpMyLab?

Attaques de type. Brandon Petty

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

Création de formulaires interactifs

Stockage du fichier dans une table mysql:

Publication dans le Back Office

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

PDO : PHP Data Object 1/13

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

4D Business Kit version 2.2 ADDENDUM

CREATION d UN SITE WEB (INTRODUCTION)

PLUGINS Guide du Développeur STEPHANE FERRARI. P l u X m l 5.4

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

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Module BD et sites WEB

DOM - Document Object Model

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

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Sécurité des applications web. Daniel Boteanu

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

Attaques applicatives

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

Mise en place d un serveur Proxy sous Ubuntu / Debian

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

< Atelier 1 /> Démarrer une application web

Formulaire pour envoyer un mail

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Rapports d activités et financiers par Internet. Manuel Utilisateur

GOOGLE ANALYTICS. Ajout du code de suivi sur PowerBoutique. Ajout du code de suivi Google Analytics. Page 1 / 7 TUTO / GOOGLE ANALYTICS

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

\ \ / \ / / \/ ~ \/ _ \\ \ ` \ Y ( <_> ) \ / /\ _ / \ / / \/ \/ \/ Team

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

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

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

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

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

Module pour la solution e-commerce Magento

HTML/CSS - Travaux Pratiques 2

Manuel du composant CKForms Version 1.3.2

STID 2ème année : TP Web/PHP

Application Web et J2EE

Sana Sellami. Licence Professionnelle SIL

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.

Formation. Module WEB 4.1. Support de cours

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Manuel d'installation

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

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Techniques de Programmation pour Internet

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

Pack Fifty+ Normes Techniques 2013

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Sécurisation avancée des données de cartes bancaires Guide Hôtel v1.0 SECURISATION AVANCEE DES DONNEES BANCAIRES. Guide Hôtel

Optimiser les s marketing Les points essentiels

Bases de Données et Internet

Formation Website Watcher

Site web établissement sous Drupal

Groupe Eyrolles, 2003, ISBN : X

Campagnes d ings v.1.6

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

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Stopack : logiciel pour l entrepôt

Audit SEO. I / Les Tranquilles d Oléron

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)

Guide de configuration

Manuel d utilisation du site web de l ONRN

Programmation Web TP1 - HTML

Configurer Squid comme serveur proxy

Technologies pour Web Services faciles : REST, JSON

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

26 Centre de Sécurité et de

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Rapport de projet Site web pour une association

Diplôme Universitaire Technologique Spécialité Informatique. Période du stage: 05 Avril Juin 2004

Manuel d utilisation de notre site de commandes en ligne

Comment mettre en ligne un site WordPress local

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Guide d utilisation 2012

Les services usuels de l Internet

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

Manuel utilisateur estat Clics

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Programmation Web. Madalina Croitoru IUT Montpellier

Web statique : client-serveur. PHP/MySQL: Sites dynamiques Formulaires et bases de données. Discussion HTTP. Caractéristiques du HTTP

Les outils de création de sites web

WIMS. Découvrir et utiliser

Transcription:

Programmation Web Serveur Bilan intermédiaire 2 - Formulaires D'après les cours de Philippe Renevier Fabien Givors Université de Nice Sophia Antipolis Département Informatique fabien.givors@unice.fr

FONCTIONS Mot clef function Nombre de paramètre quelconque Valeur par défaut des paramètre Variables internes locales à la fonction Résultat unique retourné avec return function mafonction($parametre1 ; $parametre2 = "valeur par defaut") { //. return $unresultat; } $resultat = mafonction();

STRUCTURATION DU CODE require() et include() incluent et exécutent un fichier PHP. La commande require() se remplace elle-même par le contenu du fichier spécifié require() et include() sont identiques, sauf dans leur façon de gérer les erreurs. include() produit une Alerte (warning) tandis que require() génère une erreur fatale. Notamment lorsque le fichier manque. require_once() et include_once() La principale différence est qu'avec require_once(), vous êtes assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d'alertes. Structuration du code Partage de code

REDIRECTION Fonction header("location: $url"); $url : localisation de la page de redirection Chemin local Chemin absolu (http://...) Utilise un champ d une réponse http DONC A FAIRE AVANT D EMETTRE UNE REPONSE i.e. avant d être dans le document html Le moindre espace compte

NOTION DE SESSION Partage de données entre des pages (ou de l exécution d une même page) Création d un fichier sur le serveur Unique par navigateur connecté au site Identification par une clef (l id de session) Stockage dans un cookie (par défaut) Chargement des valeurs automatiquement (sur demande) En php // en cas de partage de serveur web session_name("votre login"); // à faire avant tout retour, echo, caractère «invisible», etc. session_start(); Au début de la session : création et remplissage de $_SESSION tableau contenant toutes les variables de session Affection = création ou mise à jour $_SESSION["style"]="blue.css" : crée une variable de session «style» qui vaut «blue.css» Test d existence : isset : if ( isset($_session["style"]) ) Effacecement : unset($_session["style"]) Destruction de session par un code particulier (c.f. cours 04)

SESSION : COMMUNICATION ENTRE PAGES listearticle.php : Si nécessaire, initialise la session pour tous les articles Affiche vu / pas vu (nouveau) tp2.php Si nécessaire, initialise la session pour l article en cours Attention, on peut arriver directement sur cette page! Indique dans la session que l article en cours est désormais vu

DÉROULEMENT 1, listearticle listearticle.php 2 : session id 2, initialisation et génération session

INITIALISATION POUR CHAQUE PAGE

DÉROULEMENT 3, la page tous les articles sont «non vu» listearticle.php session article1 : false article2 : false article3 : false 4, on veut voir article2

RETOUR SUR LISTEARTICLE 6, la page qui montre l article2 tp2.php 5, session modificati on de la session article1 : false article2 : false true article3 : false

TP2.PHP ET LA SESSION (1/2)

TP2.PHP ET LA SESSION (2/2)

RETOUR SUR LISTEARTICLE (7) 9, la page qui note l article2 «lu» listearticle.php 8, lecture session de la session article1 : false article2 : true article3 : false

LISTEARTICLE ET LA LECTURE DE LA SESSION

Pour passer des caractères spéciaux ( «/» ; «:» ; etc.) en valeur ENCODAGE URL

CODAGE D UNE URL Tabulation %09 < %3C Espace %20 = %3D " %22 > %3E # %23? %3F % %25 @ %40 & %26 [ %5B ( %28 \ %5C ) %29 ] %5D + %2B ^ %5E, %2C ' %60. %2E { %7B / %2F %7C : %3A } %7D ; %3B ~ %7E

ENCODAGE / DÉCODAGE URL ET PHP urlencode() Encode une chaîne en URL Cette fonction est utile lors de l'encodage d'une chaîne de caractères à utiliser dans la partie d'une URL, comme façon simple de passer des variables vers la page suivante. urldecode() Décode une chaîne encodée URL Décode toutes les séquences %## et les remplace par leur valeur. Les caractères '+' sont décodés en un caractère d'espacement. Pas besoin avec $_GET (c est fait automatiquement)

Entrer des données depuis un navigateur FORMULAIRE

PRINCIPES Envoi de données depuis le navigateur Pour traitement dans le serveur Deux façons de faire Passage des informations dans l url (méthode GET, déjà utilisée) Passage des informations dans la requête (méthode POST) Attention : ce n est pas sécurisé

EXEMPLE: CÔTÉ NAVIGATEUR / HTML <form action="page.php" method="post"> <fieldset> <legend>placez une alerte</legend> <p>message de l'alerte : <input type="text" name="alerte" /></p> <input type="submit" name="setalerte" value="declenchez l'alerte" /> </fieldset> </form>

CÔTÉ SERVEUR / PHP <form action="page.php" method="post"> <fieldset> <legend>placez une alerte</legend> <p>message de l'alerte : <input type="text" name="alerte" /></p> <input type="submit" name="setalerte" value="declenchez l'alerte" /> </fieldset> </form> if (isset($_post["setalerte"])) { $alerte = rawurlencode(trim($_post["alerte"])); file_put_contents("alerte.txt", $alerte); }

BALISES DE FORMULAIRE : FORM Contient des éléments de contrôle de formulaire (bouton, champs, etc.) «block» (sauf form) ou script Attributs action (uri) method ("get" ou "post") get : envoi dans l url des paires key/value :? toto=val&titi=val2& post : envoi enctype (pour une méthode "post") Par défaut : application/x-www-form-urlencoded - encodage : espace devient + et les autres non alphanumériques %HH et les retours à la ligne : "CR LF" (i.e., ` %0D%0A' ) multipart/form-data - envoi en différentes parties (types à préciser à la source) accept-charset (liste -, - d encodage possible pour les caractères acceptés par le server) Accept (liste -, - de types de contenu acceptés par le server) events : onsubmit et onreset

BALISES DE FORMULAIRE : TYPE DE INPUT text : champs d entrée de texte. password : l écho sont des *. sécutité pauvre. checkbox radio (radiobutton) submit : un bouton pour envoyer image : un bouton submit graphique. Attribut src donne l URI de l image. Utiliser l attribut alt. Les coordonnées du clic sont passés au server sous la forme name.x et name.y problème d accéssibilité : navigateur non graphique, clic difficile, etc. à remplacer par plusieurs boutons submit ou par des scripts côtés client. reset (bouton). button : bouton sans comportement prédéfini (script) hidden : champs caché (parfois utile pour passer une valeur masquée) file : sélection d un fichier + type html 5 : date, email, etc.

BALISES DE FORMULAIRE : INPUT Balise vide Attributs type name : nom de contrôle (très important) value (valeur initiale ou libellé) : optionnel sauf pour radio et checkbox size (en pixel sauf pour text et password où c est un nombre de caractère) maxlength : pour text ou password : nombre de caractères maximum checked : pour radio et checkbox src : pour image : la source (ne pas oublier alt)

BALISES DE FORMULAIRE : SELECT select : menu ( optgroup option )+ attributs name : nom de contrôle size (nombre) : nombre d éléments visibles pour une scroll list multiple (pas de valeur) : permet la sélection multiple option #pcdata (texte) attributs selected : pour présélectionner l élément value (texte) : pour donner une valeur autre que le texte (#pcdata) label (texte) : pour faire apparaître un autre nom (plus court) à la charge du navigateur!! (pas sûr que cela fonctionne!!) optgroup regrouper les options : (option)+ attribut : label (texte) : libellé

BALISES DE FORMULAIRE : TEXTAREA Champs d entrée sur plusieurs lignes textarea #PCDATA : texte initiale Attributs name : nom de contrôle cols : nombre de colonne rows : nombre de ligne

BALISES DE FORMULAIRE : LABEL Permet d associer un texte à un élément de formulaire sans texte inline Start tag: required, End tag: required Attaché par l attribut for Valeur = id d un champ de contrôle

EXEMPLE DE FORMULAIRE <form action="" method="post" id="ajouterarticle" style="float: left;margin right: 2em;"> <fieldset> <legend>ajouter une news</legend> <select name="categorie"> <option value='france' >france</option> <option value='monde' >monde</option> <option value='politique' >politique</option> <option value='sports' >sports</option> </select><br /> <label for="titre">titre : </label><input type="text" name="titre" value='' /><br /> <label for="auteur">auteur : </label><input type="text" name="auteur" value='' /><br /> <label for="texte">texte : </label><textarea name="texte"></textarea ><br /> <input type="submit" /></fieldset> </form>

FORMULAIRES : RÉCEPTION EN PHP Page qui reçoit le formulaire : attribut «action» du form Valeur(s) accessible(s) par : - tableau associatif : index est l attribut «name» de l input $_POST ou $_GET sont des «superglobales» Un peu de sécurité trim(htmlspecialchars(addslashes( ) ) ) str_replace pour remplacer des caractères «spéciaux» Tests complémentaires Les valeurs peuvent être des tableaux (si le name de l input est du style nom[]

EXEMPLE DE RÉCEPTION DE FORMULAIRE // si toutes les valeurs du formulaires sont bien présentes if (isset($_post["titre"],$_post["auteur"],$_post["texte"],$_post["categorie"])) { // et si elles sont toutes remplies avec quelques choses if ($_POST["titre"] && $_POST["auteur"] && $_POST["texte"] && $_POST["categorie"]) { // on prépare le contenu de la nouvelle / article $article = trim($_post["titre"]). "\n"; $article.= trim($_post["auteur"]). "\n"; $article.= trim($_post["texte"]) ; // il faut déterminer un nom de fichier $nomfichier = "news/".$_post["categorie"]."/".$_post["titre"].".news"; // si le fichier n existe pas... if (! file_exists($nomfichier) ) { //... il est créé file_put_contents($nomfichier, $article); } } }