Vous êtes sur la page 1sur 45

Sites web dynamiques avec PHP

Qu'est-ce que PHP ?





Annie Danzart




Annie.Danzart@enst.fr
http://www.infres.enst.fr/~danzart/php/
http://www.infres.enst.fr/~danzart/php/exemples/


Plan

Historique
Fonctionnement
Script php
Variables, oprateurs
Tableaux
Fonctions
Conditionnelles, boucles
Les Objets
Fichiers inclus

Cration de Formulaires
Manipulation de chiers
Manipulation dImages
Utilisation de Cookies
Les Sessions
Variables denvironnement
Envoi de Mail
Tlchargement de chiers

Qu'est-ce que PHP ?

1994 : Rasmus Lerdorf, Personnal Home Pages









Pre Hypertext Processor

Langage de scripting trait par le serveur, orient web


Module mod_php d'Apache
Gratuit, libre de droits (license GNU GPL)
Nombreuses extensions (sgbd, ldap, gif, pdf, smtp, )
Syntaxe proche de celle de C, Java, Perl
Comparable ASP, asp2php
Extensible
Des milliers de sites de par le monde

3

Versions 3, 4, 5, 6 ?

Comment a marche ? affichage sans serveur


file:///infres.enst.fr/~danzart/exemple.html

Poste client
firefox

Javascript
3

Le navigateur affiche les pages html


1 2

Serveur de fichiers
perso.enst.fr

Il est capable dinterprter des scripts javascript

~danzart/public_html/exemple.html
4

Comment a marche ? utilisation dun serveur


http://www.infres.enst.fr/~danzart/exemple.html

Poste client
firefox

Serveur Apache
www.infres.enst.fr

1 httpd 4

Serveur de fichiers
perso.enst.fr

Le serveur reoit la requte et la traite en envoyant au client la page demande

~danzart/public_html/exemple.html
5

Comment a marche ? interprtation dun script


http://www.infres.enst.fr/~danzart/exemple.php

Poste client
firefox

Serveur Apache
www.infres.enst.fr

1 5 4 httpd mod_php5

Serveur de fichiers
perso.enst.fr

Le serveur passe le fichier au module php avant de le retourner au client

~danzart/public_html/exemple.php
6

http://www.infres.enst.fr/~danzart/exemple2.php

Comment a marche ? Les bases de donnes 


Serveur Apache
www.infres.enst.fr

Poste client
firefox

1 8 47 httpd mod_php5

Serveur de fichiers
perso.enst.fr

Serveur Mysql
mysql.infres.enst.fr

mysqld bases ~danzart/public_html/exemple2.php


7

Les scripts, les variables


Page html, extension du chier
- Formulation des scripts

Environnement, rsultat
- !Variables, types des variables, constantes

Page php Une page html Des scripts php. Lensemble des scripts dune page utilise le mme contexte Chaque script peut gnrer du code html qui sintgre sa place Lextension de la page doit tre php, ou php3, phtml, php4, php5 sinon le serveur ne sait pas quil doit interprter des scripts

Les scripts, les variables


Page html, extension du chier
- Formulation des scripts

Environnement, rsultat
-
Variables, types des variables, constantes


<?php ?>
<? ?>
<script language="php"> </script>
<%php %>
<?=$nom?>


Ecriture la plus standard
Encore trs utilise.
A la Javascript
Compatible avec ASP
Ecriture raccourcie, pas toujours correctement interprte

Les scripts, les variables


Page html, extension du chier
- Formulation des scripts

Environnement, rsultat
-
Variables, types des variables, constantes

<html>!
<head><title>Bienvenue</title>! </head>! <body>! <?php ! // commentaire! $nom="Martin";! ?>! <h1 align="center"> Bonjour ! <?php echo $nom; ?> </h1><br>! Il est <?php echo date("H:i"); ?> <br>! </body>! </html>!




Exemple : http://www.infres.enst.fr/~danzart/ php/exemples/scripts_test.php


Remarque : la fonction date :

http://www.infres.enst.fr/~danzart/php/ phpplus.php%23dates

10

Les scripts, les variables


Page html, extension du chier
- Formulation des scripts

Environnement, rsultat
-
Variables, types de variables, constantes

