Vous êtes sur la page 1sur 6

Introduction

PHP est un langage de script qui permet de crer des pages Web dynamiques Ces pages sont des pages HTML classiques, mais qui peuvent contenir du code PHP
<HTML> <HEAD> <TITLE>Test de l'outil PHP</TITLE> </HEAD> <BODY> <?php echo "Salut les amis !"; ?> </BODY> </HTML>

Syntaxe du langage assez semblable celle du langage C, avec des emprunts Perl et Java

Gnralits

Les pages contenant des ordres PHP se terminent par .php3 Pour debugger : les fichiers .phps sont affichables en couleur (syntax hilighting) Les ordres PHP sont interprts par le serveur PHP peut tre install comme module par Apache et Microsoft Internet Information Server, soit 90% des serveurs du march. Solution la plus performante. PHP peut aussi tre install dans n'importe quel serveur Web sous la forme d'un programme CGI. Dans ce cas toutes les pages contenant des ordres PHP devront tre passe en paramtre l'interprte PHP situ dans le rpertoire /cgi-bin du serveur. Outil gratuit, OpenSource, livr en standard avec la distribution Red Hat Linux Concurrent de l'outil ASP de Microsoft, il existe mme des convertisseurs ASP vers PHP En Juin 1998, 150.000 sites Web utilisaient des pages PHP (sources Netcraft)

Traitement des formulaires HTML

Adieu les CGIs ! Rcuprer les paramtres d'un formulaire HTML est enfantin !
<FORM ACTION="TraiteFormulaire.php3" METHOD="POST"> Votre nom : <INPUT TYPE=TEXT NAME=nom> Votre age : <INPUT TYPE=TEXT NAME=age> <INPUT TYPE=SUBMIT NAME="Ok"> </FORM>

Lorsque on clique sur le bouton Ok de la page Web contenant le formulaire prcdent, la page TraiteFormulaire.php3 est appele. Cette dernire contient des ordres PHP :
... Bonjour <?php echo $nom; ?>, <P> vous avez bien <?php echo $age; ?> ans <BR> cette anne ? ...

Interfaage avec une base de donnes


Interfaage avec une base de donnes hyper simple ! Le point fort de PHP. Supporte indiffremment Oracle, Sybase, mSql, MySQL, Solid, PostgresSQL, dBase, Informix, dbm, etc... en mode natif Supporte galement l'accs toutes les BD qui proposent un pont ODBC Moyen le plus simple ( part Java/JDBC) d'attaquer une BD Microsoft depuis Linux/Unix

Exemple d'utilisation avec MySQL


... mysql_connect($hostname, $username, $password) or die("Connexion impossible"); @mysql_select_db("$dbName") or die("Impossible d'accder la base $dbName"); $query = "SELECT * FROM $usertable WHERE (annee LIKE 'ESSI3'); $result = mysql_query($query); $number = mysql_numrows($result); i = 0; if ($number == 0) { print "<CENTER><P>Il n'y a aucun lve en ESSI3!</CENTER>"; elseif ($number > 0) { $nom = mysql_result($result, $i, "nom"); $email = mysql_result($result, $i, "email"); print "Nom = $nom, email = $email<BR>"; i++; } ...

Authentification HTTP
<?php if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "Texte affich si l'utilisateur appuie sur le bouton Cancel"; exit; } else { echo "Bonjour $PHP_AUTH_USER.<P>"; echo "Vous avez un mot de passe gal $PHP_AUTH_PW.<P>"; } ?>

Tlchargement de fichier avec PHP

Soit le formulaire HTML suivant :

<FORM ENCTYPE="multipart/form-data" ACTION="PageTraiteUpload.php3" METHOD=POST> <INPUT TYPE="HIDDEN" name="MAX_FILE_SIZE" VALUE="1000"> Fichier envoyer : <INPUT NAME="NomFichier" TYPE="FILE"> <INPUT TYPE="SUBMIT" VALUE="Uploader le fichier choisi"> </FORM>

Ce formulaire propose l'utilisateur de slctionner un fichier qu'il dsire uploader sur un site. La page PageTraiteUpload.php3 va se charger du travail

Script de tlchargement
<?php echo "Nom du fichier temporaire o se trouve le fichier ct serveur : $NomFichier<P>"; echo "Nom original du fichier ct client : $NomFichier_name<P>"; echo "Taille du fichier upload : $NomFichier_size<P>"; echo "Type MIME du fichier reu : $NomFichier_type<P>"; /* Copie du fichier stock dans le rpertoire temporaire vers sa destination */ copy($NomFichier, "/u/I3S/buffa/uploads/$NomFichier_name"); ?>

En effet le fichier upload arrive dans le rpertoire temporaire du serveur...

Support pour les cookies


Voir http://www.netscape.com/newsref/std/cookie_spec.html pour tout savoir sur les cookies ! Une page peut installer un cookie par appel la fonction SetCookie() avant qu'elle n'affiche quelque chose sur la sortie standard (les cookies sont dans le HEADER http)
SetCookie("TestCookie", "Test Value"); SetCookie("TestCookie", $value, time()+3600); /* expire dans une heure */

