PHP et éléphant, pourquoi? Tout le monde aime ce gentil animal Il rend bien des services à l'homme Il est puissant et en même temps docile Il est rapide quand il attaque (les bases de données) Les lettres PHP forment un éléphpant Source : http://vpontier.free.fr Pour développer du PHP, nous avons besoin de 3 outils : PHP, MySQL et APACHE Le langage PHP, do you speak PHP? C'est un langage de programmation spécifique à l'utilisation de bases de données sur le web. Cela évite de passer par des langages autrement plus difficile comme Perl ou C++... PHP est un langage de script côté serveur multi-plateforme et il s'intègre parfaitement dans le code HTML y compris en utilisant des éditeurs de pages web (Dreamweaver...). Les différentes versions de PHP sont des améliorations de la version précédente ; un peu comme le HTML Ce langage fait la place belle aux sites dynamiques (le HTML est considéré comme statique). Applications et points communs : interface serveur SGBD ; administration de site ; sécurisation des pages ; forum ; sondage ; moteur de recherche...et plein d'autres applications à http://www.phpscripts-fr.net/ MySQL, Késako? Système de gestion de bases de données orienté vers le web. Il en existe d'autres mais il se trouve que MySQL reste la plus simple et la plus diffusée donc la plus accessibles (FAQ, forums...). Le langage de requête est SQL APACHE, Hugh! C'est un serveur page web que l'on peut installer sur son ordinateur. En gros, cela vous permet de tester vos scripts en local. Utile. Un autre avantage : il convient tant à des P II qu'à des 486. 1
PHP et les autres... Voici pour vous aider différents langages employés sur le web et leur rapport à la notion de client serveur. L'emploi de ces langages dépend évidemment des applications que vous voulez en faire. Côté Serveur PHP, ASP (Active Server Pages), JSP, CFM Côté Client HTML, Javascript, Java Comme vous le remarquez, ASP et PHP sont dans la même cellule, et si c'était des conccurents? ;-) Ces 2 langages de script interrogent le serveur pour générer des pages au format HTML. Compatibilité Les 2 langages sont compatibles avec les différents navigateurs du marché. La notion de compatibilité intervient surtout au niveau serveur (voir cf : ASP). Quel langage parlez-vous? (Résumé de l'article de Login du mois de Juin 2001 pour un comparatif de langages de développement de scripts) ASP Depuis peu, le langage ASP, propriétaire et développé par Microsoft, est compatible avec les serveurs UNIX, il était réservé aux serveurs Windows NT. Sites : http://www.asp-irine.com/ ; http://www.asp-fr.net/default.asp ; http://www.aspmagazine.com/ ; http://www.allhtml.com/langages/asp.php3 ; http://www.lbb.org/script/asp/ ; http://www.microsoft.com/france/msdn/technologies/asp/default.asp JSP Sun et Script. Encore peu accessible et peu rapide, ce langage de script, JSP, repose sur Java fait pourtant espérer à Sun une place de choix. Sites : http://www.trucsweb.com/java/ ; http://www.lbb.org/script/jsp/ ; http://tecfa.unige.ch/guides/tie/html/java-jsp/java-jsp.html ; http://www.javaside.com/asp/mfr.asp?page=/fr/servlet/jsp.shtml ; http://www.commentcamarche.net/ ; CFM Langage développé par Cold Fusion. Langage de script assez simple à appréhender mais ses performances (par rapport au PHP et son peix sont à son désavantage). Sites : http://www.lbb.org/script/cfm/ ; http://support.alphamedia.fr/doc_support/default.cfm?c_company=1&id_product=3 http://www.alphamedia.fr/products/allaire/coldfusion.cfm PHP Langage développé en 1994 (premier script) par Rasmus Lerdorf. Langage de plus en plus accessible, avantageux par son prix, ses solutions logicielles et ses applications. Sites : http://www.lbb.org/script/php/ ; http://www.commentcamarche.net/ ; http://vpontier.free.fr ; http://www.phpscripts-fr.net/ ; http://www.phpscripts-fr.net/?page=presentation-php ; http://ganesha.free.fr 2
Cas concrets A) premiers exemples en PHP (hello world, phpinfo(), bonjour...) B) cas d une page accessible par identifiant et mot de passe C) rappel de la création d'un formulaire en HTML et récupération des données du formulaire sur email. D) création d'un formulaire et récupération des données par la fonction mail() / PHP 3
A) Etant donné que PHP est un langage côté serveur, les instructions incluses dans un fichier ne se verront pas côté client. Exemple 1 Exemple 2 <head> <head> <title>hello world</title> <title>phpinfo</title> </head> </head> <body> <body> <?php <?php echo "hello world"; phpinfo(); Copiez-collez ce code dans notepad, enregistrez et donnez le nom hello.php et ouvrez ce fichier dans le navigateur Remarque <?php commence le script ferme le script echo appelle un le contenu Les encadrent le contenu appelé le ; se place à la fin de chaque instruction Autre exemple 2 fichiers : test.html et test.php3 Récupérer des données d'un formulaire dans un fichier test.html test.php3 <body bgcolor="#ffffff" text="#000000"> <!-- ici le début du formulaire : lse données ($variable) du formulaire sont traitées par test.php - -> <br>bonjour, quel est ton nom? <FORM type="post" action="test.php3"> <input type="text" name="mavariable" value="toto"> <input type="submit" value="ok"> </form> <head> <title>bonjour nono</title> </head> <body> <?php echo "bonjour ".$mavariable; 4
B) Accéder à une page protégée par un identifiant et un mot de passe. Il nous faut 3 fichiers. Identifier.htm extranet.php beatep (nom du fichier = identifiant) fichier contient en clair le mot de passe Voici identifier.htm <body bgcolor="#ffffff"> <form method="post" action="extranet.php3"> <p>identifiant? <input type="text" name="id"> Mot de passe? <input type="password" name="passw"> </p> <p> <input type="submit" name="submit" value="envoyer"> </p> </form> Remarque <Form> marque la création d'un formulaire (nous sommes toujours en HTML). Method= post marque l'envoi de données vers action= extranet.php3 > Accéder à cette page <input type= text name= id >champ de type texte ; id est le nom du champ <input type= password name= passw > champ de type password ; passw est le nom du champ et le contenu est crypté. Voici extranet.php3 <body bgcolor="white" text="black"><? function pass($id) { $fp = fopen ("$id", "r"); if (!$fp) { echo "désolé, votre identification n'est pas correcte </p> <A href=\"identifier.htm\"> recommencer /A>" ; exit ; } $password = fgets ($fp, 4096); fclose ($fp); return $password ; } <p> </p><? if ($passw!= pass($id)) { echo "désolé, votre identification n'est pas correcte </p> <A href=\"identifier.htm\"> recommencer /A>" ; exit ;} <br>bonjour et bienvenue sur la page réservée aux membres du beatep animateur multimédia 2001. Remarque Cette partie du script concerne l'identifiant. Id est traitée comme une variable $ fopen ouvre en lecture seule ( r ) Si l'identifiant n'est pas correcte ; retour à la page identifier.htm </a> boucle le lien ; boucle l'instruction ferme le script 5
C) Nous avons besoin ici d'un formulaire en HTML. Les données de ce formulaire seront renvoyées par email. Voici le fichier form1.html <body bgcolor="#ffffff" text="#000000"> <!-- ici le début du formulaire avec la ligne qui envera le resultat à l'adresse e-mail correspondant à la page free l'hebergeant --> <FORM METHOD=POST ENCTYPE="text/plain" ACTION="mailto:garciaweb@free.fr"> <!--les données seront envoyées (post) par email (action...) sur garciaweb@free.fr en mode texte (enctype= text/plain --> <br><center><b>qui êtes-vous?</b></center> <br>titre de civilité <br><input type= radio name= titre value= madame checked>madame <input type= radio name= titre value= mademoiselle >Mademoiselle <input type= radio name= titre value= monsieur >Monsieur <!-- value= titre : titre est la valeur donnée par défaut --> <!-- la valeur name= titre... servent à identifier les données (savoir quelles données correspondent à quels champs) que vous recevrez par email ; vous aurez ainsi titre=monsieur ; nom=garcia... --> <br>nom Prénom <input type="text" name="nomprenom" value="" size=40> <br>adresse email <input type="text" name="email" value="" size=40> <br>profession <br><select name= profession > <option selected>animateur</option> <option>formateur</option> <option>professeur</option> </select> <!-- option selected : sélectionne par defaut une valeur --> <br>vos commentaires <br><textarea name="comments" cols="50" rows="10" wrap="virtual"></textarea> <br><input type="reset" name="reset" value="effacer"> <input type="submit" name="ok" value=" OK!"> </form> <!-- ici la fin du formulaire Résumé : name=text : champ de type text ; name=password : champ de type crypté ; name=checkbox : champ de type case à cocher ; name=radio : champ de type bouton radio ; <textarea name comments : champ de type texte rallongé ; <select name...><option> : liste déroulante--> 6
D) Nous avons besoin ici de 2 fichiers envoimail.html (formulaire en HTML) faisant appel à envoimail.php3 pour traiter sa requête et récupérer les données par email. Cela évite, comme précédemment de faire appel à son logiciel de messagerie. Voici envoimail.html <body> <FORM METHOD="post" ACTION="envoimail.php3" NAME="formulaire"> Adresse E-mail de l'expéditeur <INPUT TYPE="text" NAME="email1" SIZE=30 MAXLENGTH=50> Adresse E-mail du destinataire <INPUT TYPE="text" NAME="email2" SIZE=30 MAXLENGTH=50> Titre du message <INPUT TYPE="text" NAME="titre" SIZE=30 MAXLENGTH=50> Message <TEXTAREA NAME="message" COLS=30 ROWS=6 WRAP="SOFT"> </TEXTAREA> <input type="reset" name="reset" value="effacer"> <input type="submit" name="ok" value="ok!"> </FORM> Voici maintenant envoimail.php3 <HTML> <BODY BGCOLOR="#FFFFFF"> <? $headers="from: ".$email1; mail($email2,$titre,$message,$headers); </BODY> </HTML> Commentaires <? ouvre le script $ est attaché à la variable $headers (entête du message) = from : ".$email1; (expéditeur) fonction mail($nomchamp1 (name),$nomchamp2,$nomchamp3...); ; ferme l'instruction ferme le script Commentaires Les données saisies dans envoimail.html seront traitées par envoimail.php3 et renvoyées sur l'email du compte auquel il est rattaché. 7
Les packages PHP, MySQL et Apache EasyPHP disponible sur http://www.easyphp.org Easyphp1.1.exe (détail de l'installation sur http://www.manucorp.com/easyphp.php3) QuickPHP disponible sur http://www.phpinfo.net/?p=fichiers&rub=packages et d'autres packages... Où abriter votre éléphant et votre base de données? Voici une liste d'hébergeurs qui abriteront vos scripts (PHP) et votre base de données (MySQL) http://www.free.fr http://www.nexen.net http://www.forez.com http://www.citeglobe.com/ Bibliographie Programmation en PHP L. Artkinson Editions Campus Press 464 pages 199 FF Syntaxe du langage et revue des fonctions, le tout illustré. Ce qui en fait un bon ouvrage pour les débutants. PHP précis et concis R. Lerdorf Editions O Reilly 114 pages 50 FF Un bon ouvrage pour débuter (bases du langage, fonctions) 8
Grand Livre PHP4 & MySQL G. Leirer R. Stoll Editions Micro Application 480 pages Accompagné d'un CDRom 209 FF Nombreux exemples traitant de PHP et de MySQL. (Source : www.phpindex.com) Programmation Web en PHP L. Lacroix... Editions Eyrolles 364 pages Accompagné d'un CDRom (théoriquement) 230 FF Structure du langage, exemples, accès aux bases de données... Pratique de MySQL et PHP Philippe Rigaux Editions de O Reilly 370 pages 190 FF Un bon ouvrage pour aborder, de manière accessible, les bases du langage, la syntaxe, le developpement en PHP et la connectivité avec une base de données. N.B : un ouvrage que j'ai consulté et disponible auprès de Henri. Hors-série Login http://www.horsserielogin.com Mois de Juin : Spécial PHP Un CDRom accompagne ce hors-série contenant scripts prêts à l'emploi, les serveurs (Apache...), packages, MySQL... (Source : ouvrages consultés ou acquis en librairie ou en point presse) Rédaction du document : Bruno garciaweb@yahoo.fr Soutien technique : Henri henri.gabolde@laposte.net 9