Types de base: entiers, rels, chanes de caractres Tableaux, tableaux associatifs Objets Les noms de variables commencent par le caractre $ php est sensible la casse Un nom peut commencer par une lettre ou un _ Il peut comporter des caractres, des chiffres et _ Les variables ne sont pas types, nont pas besoin dtre dclares Elles ont une valeur par dfaut qui dpend du contexte dutilisation
11

Les scripts, les variables


Page html, extension du chier
- Formulation des scripts

Environnement, rsultat
-
Constantes, variables, types de variables

<html>! <head><title>Bienvenue</title>! </head>! <body>! <?php ! // dfinition dune constante! define("Salut","Bonjour a tous<br />");! echo "<font color=\"red\">";! printf("Hello ! ".Salut);! ?>! </font></body>! </html>!




Exemple: http://www.infres.enst.fr/ ~danzart/php/exemples/ commentaires_test.php


Remarques:
- loprateur . de concatnation
- insertion de balises html
- chappement de caractres

12

Les variables
Affectation dune valeur

Oprateurs arithmtiques, logiques
$chaine = "0"; // chane "0" (ASCII 48)! $nombre = 0;! $nombre++; // nombre 1 (entier)! $nombre+=1; // entier (2)! $nombre = $nombre + 1.3; ! // rel (3.3)! $nombre = 5 + "3 petits cochons"; ! // entier (8 !) effet de bord! $nombre = (int)"3 petits cochons"; ! // 3 : conversion en entier! !
- Tests sur les variables


- Rfrence, drfrencement
! Simple et double quote
Chane dynamique
! $val = 'Rusti';! echo "Hello $val"; // Hello Rusti! echo 'Hello $val'; ! // Hello $val! !
Exemple: http://www.infres.enst.fr/~danzart/php/ exemples/variables_test.php

13

Les variables
Affectation dune valeur

Oprateurs arithmtiques, logiques

- Tests sur les variables


- Rfrence, drfrencement

isset($a): ! unset($a):

teste si la variable est dfinie. (0=non, 1=oui) supprime la variable et dsalloue la mmoire utilise

gettype($a):retourne le type de la variable string, integer, double, array, object! string si la variable n'est pas dfinie is_double, is_string, is_int, is_float,is_object :!

testent le type de la variable!

14

Les variables
Affectation dune valeur

Oprateurs arithmtiques, logiques

- Tests sur les variables


- Rfrence, drfrencement

Arithmtiques!
$a + $a * $a % $a++ $b-! $b - $c !! $b / $c !! $b !! !Incrment de 1
!Dcrment de 1

Concatnation!
$chaine="votre nom est ".$val;! !

Logiques!

not, !, &&, , AND, XOR, OR! ! rque : prcdence de or sur ! $a = foo() bar() or die();!

Assignation de valeur!
=, +=, -=, *=, /=, %=, .=! !

Binaires bitwise!
&, , ^, ~, >>, <<, -!

Comparaison entre expressions!


==, !=, <, >, <=, >=! ! !

Autres!
@ : contrle d'erreur
? : oprateur ternaire

15

Les variables
Affectation dune valeur

Oprateurs arithmtiques, logiques

- Tests sur les variables


- Rfrence, drfrencement


Cration de variables dynamiques dont on ne connat pas le nom a priori.



Exemple: http:// www.infres.enst.fr/~danzart/php/ exemples/reference_test.php

<html>! !<head><title>Bienvenue</title>! !</head>! <body>! <?php ! // on rcupre les valeurs transmises! $var =$_GET["fruit"]; //pommes! $nombre=$_GET["nombre"];! // cration de la variable $pommes! $$var=$nombre;! // affichage du rsultat! echo "Votre commande: $$var." ".$var." <br>";! ?>! </body>! </html>!

16

Les tableaux
Tableaux, tableaux dynamiques
Parcours
$fruits[0]= "pomme";! $fruits[1]= "banane";! ! $fruits[] = "orange"; ! // quivaut a! $fruits[2]= "orange"! ! $fruits= array(0=> "pomme", 1=>"banane",2=> "orange" );! ! $fruits= array( "pomme", "banane", "orange" );! ! !


- Fonctions sur les tableaux

- Tableaux associatifs
A priori, les indices commencent 0.
Pas besoin de dclarer la dimension ni le type des valeurs.
Si on ne donne pas dindice, lindice pris en compte sera celui qui suit la valeur la plus haute (0 si rien na encore t mis).
Linitialisation peut se faire en bloc, en prcisant ou non les indices.