Un cookie envoy par le client sera rcupr sous la forme d'une variable dans la page Web
echo $TestCookie;

Manipulation d'expressions rgulires

Puissantes fonctions de manipulation des expressions rgulires (norme POSIX) : ereg, ereg_replace, eregi, eregi_replace, split
ereg("abc", $string); /* vrai si $string contient abc */ ereg("^abc", $string); /* vrai si abc au dbut de $string */ ereg("abc$", $string); /* vrai si abc la fin de $string */ eregi("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT); /* Vrai si le navigateur utilis est

Netscape 2 ou 3, ou MSIE 3 */ ereg_replace("^", "<BR>", $string); /* insre <BR> au dbut de $string */ ...

Structures de base (1)

Bas sur des expressions, non typ


function double($i) { return $i * 2; } $b = $a = 5; $c = $a++; $e = $d = ++$b; $f = double($d++); $g = double($++e); $h = $g += 10;

Structures de base (2)


if..then..else, do..while, for, while, switch

ressemblent ceux du C,

part que les variables sont non types


for($i = 0; $i < 10; $i++) { echo $i; }

ordres include, require pour insrer du code situ dans un fichier externe :
include('fonctions.inc');

Fonctions (1)

Fonctions standards
function foo($arg1, $arg2, ... $argn) { echo "Exemple de fonction"; return $valeur_retour; }

Fonctions (2)

Fonctions possdant une liste d'aguments (liste d'objets spars par le caractre '.'), passage de paramtres par valeur, par rfrence
// Passage de paramtres par rfrence function foo2(&$arg) { $arg .= " et voici la fin de la phrase..."; }

// Passage de paramtres par valeur function foo3($arg) { $arg .= " et voici la fin de la phrase..."; } $str = "Ceci est le dbut de la phrase"; foo3($str); echo $str; // Affiche "Ceci est le dbut de la phrase" foo2($str); echo $str; // Affiche "Ceci est le dbut de la phrase et voici la fin de la phrase"

PHP orient objet ???

Une classe est une collection de variable et de fonctions, un peu comme dans les langages par objets
<?php class caddie { var $item; // tableau des item que l'on a dans le caddie // Ajoute $num articles de type $article_number au caddie function add_item($article_number, $num) { $this->items[$article_number] += $num; } } ?> $monCaddie = new caddie; $monCaddie->add_item("14", 2); // Ajoute deux articles de type 14 mon caddie

Fonctions prdfinies (1)


API incroyablement riche !!!! (527 pages le rfrence manual). On distingue plusieurs groupes de fonctions prdfinies

Fonctions de manipulation de chanes de caractres : AddSlashes, Chop, crypt, explode, htmlspecialchars, htmlentities, QuoteMetan rawurldecode, print, printf, sprintf, etc... 50 fonctions ! Fonctions de manipulation de variables : gettype, is_array, is_double, empty, doubleval, etc... Fonctions de manipulation de tableaux et listes : array, array_walk, key, list, key, ksort, asort... Fonctions de manipulation de dates, heures, calendriers : date, checkdate, gmdate, getdate, time, etc... API trs riche ! Fonctions mathmatiques : sin, cos, sqr, sqrt, number_format Fonctions de gestion des expressions rgulires : ereg, eregi, ereg_replace, eregi_replace, split

Fonctions prdfinies (2)

Fonctions de gestion des URLs : parse_url, urldecode, urlencode, etc... Les fonctions spcifiques au serveur Apache : apache_lookup_uri, etc... Fonctions de manipulation de fichiers et rpertoires : dir, chdir, opendir, etc... copy, rename, chmod, chgrp, fopen, fclose, fgetc, fgets... Fonctions de gestion de processus externes : system, exec, etc... Fonctions relatives aux Bases de Donnes. Classes par type de BD supporte : dBase, dbm, MiniSQL, MySQL, Oracle... plus ODBC Fonctions HTTP : setcookie, header

Fonctions prdfinies (3)


Fonctions de gestion/manipulation/gnration d'images : ImageCreate, ImageColorTransparent, etc... API trs riche. Possibilit de gnrer des boutons au vol avec surimpression de texte, etc... Fonctions mail : mail pour envoyer un mail plus gestion complte du protocole IMAP, API de 50 fonctions... Fonctions propres PHP et sa configuration : error_log, get_cfg_var, get_current_user, phpinfo, etc... Fonctions diverses : eval, exit, serialize, unserialize, sleep, etc... Fonctions rseau : fsockopen, gethostbyaddr, gethostbyname, etc... Fonctions de support pourle format PDF : gnration de fichiers PDF au vol : PDF_open, PDF_close, PDF_end_page, etc.. 60 fonctions ! Fonctions de gestion du protocole SNMP Fonctions de compression/decompression : support pour gzip : gzope, gzread, etc... Fonctions de support pour le langage XML : le parsing est implemente, mais pas la validation...