Création de Sites Introduction PHP EEMI, Ecole Européenne des Métiers de l Internet Par Philippe Giraud philippe.giraud@enseignant-eemi.com
Introduction
PHP PHP Hypertext Preprocessor Un langage de programmation Variables, opérations, tests Un langage de script Intégré dans un autre langage (HTML) Un langage orienté objet Une façon de «modéliser» les données et les traitements
PHP Un langage interprété Au moment de l exécution, grâce à un interpréteur Par rapport à : Langage compilé Traduit préalablement en code machine (ex: CGI en C) Langage «pré-compilé» Traduit dans un code intermédiaire (ex: Java) Avec une «machine virtuelle»
Pour faire quoi? Faire des traitements sur le serveur : Traitement des informations saisies par les utilisateurs Calculs et opérations Traitement des données «Dynamisme (serveur)» dans les pages Accès aux bases de données Requêtes SQL
Comment ça marche Un langage «serveur» Code inclus dans la page html Exécuté sur le serveur Avant que la page ne soit envoyée N accède pas aux éléments de la page, mais peut les créer
Historique 1994 : Création du langage par Rasmus Lerdorf Pour faire son CV (Personal Home Page) 1995 : Il publie son code 1997 : Audi Gutmans et Zeev Suraski réécrive le moteur Zend Engine initialise la version 4 de PHP 2004 : version 5, amélioration des aspects «objets» Version actuelle : 5.4 depuis le 1 er Mars 2012 (béta 5.5)
Concurrents Concurrents historiques : SSI : Server Side Include CGI : Common Gateway Interface Concurrents actuels : ASP : langage de script équivalent chez Microsoft JSP : Java Server Pages (Serveur JEE) Ruby, Python, et d autres
Environnement serveur
Besoins coté serveur Serveur Web Pour envoyer les fichiers suite à une requête Serveur applicatif Pour exécuter les programmes sur le serveur Donc pour le PHP Serveur base de données Pour stocker les données Fournir un langage d accès aux données (SQL)
Architecture globale : Poste client Poste serveur Réponse Client Mail Serv. Mail Client FTP Plugins Internet Serv. FTP Serv. BD Serv. Applicatif Data JS Navigateur Serveur Web OS Requête OS
Besoins coté serveur Serveur Web Apache (Open Source) / IIS (Microsoft) Serveur applicatif PHP (Open Source) / ASP (Microsoft) Serveur base de données MySQL (Open Source) / SQL Server (Microsoft)
Packages Open Source LAMP (Linux/Apache/MySQL/Php) Pour une plateforme d exploitation Sécurité, administration, paramétrage Wamp, Xamp, EasyPHP, et d autres Packages autoinstallables avec des versions allégées Pour des développements et tests sur Windows Mamp Idem sur Mac
Offres des hébergeurs Serveur mutualisé Partage d un serveur par beaucoup de sites Ressources et paramétrages partagés Serveur privé Partage d un serveur par quelques sites Plus de ressources, liberté de paramétrage
Offres des hébergeurs Serveur dédié Serveur réservé pour un site (ou une entreprise) Plus de puissance, liberté totale de configuration Multiserveurs Groupe de serveurs se répartissant la charge Pour les gros projets Complexité du dimensionnement
Hébergement EEMI Serveur dédié chez OVH, mutualisé pour les étudiants Zone d hébergement Accès par FTP 1 base de donnée avec PhpMyAdmin Des statistiques de mesure d audience (à vérifier) Manipulation à faire : Vérifiez vos codes FTP avec Filezilla Mettez vos TPs en ligne Accédez à PhpMyAdmin et aux statistiques
Hébergements gratuits Accès gratuit chez Free : https://subscribe.free.fr/accesgratuit/ Accès RTC, 10 Go de stockage et MySQL Pas très rapide, PHP old, Mais sans aucune contrepartie publicitaire Hébergement gratuit aux US : A vous de chercher
Test du serveur
Hello World! Un premier test incontournable! Balises de script : <?php?> Une instruction de base : echo Extension du fichier :.php Etape0.html
Config du serveur Une fonction pour afficher les paramètres du serveur Et donc vérifier s il fonctionne! Etape0.html
Echo Avec parenthèses ou sans Plusieurs paramètres Avec des concaténations Etape0.html
Commentaires Comme en JavaScript : // pour une ligne /* */ pour plusieurs lignes Remarque : Les commentaires n apparaissent pas dans le source html Pas de problème de confidentialité des commentaires
Segmenter la page en morceaux réutilisables
Include / require Certaines zones sont identiques dans plusieurs pages Header, Footer, Sidebar On peut copier/coller le code dans les pages Mauvais en termes d évolution et de maintenance Comme en CSS ou en JS : On sort le contenu dans un fichier, puis on l appelle : Include : avec génération de warning en cas de problème Require : avec génération d erreur en cas de problème w3schools.com
Include / require Etape1.php
Mini TP 4 Sur le template proposé : Découpez le site en 3 parties : Accueil Photos Contact Créez un Header et un Footer
Variables, Fonctions, et constantes
Variables et paramètres Syntaxe : Une variable est déclarée avec $ Une variable déclarée en dehors d une fonction est globale Une variable déclarée dans une fonction est locale Les paramètres des fonctions sont vus comme des locales w3schools.com
Fonctions Le principe est identique en PHP et en JS : Une fonction permet de définir un programme réutilisable On peut lui passer des valeurs (paramètres) Elle peut rendre un résultat (retour) On lui donne un nom (qui n est pas réservé ) w3schools.com
Fonction en JS Exemple dans le cours JavaScript : Etape2_JS.html
Fonction en PHP Equivalent en PHP : Etape2_PHP.php
Erreurs de code PHP Problème : Une erreur de syntaxe «bloque» l interprétation de la page Solution : Exemple : enlever $ sur les paramètres de la fonction provoque un affichage de page blanche Vérifier paramétrage du serveur PHP (php.ini) Error_reporting et Display_errors Etape2_ERR.php
Constantes Une constante est comme une variable dont le contenu serait invariable Elle est définie initialement avec une valeur Cela permet de définir des paramètres réutilisables w3schools.com Etape2_PHP.php
Les boucles
Boucle While Une boucle permet de répéter un bloc d instructions Dans la syntaxe nous avons : Une condition de sortie Il faut donc, avant : Initialiser les variables utiles Et à chaque tour : Faire varier certaines valeurs w3schools.com
Boucle While Principe algorithmique : Début Tant que condition est vraie Répéter Fin» Opération(s) w3schools.com
Boucle While Début Valeur = x, Résultat = 1 Mais qu est-ce donc? Tant que Valeur > 0» Résultat = Résultat * Valeur» Décrémenter Valeur Répéter Afficher Résultat Fin w3schools.com
Boucle While Exemple calcul de Factorielle : Petit rappel w3schools.com Etape3.php
Boucle For Une boucle permet de répéter un bloc d instructions Dans la syntaxe nous avons : Une condition de départ Une condition de sortie Une variation (à chaque tour de la boucle) w3schools.com
Boucle For Principe algorithmique : Début Indice = valeur1, Max = valeur2 Tant que Indice < Max Répéter Fin» Opération(s)» Incrémenter indice w3schools.com
Boucle For Début Taille = x, i = 1 Mais qu est-ce donc? Tant que i <= Taille Répéter» J = 1» Tant que j <= Taille» Afficher i * j» Incrémenter j» Répéter» Incrémenter i Fin w3schools.com
Boucle For Exemple Table de multiplication : w3schools.com Etape3.php
Mini TP 5 Sur le code du fichier précédent (Etape3.php) : Finalisez l affichage de la table de multiplication Présentez le résultat dans un tableau Ajouter les valeurs en ligne et en colonne Appelez plusieurs fois la fonction avec des tailles différentes Sortez la fonction dans un include 1 2 3 1 3 2 4 3 9 Mini_TP5.php
Les tests
Test If Else Syntaxe équivalente au JavaScript w3schools.com Etape3.php
Passage de paramètres
Principes Les variables n existent qu à l intérieur d une page Pour conserver des informations entre plusieurs pages : Passage de valeurs par l URL Stockage local avec de cookies Stockage serveur avec les sessions Enregistrement en base de données
Passage par URL Les valeurs sont ajoutées à l URL Avec le caractère :? En les séparant par le caractère : & Exemple : http://www.mondomaine.com/page.php?val1=x&val2=y Elles sont récupérées dans un tableau de valeur $_GET[nom_de_paramètre]
Passage par URL Etape4.php Etape4bis.php w3schools.com
Rappel d une page Une page peut s appeler elle-même En passant des paramètres Il faut un test pour savoir si : On est sur un premier appel (pas de paramètres) Ou bien un rappel (avec des paramètres)
Rappel d une page Etape5.php
Mini TP 6 Sur la page contact.php du template : Vérifiez le passage de valeurs lors de l envoi du formulaire Testez les méthodes GET et POST Prévoir le rappel de la page Affichez temporairement un message Avant d utiliser la base de données
Bibliographie/Webographie Certains contenus, concepts ou schémas de ce document sont extraits des sites et livres ci-dessous : http://www.w3schools.com/ http://www.siteduzero.com/ http://www.php.net
Merci pour votre attention! Philippe Giraud Mail : philippe.giraud@enseignant-eemi.com Youtube : http://www.youtube.com/user/cogitube Twitter : @cogitium