Les tableaux dynamiques sont trs utiles lors de lutilisation de champs de type checkbox dans un formulaire.

Exemple : http://www.infres.enst.fr/~danzart/php/ exemples/tableaux_test.php

17

Les tableaux
Tableaux, tableaux dynamiques
Parcours



- Fonctions sur les tableaux

- Tableaux associatifs

sizeof($t) = !count($t) ! Taille dun tableau


is_array($t) !! Est-ce un tableau ?
reset($t) end($t) !current($t) ! Positionnement dans un tableau : reprsent par une liste de doublets next($t) !prev($t)! (indice,valeur)
!
! Tri ascendant, descendant sur la valeur, sort, rsort, ksort, krsort, sur la cl, avec une fonction utilisateur
usort! Mlange alatoire
shuffle($t)! Calcul des valeurs extrmes
max($t) !min($t)!
! Applique une fonction toutes les valeurs arraywalk($t,"nomfonction")! dun tableau
! !

18

Les tableaux
Tableaux, tableaux dynamiques
Parcours



- Fonctions sur les tableaux

- Tableaux associatifs

$t = array("I","N","F","3","4","7");! Lajout de "\n" dans lafchage introduit un saut la ligne dans le sort($t);! source.
for ($i=0;$i<count($t);$i++)! $a = each($t) renvoie l'index et !echo "t[$i]=".$t[$i]."\n";! la valeur courante dans un tableau 2 ! lments; $a[0] contient l'index, sort($t);! $a[1] la valeur.
reset($t);! while(list($cle,$valeur)= each($t))! list($cle, $valeur, ... ) construit un tableau temporaire partir !echo "t[$cle]=".$t[$cle]."\n";! des variables scalaires passes en ! argument.!

Exemple: http://www.infres.enst.fr/~danzart/ php/exemples/tableaux_fonctions_test.php

19

Les tableaux
Tableaux, tableaux dynamiques
Parcours



- Fonctions sur les tableaux

- Tableaux associatifs
Les indices du tableau sont alors des chanes de caractres qui pourront tre traites en tant que telles.
Lemploi de la fonction each savre importante pour parcourir les tableaux associatifs.
On peut aussi utiliser la boucle foreach.


Exemple:
http://www.infres.enst.fr/~danzart/ php/exemples/ tableaux_associatifs_test.php

20

$mois["Janvier"]= 1;! $mois["Fvrier"]= 2;! $mois[] = ! array("Janvier"=>1,"Fvrier"=>2, "Mars"=>3);! ! while (list($cle,$val) = each($mois))! echo "<br> No de $cle : $val ";! ! foreach ($mois as $cle => $val)! echo "<br> No de $cle : $val ";! ! key($t):index de l'lment courant du tableau
uasort($t,"f_comp"): tri laide dune fonction en gardant les indices associs
!

Les instructions
Instructions conditionnelles foreach
- Boolens

- Boucles

- Ruptures de squence


$jour=date("l");! $mois=date("F");! switch ($mois) {! case "January" : ;break; case "February": ;break; . . . .! case "November": ;break; case "December": ;break;} printf(date(" Y ")); ! ! switch ($mois)! case "January" : ;break;! . . . .! case "December": ;break;! endswitch!

if ($a > $b) {!



echo "a suprieur b";! } elseif ($a == $b) {! echo "a gal b";! } else {! echo "a infrieur b";! }! !
if ($a > $b):! echo "a suprieur b";! elseif ($a == $b) :! echo "a gal b";! else :! echo "a infrieur b";! endif!

21

Les instructions
Instructions conditionnelles foreach
- Boolens

- Boucles

- Ruptures de squence

Oprateurs:



de comparaison entre expressions : ==, !=, <, >, <=, >=! Logiques : not, !, &&, , AND, XOR, OR!
!
Valeurs logiques par dfaut:

Entier
Rel
Chane de caractres
Tableau ou objet
0 0.0 "" Null false false! false! false! ! 0 0.0 "" true! true! true! true! !

Null

22

Les instructions
Instructions conditionnelles
- Boolens

- Boucles
foreach
- Ruptures de squence




<?php! <?php! <?php! $n=28;! $n=28;! $n=28;! ! ! ! for ($I=1;$I<$n;$I++)! while ($I<$n) {! do! {! print("$I,<br>");! {! print("$I,<br>");! $I=$I+1;! print("$I,<br>");! }! }! $I=$I+1;! ! ! }! for ($I=1;$I<$n;$I++):! while ($I<$n) :! while ($I<$n);! print("$I,<br>");! print("$I,<br>");! ! endfor;! $I=$I+1;! ?>!

endwhile;! ?>
?>!
23

Les instructions
Instructions conditionnelles foreach
- Boolens

- Boucles

- Ruptures de squence
<?php ! foreach ($tab as $cle => $val)! {! echo "cl : $cle<br/>\n";! echo "valeur : $val<br/>\n";! }! ?>! est quivalent :
<?php ! reset($tab);! while (list($cle,$val)=each($tab))! {! echo "cl : $cle<br/>\n";! echo "valeur : $val<br/>\n";}! 24
?>!

<?php !



foreach ($tab as $val)! {! echo "valeur : $val<br/>\n";! }! ?>! ! est quivalent :
<?php ! reset($tab);! while (list(,$val)=each($tab))! {! echo "valeur : $val<br/>\n";! }! ?>!

Les instructions
Instructions conditionnelles foreach


- Boolens

- Boucles

- Ruptures de squence

continue :!

arrter l'itration

passer la suivante

!

break [n] :!

arrter l'itration courante

sortir de la boucle courante


(ou des n boucles imbriques)

!

exit() :!

interruption inconditionnelle du script!
!

A utiliser avec modration !!!


25

Les fonctions
Dclaration, valeur de retour Transmission des arguments
- Variables locales/globales/statiques

- Transmission par rfrence

<?php !




function division($n1, $n2)! Un argument vide nest pas forcment
{! un argument absent.
$resultat=$n1/$n2;!
Exemple: http://www.infres.enst.fr/~danzart/php/ return $resultat;! exemples/fonctions_test.php
}! $r=division(15,3);! function division($n1=1, $n2=2)! {! $resultat=$n1/$n2;! return $resultat;! }! $r=division(5);! $r=division(5,8);! ?>!

26

Les fonctions
Dclaration, valeur de retour Transmission des arguments
- Variables locales/globales/statiques

- Transmission par rfrence





Exemple: http://www.infres.enst.fr/~danzart/ php/exemples/fonctions_variables_test.php






Variables locales:
Nexistent que dans le corps de la fonction

Variables globales:
Prcdes du mot cl global! tablissent un lien direct avec des variables dclares lextrieur de la fonction

Variables statiques:
Prcdes du mot-cl static!

27

Les fonctions
Dclaration, valeur de retour Transmission des arguments
- Variables locales/globales/statiques

- Transmission par rfrence



Exemple: http://www.infres.enst.fr/ ~danzart/php/exemples/ fonctions_arguments_test.php






Arguments :
La transmission des variables se fait par valeur

Transmission par rfrence, 2 possibilits :
Soit le nom de la variable est prcd dun & au moment de lappel! Soit le nom de la variable est prcd dun & au moment de la dclaration de la fonction (standard)

Depuis php5, les arguments par dfaut peuvent tre transmis par rfrence

28

Les objets
Dclaration, attributs, mthodes, constructeur, instanciation
Hritage, rednition de mthodes





class sortie {! var $titre="Bonjour";! // constructeur! function sortie($init="Coucou")! { $this->titre=$init; }! ! function debut()! {echo "<html><head>! <title>$this->titre";! echo "</title></head><body>";}! function fin()! {echo "</body></html>";}! }


instanciation et rfrenciation! $a = new sortie("Hello");!
$a->debut();! echo "<p> il est ".date ("H:i")."</p>";! $a->fin();!


Exemple: http://www.infres.enst.fr/~danzart/php/ exemples/classes_test.php

29

Les objets
Dclaration, attributs, mthodes, constructeur, instanciation
Hritage, rednition de mthodes




! class sur_s extends sortie {! instanciation et rfrenciation
function sur_s($titre="coucou")!
{ ! $a = new sur_s("Hello"); ! //constructeur! $a->debut();! parent::sortie($titre);}! $a->prg("il est ".date("H:i"));! ! $a->fin();! function prg($texte)! {!
echo "<p align=center>!
$texte";! echo "</p>";}! ! function debut()! {! parent::debut();! echo "debut de page";! }! ! }

Exemple: http://www.infres.enst.fr/~danzart/php/ exemples/classes_heritage_test.php

30

Les fichiers inclus


include(nomfichier ) :! inclut systmatiquement le chier l'endroit indiqu

require(nomfichier ) :! ne l'inclut que si c'est justi (cas d'une instruction conditionnelle)

include_once(nomfichier ), require_once(nomfichier ):! Ne fera linclusion quune seule fois (cas dappels multiples de bibliothques de fonctions

le chier inclus dbute en html pur ! ! Il faut toujours donner un nom et une extension qui comportent une indication sur :
l'inclusion (inc) : permet de savoir que c'est un chier inclure
le type de chier (php) : vite que ce chier soit lisible intgralement

Par exemple : bibli_inc.php!

Exemple: http://www.infres.enst.fr/~danzart/php/ exemples/inclusion_test.php

31

Les formulaires
Dclaration, balises, mthode
- Rcupration des valeurs transmises
Cas particulier du type image !- Les checkbox!




!

<form method="post" action="execution.php">! <H2>Questionnaire</H2>! Prnom ? <input name="prenom" value="xxx"><p>! Votre nom ? <input name="nom" value="yyy"><p>! Votre couleur favorite ?! <select name="couleur">! <option selected>blanc! <option>jaune! <option>orange! <option>vert! </select><p>! Cliquez sur <input type="submit" value="Valider"> pour valider.! </form>!

La balise form dlimite le formulaire


Son attribut method dtermine le mode de transmission des paramtres
Lattribut action prcise le programme qui sexcute lors de la validation

Balises:
form, input (type, name, value), select (name), option (value), !


Les balises d'un formulaire
Exemple: http://www.infres.enst.fr/~danzart/php/ exemples/formulaire_test.html

32

Les formulaires
Dclaration, balises, mthode
- Rcupration des valeurs transmises
Cas particulier du type image !- Les checkbox!




!

! <H1>Formulaire2 </H1>! ! <form method="post" action="execution.php">! <H2>Questionnaire</H2>! Votre prnom ? <input name="prenom" value="xxx"><p>! ! Cliquez sur <input type="image" name="im1" src="bouton.gif"> pour valider.! </form>! !

Limage remplace le bouton de soumission du formulaire.



Les coordonnes du point o l'utilisateur aura cliqu seront : $im1_x et $im1_y!


Exemple : http://www.infres.enst.fr/~danzart/php/ exemples/images_test.php

33

Les formulaires
Dclaration, balises, mthode
- Rcupration des valeurs transmises
Cas particulier du type image !- Les checkbox!




!

! ! <form method="post" action="execution3.php3">! <H2>Questionnaire : votre choix</ H2>! <input type="checkbox" name="fruits []" value="pomme"> Pommes! <input type="checkbox" name="fruits []" value="poire"> Poires! Cliquez sur <input type="submit" value="Valider"> pour valider.! </form>! ! ! !

Le nom du champ de type checkbox prvoit que les valeurs choisies seront stockes dans un tableau dynamique.
Seules les valeurs choisies seront transmises sous le nom Fruits[] ! ! Lappel de la fonction php count ($fruits) permettra de savoir combien de ! valeurs sont dans le tableau.



Exemple : http://www.infres.enst.fr/~danzart/php/ exemples/checkbox_test.php
Source du script



34

Les fichiers
Ouverture/fermeture Traitement de chanes

- Lecture/criture
!- Fichiers locaux!


<?php! /* ouverture en criture */! $fichier=fopen($nom_f,"w+");! fclose($fichier);! ?>! /* ouverture en lecture */! $fichier=fopen($nom_f,"r");! /* lecture d'une ligne faisant au plus 255 caractres */! $ligne=fgets($fichier,255);! ! /* fermeture du fichier */! fclose($fichier);! ?>! !

! <?php! // ouverture de la source (lecture) $source=fopen($nom_source,"r");! // ouverture de la cible (criture) $cible=fopen($nom_cible,"w+");! /* lecture de lignes faisant au plus 255 caractres */! ! while ($ligne=fgets($source,255))! {! // copie de la source sur la cible! fputs($cible,$ligne);! }! fclose($source);! fclose($cible);! ?>!

35

Les fichiers

- Lecture/criture
!- Fichiers locaux!


Le chier trait a la structure suivante :
// premier lment ! $nom = strtok($ligne,$sep);! nom prenom;dept/bureau/poste! ! <?php! // dlimitation des suivants ! // ouverture de la source! $pno = strtok($sep);! $nom_source = "base.txt"; ! $dep = strtok($sep);! $bur = strtok($sep);! $source=fopen($nom_source,"r");! $post = strtok($sep);! // dfinition des sparateurs // ligne initiale ! pour dlimiter les lments de print("Ligne : ".$ligne);! la ligne (ici l'espace, le; et // affichage du rsultat ! le /) ! print("<p>Nom : ".$nom);! $sep=" /;";! print("<br> Prnom : ".$pno);! // lecture d'une ligne ! print("<br> Dpt : ".$dep);! $ligne=fgets($source,255);! print("<br> Bureau : ".$bur);! print("<br> Poste : ".$post);! fclose($source);! ?>! ! 36
Ouverture/fermeture Traitement de chanes

Les fichiers
Ouverture/fermeture
- Lecture/criture
Traitement de chanes !- Fichiers locaux!



/* affichage des entres d'un
rpertoire */!
$repertoire="rep";! On peut utiliser la liste de ces entres pour crer des liens vers ces chiers ou rpertoires
$d = dir($repertoire);! echo "chemin : $d->path<br>";! ! while ($entry = $d->read())! echo "<a href=\"$repertoire/ $entry\">$entry</a><br\n"! echo "$entry<br\n";!
$d->close();!
!
Ou!
Exemple : http://www.infres.enst.fr/~danzart/php/ $d = opendir($repertoire);! exemples/rep_test.php
while ($entry = readdir($d))! echo "$entry<br\n";! $close($d);! ! 37

Environnement
Les cookies
- Les sessions
Les variables denvironnement!



Cration dun cookie, Dure de validit
- Il est prudent d'utiliser un nom qui ne soit
pas aussi celui dune autre variable (dun int setcookie (string name, string formulaire par exemple)
value , int expire , string path , - La date calcule dpend de celle du client !
string domain , int secure )! ! - Les cookies ne seront accessibles qu'au Le code PHP suivant doit imprativement avoir t chargement de la prochaine page, ou au envoy avant l'envoi de tout code html, c'est dire rechargement de la page courante.
en dbut du chier).
! - Il est possible de stocker un tableau dans un <?php ! cookie
setCookie("date","25/04/2000"); !
setCookie("heure","17h30"); ! // ces instructions crivent les

cookies $date et $heure! ! setcookie("TestCookie","Valeur de test");! setcookie("TestCookie",$value, time()+3600); ! /* expire dans une heure */! Exemple : http://www.infres.enst.fr/~danzart/php/ exemples/cookie_test.php

38

Environnement
Les cookies
- Les sessions
Les variables denvironnement!



Fonctions de gestion de session

Exemple

!
session_start() : dmarre une session
session_destroy() : met n une session
session_name() : retourne le nom de la session ou dmarre une nouvelle session sous le nom pass en paramtre.
session_id() : comme la prcdente avec l'identicateur
session_is_registred(): vrie si une variable est enregistre dans la session courante
session_unregister(): supprime une variable
!

Les variables de session sont ensuite accessibles grce au tableau associatif $_SESSION[].
!

<?php! session_start();! $nom=session_name();! $ref=132;! $_SESSION["ref"]=$ref;! ?>! <?php! session_start();! $nom=session_name();! echo "valeur =".$_SESSION["ref"];! ?>! rque: ce mcanisme fonctionne aussi avec des tableaux
Exemple : http://www.infres.enst.fr/~danzart/php/ exemples/session1_test.php

39

Environnement
Les cookies
- Les sessions
Les variables denvironnement
- phpinfo()!




->> donnes stockes dans des variables permettant au programme d'avoir des informations sur son environnement.

->> informations sur le type de serveur, son administrateur, la date laquelle le script a t appel, l'adresse IP et le type de navigateur du client,

->> cres par le serveur chaque fois que le script PHP est appel, le serveur les lui fournit en paramtres cachs lors de l'excution de l'interprteur.

->> deux catgories :

celles qui dpendent du client
celles qui dpendent du serveur!

! $_GET[], $_POST[], $_COOKIE[], ! $_SESSION[]!


Mais aussi:

$REMOTE_ADDR : adresse du client qui a fait la requte

$REMOTE_REFERER : nom de la page qui a rfrenc celle qui s'afche

$USER_AGENT : nom du navigateur utilis ainsi que sa version

$LAST_MODIFIED : dernire date de modication

$_SERVER, $_REQUEST, !
40

Images
Formats accepts: png, gif, jpg
- Fonctions de gd
Tracs, sauvegardes
- Images dynamiques




Rcupration de la couleur en (x,y)
Analyse d'une image !
! $nom="pervenches.png";! $c=getimagesize($nom);! print("L=".$c[0]." pix <br>");! printf("H=".$c[1]." pix <br>");! switch ($c[2]){! case 1 : print("gif");break;! case 2 : print("jpeg");break;! case 3 : print("png");break;! default : printf("non reconnu");! }! ! !
<?php! $coul=imagecolorat($im,$x,$y);! $RVB=imagecolorsforindex($im,$coul);! ! printf("RVB: (%d, %d, %d)",$RVB["red"], $RVB["green"],$RVB["blue"]);! ?>!

Couleur la plus proche dans une image



!
<?php! $coul=imagecolorclosest($im,$R,$V,$B);! ?>!

Couleur de transparence dans une image



!
<?php ! $coul=imagecolorclosest($im,$R,$V,$B);! imagecolortransparent($im,$coul);! ?>! 41

Ouverture d'une image !


$nom="pervenches.png";! $im=imagecreatefrompng($nom);!

Images
Formats accepts: png, gif, jpg
- Fonctions de gd
Tracs, sauvegardes
- Images dynamiques




! Incrustation d'un texte en un point

imagestring($im,$font,$x,$y,! $texte,$coul);!

Tracs sur une image



//quart d'ellipse!
imagearc($im,$x,$y,$l,$h,0,90,$coul);!

//ligne!
imageline($image,$x1,$y1,$x2,$y2,! $coul);! imagepolygone ($im,array($x1,$y1,$x2,$y2,! $x3,$y3),3,$coul);!

//polygone

//polygone plein!
imagefilledpolygone($im,array($x1,$y1,! $x2,$y2,$x3,$y3),3,$coul);!

//rectangle!
imagepolygone($im,$x1,$y1,$x2,$y2, ! $coul);!

$nom="livre.png";! printf("<img src=\"$nom\" border=1><p>");! $im=imagecreatefrompng($nom);! ! $couleur=imagecolorclosest($im, 0,0,0);! imagecolorset($im,$couleur,! 255,0,0);! . . . .! imagepng($im,"nouveau.png");! ! // attention aux droits sur les fichiers ainsi crs! ! !
!

42

Images
Formats accepts: png, gif, jpg
- Fonctions de gd
Tracs, sauvegardes
- Images dynamiques




! Gnration d'une image ! <html>! <?php! $nom="livre.png";! <head><title>Bienvenue</title></ $im=imagecreatefrompng($nom);! head>! <body>! ! $couleur=! <img src="generation.php">! imagecolorclosest($im,! </html>! 0,0,0);! ! imagecolorset($im,$coul,! Le script php peut dpendre de variables qui seront 255,0,0);! transmises directement par la mthode POST! ! ! imagepng($image);! <img src="generation.php?coul=red">! ?>! ! ! ! ! Dans ce cas, le chier ne doit contenir que le script php de gnration d'image.
Il sera ensuite utilis exactement comme un 43
nom de chier image dans une page html.

Envoi de mails
Attention aux envois de mails automatiques en nombre important qui encombrent les botes aux lettres !!!!
Il faut veiller toujours envoyer une
<?php ! page html l'utilisateur
$dest= "client@magasin.fr";! $sujet= "Confirmation";! ! $texte= "Votre commande a bien <HTML>! t effectue";! <HEAD>! $entete= "From: $exp\nreplyTo: ! <TITLE>Formulaire envoy!</TITLE>! $exp\nContent</HEAD>! type:text/html";! <BODY>! mail($dest,$sujet,$texte, <H1 align="cente"r>Merci,<?php echo $entete);! $nom; ?> </H1>! ?>! <P align="center">Votre message a t envoy.</P>! </BODY>! </HTML>! !
!

44

php

Tutoriel:

Merci de votre attention !!!


http://www.infres.enst.fr/~danzart/php/

Les exemples du cours:



http://www.infres.enst.fr/~danzart/php/exemples/

45