SlideShare uma empresa Scribd logo
1 de 90
LST INFO 1
PHP Hypertext Preprocessor
LST Informatique
FST 2016-2017
Mohamed OUZARF
Techniques du web
LST INFO 2
Modèle
Client
Base de
données
MySQL
Serveur
Script
PHP
internet
requête
réponse
Document
Html
appel de la page
extraction
de données exécution
LST INFO 3
Le navigateur demande une page web auprès du serveur.
Le serveur traite le fichier demandé (qui peut contenir du code
PHP), il le traite, puis l’envoie le résultat au navigateur.
Le navigateur reçoit une page HTML. Il interprète le code HTML,
CSS, javascript, … et affiche la page.
Il arrive souvent que le serveur web ait besoin d’une autre
application (par exemple un SGBD).
Modèle
LST INFO 4
Histoire du PHP
Il a été créé en 1994 par Rasmus Lerdorf pour les besoins des pages
web personnelles (livre d’or, compteurs, etc.). A l’époque, PHP
signifiait Personnal Home Page.
C’est un langage incrusté au HTML et interprété (PHP3) ou compilé
(PHP4) côté serveur. Il dérive du C et du Perl dont il reprend la
syntaxe.
Il est extensible grâce à de nombreux modules et son code source est
ouvert. Comme il supporte tous les standards du web et qu’il est
gratuit.
En 1997, PHP devient un projet collectif et son interpréteur est
réécrit par “Zeev Suraski et Andi Gutmans ” pour donner la version
3 qui s’appelle PHP Hypertext Preprocessor).
5
Intégration d’un script dans une page
Les pages web sont au format html.
Les pages web dynamiques générées avec PHP sont au format php.
Le code source php est directement insérer dans le fichier html grâce
au conteneur :
<?php … ?>
Exemple:
<html>
<body>
<?php
echo ’’Bonjour’’;
?>
</body>
</html>
LST INFO 6
Exemple de script
<html>
<body>
<h1>Mon premier script</h1>
<?php echo “Bonjourn“ ; ?>
</body>
</html>
Exemple de script, code source (côté serveur) :
Résultat affiché par le navigateur :
LST INFO 7
Commentaires
Un script php se commente comme en C :
Exemple :
<?php
// commentaire de fin de ligne
/* commentaire sur plusieurs lignes */
# commentaire de fin de ligne comme en Shell
?>
Tout ce qui se trouve dans un commentaire est ignoré.
Il est conseillé de commenter largement ses scripts.
LST INFO 8
Variables, constantes et types
Les variables est le conteneur d’une valeur d’un des
types utilisés en PHP .
La déclaration des variables n’est pas obligatoire en
début de script.
L’initialisation des variables n’est pas non plus obligatoire.
Les identificateurs de variable sont précédés du symbole « $ »
(dollars). Exemple : $toto.
LST INFO 9
Les noms des variables sont sensibles à la casse
(majuscules et minuscules). $mavar et $Mavar ne
désignent pas la même variable.
Le nom commence par un caractère alphabétique, pris
dans les ensembles [a-z] ,[A-Z] ou par le caractères de
soulignement( _ ).
Les variables peuvent être de type entier (integer),
réel (double), chaîne de caractères (string), tableau
(array), objet (object), booléen (boolean).
Variables, constantes et types
LST INFO 10
L’affectation consiste à donner une valeur à une variable. Lors de
la création d’une variable, vous ne déclarez pas son type. C’est la
valeur que vous lui affectez qui détermine ce type.
 Initialiser une variable : affecter une valeur initiale
qui pourra éventuellement être modifiée par le
programme. Le symbole d'affectation est le signe =.
 $i_i = 4 ; // initialisation par un entier
 $s_ecole = "ENITA Bx"; // initialisation par une chaîne
$s_w = "1.2 euros"; // initialisation par une chaîne
$d_nb=12345678.99; // initialisation par un réel
 $t_tb[ ] = 100; // initialisation du 1er élément du
tableau
Variables, constantes et types
LST INFO 11
Dans php, vous pouvez affecter une aussi par référence.
-L’affectation par référence, au moyen de l’operateur =,
l’opérande de droite est une variable qui doit être précédée du
caractère &.
Variables, constantes et types
Exemple 1 :
$toto = 100; // la variable $toto est initialisée à la valeur 100
$foobar = &$toto; // la variable $foobar fait référence à $toto
$toto++; // on change la valeur de $toto
echo $foobar; /* qui est répercutée sur $foobar qui
vaut alors 101*/
LST INFO 12
Quelques fonctions utiles pour les variables:
 empty($var) : renvoie vrai si la variable est vide
 isset($var) : renvoie vrai si la variable existe
 unset($var) : détruit une variable
 gettype($var) : retourne le type de la variable
 settype($var, “type”) : convertit la variable en type
“type”(cast)
 is_long(), is_double(), is_string(), is_array(), is_object(),
is_bool(), is_float(), is_numeric(), is_integer(), is_int()…
Variables, constantes et types
LST INFO 13
Variables, constantes et types
LST INFO 14
Lors de l’envoi de données d’un formulaire vers le serveur, le
script qui reçoit les informations doit pouvoir détecter l’existence
d’une réponse dans les champs du formulaire.
Les fonctions isset() et empty() permettent ce type de contrôle.
- La fonction isset(), dont la syntaxe est la suivante:
Boolean isset($var);
renvoie TRUE si la variable var est définie, FALSE sinon
- La fonction empty(), dont la syntaxe est la suivante:
Boolean empty($var );
retourne la valeur TRUE si la variable $var n’est pas initialisée à
la valeur 0 ou NULL ou la chaine “0” et la valeur FALSE si elle a
une valeur quelconque.
Contrôle d’état d’une variable
15
La portée d’une variable est limitée au bloc dans lequel elle a été crée.
Une variable locale à une fonction n’est pas connue dans le reste du
programme.
Une variable crée dans un bloc n’est pas connue dans les autres blocs,
mêmes supérieurs.
Opérateurs d’assignement :
= (affectation), *= ($x*=$y équivalent à $x=$x*$y), /=, +=, -=, %=
Opérateurs logiques :
and, && (et), or, || (ou), xor (ou exclusif), ! (non)
Variables, constantes et types
LST INFO 16
Opérateurs arithmétiques :
Variables, constantes et types
Opérateur description
+ addition
- soustraction
* Multiplication
/ Division
% Modulo
++ et -- Décrémentation et
incrémentation (Ces
deux derniers peuvent
être pré ou post fixés
LST INFO 17
Opérateur Description
= = Test l’égalité de deux valeurs
$a=345; $b=“345” ou $b=“345 elements”
$a= =$b; TRUE
!= ou <> Test l’inégalité de deux valeurs
= = = Test l’identité des valeurs et des types de deux
expressions.
$a=345; $b=“345”; $a= = =$b; False
!== Test la non-identité de deux expression
< et <= Test inferieur ou (inferieur ou égal)
> et >= Test supérieur ou (supérieur ou égal)
Les opérateurs de comparaison
LST INFO 18
Opérateur Description
OR Test si l’un au mois des opérandes à la
valeur TRUE.
|| Equivaut à l’opérateur OR mais n’a pas la
même priorité.
XOR Test si l’un et un seul des opérandes à la
valeur TRUE.
AND Test si les eux opérandes en la même valeur
TRUE
&& Equivaut à l’opérateur AND mais n’ a pas la
même priorité
! Operateur unaire de négation, qui inverse la
valeur de l’opérande.
Les operateurs logiques
LST INFO 19
Opérateurs arithmétiques :
Variables, constantes et types
LST INFO 20
Il existe en php un grand nombre de constantes prédéfinis, que vous
pouvez notamment utiliser dans les fonctions comme paramètres
permettant de définir des options.
Le code suivant:
<?php
Print_r(get_defined_constants( ));
?>
Permet d’afficher l’ensemble des constantes existantes.
Les constantes ne portent pas le symbole $ (dollars) en début
d’identificateur et ne sont pas modifiables.
Variables, constantes et types
Les constantes sont manipulés à l’aide de la syntaxe define:
define (‘’constante’’, ‘’valeur’’);
Exemple 1 :
define(‘’author’’,’’Foobar’’);
echo author; // affiche ‘Foobar’
Exemple 2 :
define(“MY_YEAR”,1980);
echo MY_YEAR; // affiche 1980
Variables, constantes et types
Exemple 3 :
Define ("font", "<FONT size=4 color=#FF0000><B>")
defined (”author") ; // renvoi 1
defined (”my_date") ; // renvoi 0
Remarque : test d’existense de constante:
LST INFO 22
Dans php, il n’existe pas de déclaration explicite du type
d’une variable lors de sa création.
Php permet la manipulation d’un certain nombre de types :
Les types scalaire de base: Entiers, flottants, chaine de
caractères, booléens.
Les types composes: tableaux (array), objet (object)
Les types spécieux: type resource, type nul
Variables, constantes et types
Les Structures de contrôle
Structures conditionnelles
(même syntaxe qu’en langage C) :
if( ... ) {
…
} elseif {
…
} else {
…
}
<!DOCTYPE html>
<html>
<body>
<?php
$t = date("H");
echo "<p>The hour (of the server) is " . $t;
echo ", and will give the following
message:</p>";
if ($t < "10") {
echo "Have a good morning!";
} elseif ($t < "20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
</body>
</html>
<?php
$color = "red";
switch ($color) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither
red, blue, nor green!";
}
?>
switch-case
Les Structures de contrôle
switch( … ) {
case … : { … }
break;
…
default : { … }
}
Les Structures de contrôle
Structures de boucle (même syntaxe qu’en langage C) :
for( … ; … ; … ) {
…
}
while( … ) {
…
}
do {
…
} while( … );
Les Structures de contrôle
--------------------------------- FOREACH----------------------------------
foreach($tableau as $valeur)
{
// bloc utilisant la valeur de l’élément courant
}
foreach ($tableau as $key => $value){
//commandes
}
La structure de langage foreach fournit une façon simple de parcourir des
tableaux. foreach ne fonctionne que pour les tableaux et les objets,
Structures de contrôle (FOR)
Structures de boucle (même syntaxe
qu’en langage C) :
<?php
for ($x=0; $x<=50; $x=$x+5) {
echo '<p>variable $x is now = ' . $x .
'</p>';
}
?>
Sortie:
variable $x is now = 0
variable $x is now = 5
.
.
variable $x is now = 40
variable $x is now = 45
variable $x is now = 50
html>
<head>
<title>Titres</title>
</head>
<body>
<?php
for ($ x=1; $x<=6; $x=$x+1) {
echo "<h" . $x . ">Heading levels</h" . $x .
">";
}
?>
</body>
</html>
Sortie:
Heading levels
Heading levels
Heading levels
Heading levels
Heading levels
Heading levels
Structures de contrôle (While et Do-while)
Structures de boucle (même syntaxe
qu’en langage C)
<?php
$x = 1;
while ($x <= 50) {
echo "<p>This text is repeated 50
times</p>"; $x = $x + 1;
}
?>
Sortie:
This text is repeated 50 times
This text is repeated 50 times
.
.
This text is repeated 50 times
This text is repeated 50 times
This text is repeated 50 times
<?php
$i = 1;
do
{
echo $i . '<br />';
$i++;
}while( $i < 5 );
?>
Sortie:
1
2
3
La différence entre les deux réside dans le fait que dans le cas de la boucle while, la condition est
examinée avant la boucle tandis que pour la boucle do-while elle est éxaminée à la fin.
LST INFO 29
Mathématiques
Le module de base de PHP offre un grand nombre de fonctions
mathématiques utiles..
 abs($x) : valeur absolue
 ceil($x) : retourne l’entier n le plus proche à $x tel que $x <=n
 floor($x) : la partie entière de $x .
 pow($x,$y) : x à la puissance y
 round($x,$i) : arrondi de x à la ième décimale
 max($a, $b, $c …) : retourne l’argument de valeur maximum
 pi() : retourne la valeur de Pi
 Et aussi : cos, sin, tan, exp, log, min, pi, sqrt…
Quelques constantes :
 M_PI : valeur de pi (3.14159265358979323846)
 M_E : valeur de e (2.7182818284590452354)
30
Chaînes de caractères
Une variable chaîne de caractères n’est pas limitée en nombre de caractères.
Elle est toujours délimitée par des simples quotes ou des doubles quotes.
Si vous utilisez les doubles quotes pour délimiter une chaîne, alors les
variables et les caractères contenus dans cette chaîne sont évalués.
Ce n’est pas le cas si vous utilisez les simples quotes.
Exemples :
<? php
$Nom=“saad”;
echo “Bonjour $Nom”; // affiche Bonjour saad, la variable $Nom
est évaluée
echo ‘Bonjour $Nom’; // affiche Bonjour $Nom , la variable $Nom
n’est pas évaluée
?>
LST INFO 31
Exemple : echo ‘’Hello Word !n’’;
Caractères spéciaux Description
n nouvelle ligne
r retour à la ligne
t tabulation horizontale
 antislash
$ et  “ caractère dollars et double quotte
Chaînes de caractères
LST INFO 32
Chaînes de caractères
Opérateur de concaténation de chaînes : . (point)
Exemples:
<?php
$nom = ’’saad ’’.
echo ’’Nom : ’’. $nom; // affiche Nom saad.
?>
LST INFO 33
Longueur d’une chaîne de caractères.
 Pour déterminer le nombre de caractère d’une chaine,
utilisez la fonction strlen( ), dont la syntaxe est la
suivante:
int strlen( string $ch).
 La fonction strlen() peut servir, par exemple, à vérifier
qu’un code postal saisi par un internaute comporte
bien cinq chiffres.
 Exemple:
$code="7508”;
if ( strlen($code) !=5 ) echo “code erroné !”
Chaînes de caractères
LST INFO 34
Comparaison de chaines:
Les opérateurs de comparaison usuels sont utilisables avec les chaînes. Cela
inclus bien sur les operateurs d’égalité (= =) et d’identité (= = =), ce dernier ne
permettant d’obtenir la valeur TRUE dans une expression conditionnelle que si
les deux opérandes ont non seulement la même valeur mais aussi le même type
Pour comparer des chaînes et obtenir leur ordre alphabétique, php dispose de
deux fonctions:
Int strcmp( string $ch1, string $ch2)
Int strcasecmp( string $ch1, string $ch2)
Leur fonctionnement est identique, mais la première fonction est sensible à la
casse alors que la seconde ne l’est pas.
Elle retourne toute les deux un nombre négatif(généralement -1) si $ch1 est
inférieure à $ch2, un nombre positif(généralement 1) dans le cas contraire et 0
en cas d’égalité.
Chaînes de caractères
Fonction: création
LST INFO 35
<?php
function DireBonjour($nom)
{
echo 'Bonjour ' . $nom . ' ! <br >';
}
DireBonjour('Marie');
DireBonjour('Patrice');
DireBonjour('Edouard');
DireBonjour('Pascale');
DireBonjour('François');
DireBonjour('Benoît');
DireBonjour('Père Noël');
?>
Exemple1
Fonction: création
LST INFO 36
Exemple2
<?php
// Ci-dessous, la fonction qui calcule le volume du cône: syntaxe déclaration
function VolumeCone($rayon, $hauteur)
{
// calcul du volume
$volume = $rayon * $rayon * 3.14 * $hauteur * (1/3);
return $volume; // indique la valeur à renvoyer, ici le volume
}
// utilisation de la fonction :
$volume = VolumeCone(3, 1);
echo 'Le volume d'un cône de rayon 3 et de hauteur 1 est de ' . $volume;
echo 'Le volume d'un cône de rayon 3 et de hauteur 1 est de ' . $VolumeCone(5, 2);
?>
LST INFO 37
La fonction array( ) permet de créer de manière rapide des tableaux
indicés ou associatifs. C’est elle qui sera le plus souvent utilisé pour
la création de tableaux.
La façon la plus élémentaire de créer un tableau indicé consiste à
définir individuellement une valeur pour chacun des ces éléments, de
la manière suivante:
$tab[n]=valeur;
ou n est un indice entier quelconque, et « valeur » un scalaire ou une
variable de type integer, double, boolean, string et array.
Pour créer un tableau composé de plusieurs éléments en une seule
opération, vous disposez de la fonction array().
$tab=array( valeur0, valeur1, …, valeurN)
Les Tableaux
38
Les Tableaux
1° méthode
2° méthode
3° méthode
Exemple Tabeaux indicés
LST INFO 39
Les Tableaux
Les tableaux associatifs:
La même fonction array( ) permet aussi de créer rapidement un tableau
associatif en définissant pour chacun de ses éléments une clé et une
valeur.
La syntaxe :
$tabasso=array(“cléA” =>valeurA, “cléB” =>valeurB,… “cléZ” =>valeurZ)
Chaque clé est une chaine de caractère délimitée par des guillemets.
Pour lire la “valeurA” vous écrivez $tabasso[“cléA”].
Un tableau associatif est appelé aussi dictionnaire ou hashtable. On associe
à chacun de ses éléments une clé dont la valeur est de type chaîne de
caractères.
L’initialisation d’un tableau associatif est similaire à celle d’un tableau
normal.
Exemple 1 :
$personne = array(‘’Nom’’ => ‘’Alami’’, ‘’Prenom’’ => ‘’Saad’’);
LST INFO 40
Les Tableaux
Exemple Les tableaux
associatifs:
1° méthode
2° méthode
LST INFO 41
Les tableaux multidimensionnels:
PHP ne comporte pas de méthodes explicite de création de tableaux
multidimensionnels.
Exemple de tableau(4,3):
$tabmulti=array( array(“L_0-C_0”, “L_0-C_1”, “L_0-C_2”),
array(“L_1-C_0”, “L_1-C_1”, “L_1-C_2”),
array(“L_2-C_0”, “L_2-C_1”, “L_2-C_2”),
array(“L_3-C_0”, “L_3-C_1”, “L_3-C_2”),
);
Les Tableaux
Exemple
LST INFO 42
<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>
Volvo: In stock: 22, sold: 18.
BMW: In stock: 15, sold: 13.
Saab: In stock: 5, sold: 2.
Land Rover: In stock: 17, sold: 15.
<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number
$row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>
Exemple
LST INFO 44
//*********************************************
// Lecture d’un tableau associatif
//*********************************************
$montab=array("France"=>"Paris","Great Britain"=>"London","Belgie"=>"Brussel");
While(list($cle, $valeur) = each($montab))
{
echo “ L’élément de clé <b>$cle</b> a la valeur <b>$valeur</b> <br>";
}
?>
Les Tableaux
Les deux premiers éléments sont : Paris et London
L‘élément de clé France a la valeur Paris
L’élément de clé Great Britain a la valeur London
L‘élément de clé Belgie a la valeur Brussel
L‘élément d’indice 0 a la valeur Paris
L‘élément d’indice 1 a la valeur London
L‘élément d’indice 2 a la valeur Brussel
LST INFO 45
Exemple
Passer en revue un tableau avec each()
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
echo "$key => $valn";
}
?>
a => apple
b => banana
c => cranberry
Retourne la paire clé/valeur courante du tableau array
LST INFO 46
est très efficace pour parcourir les tableaux associatifs mais fonctionne
également pour les tableaux indicé.
Pour les tableaux indicé vous écrivez le code suivant:
foreach($tab as $valeur)
{
// bloc de code utilisant les valeurs de la variable $valeur;
}
Pour les tableaux associatif vous écrivez le code suivant:
foreach($tab as $cle=>$valeur)
{
// bloc de code utilisant les valeurs de la variable $cle et
$valeur;
}
Les Tableaux
L’instruction foreach ( ):
LST INFO 47
Les Tableaux
Exemple de l’instruction foreach ( ):
LST INFO 48
Les Tableaux
Exemple de l’instruction foreach ( ):
LST INFO 49
Les Tableaux
Quelques fonctions:
count($tab), sizeof($tab) : retournent le nombre d’éléments du tableau
in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab
list($var1,$var2…) : transforme une liste de variables en tableau
range($i,$j) : retourne un tableau contenant un intervalle de valeurs
shuffle($tab) : mélange les éléments d’un tableau
sort($tab) : trie les éléments du tableau
rsort($tab) : trie inverse les éléments du tableau
implode($str,$tab): retournent une chaîne de caractères contenant les
éléments du tableau $tab joints par la chaîne de jointure $str.
explode($delim,$str) : retourne un tableau dont les éléments résultent du
hachage de la chaîne $str par le délimiteur $delim
array_merge($tab1,$tab2,$tab3…) : concatène les tableaux passés en
arguments
array_rand($tab) : retourne un élément du tableau au hasard
LST INFO 50
Les Tableaux
Quelques fonctions :
array_count_values($tab) : retourne un tableau contenant les valeurs du
tableau $tab comme clés et leurs fréquence comme valeur (utile pour
évaluer les redondances)
array_keys($tab) : retourne un tableau contenant les clés du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du tableau
associatif $tab
array_search($val,$tab) : retourne la clé associée à la valeur $val
Quelques fonctions alternatives pour le parcours de tableaux (normaux ou
associatifs)
reset($tab) : place le pointeur sur le premier élément
current($tab) : retourne la valeur de l’élément courant
next($tab) : place le pointeur sur l’élément suivant
prev($tab) : place le pointeur sur l’élément précédant
each($tab) : retourne la paire clé/valeur courante et avance le pointeur
LST INFO 51
Rechercher dans un tableau
array_key_exists : pour vérifier si une clé existe dans l'array ;
in_array : pour vérifier si une valeur existe dans l'array ;
array_search : pour récupérer la clé d'une valeur dans l'array.
LST INFO 52
<?php
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');
if (array_key_exists('nom', $coordonnees))
{
echo 'La clé "nom" se trouve dans les coordonnées !';
}
if (array_key_exists('pays', $coordonnees))
{
echo 'La clé "pays" se trouve dans les coordonnées !';
}
?>
array_key_exists
LST INFO 53
Vérifier si une valeur existe dans l'array : in_array
<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise',
'Framboise');
if (in_array('Myrtille', $fruits))
{
echo 'La valeur "Myrtille" se trouve dans les fruits !';
}
if (in_array('Cerise', $fruits))
{
echo 'La valeur "Cerise" se trouve dans les fruits !';
}
?>
LST INFO 54
Récupérer la clé d'une valeur dans l'array : array_search
<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise',
'Framboise');
$position = array_search('Fraise', $fruits);
echo '"Fraise" se trouve en position ' . $position . '<br />';
$position = array_search('Banane', $fruits);
echo '"Banane" se trouve en position ' . $position;
?>
LST INFO 55
Créer un lien avec des paramètres
nous pouvons créer des liens en HTML qui transmettent des
paramètres d'une page vers une autre.
Soit: deux fichiers sur votre site :
index.php (l'accueil) ;
bonjour.php.
Ce lien appelle la page bonjour.php et lui envoie deux paramètres :
nom : Dupont ;
prenom : Jean.
Communication avec PHP
LST INFO 56
Envoyer des paramètres dans l'URL
Le point d'interrogation sépare le nom de la page PHP des paramètres.
Ensuite, ces derniers s'enchaînent selon la forme: nom=valeur
et sont séparés les uns des autres par le symbole &.
Communication avec PHP
LST INFO 57
Récupérer les paramètres en PHP
Nom Valeur
$_GET['nom’] Dupont
$_GET['prenom’] Jean
la page bonjour.php va automatiquement créer un array au nom :
$_GET. Il s'agit d'un array associatif dont les clés correspondent aux
noms des paramètres envoyés en URL.
Communication avec PHP
58
<head>
<title>Réception de paramètres dans l'URL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p>Bonjour <?php echo $_GET['prenom'] . ' ' . $_GET['nom']; ?> !</p>
</body>
<head>
<title>Envoi de paramètres dans l'URL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p><a href="bonjour.php?nom=Dupont&prenom=Jean">Dis-moi bonjour !</a></p>
</body>
Dis-moi bonjour ! Bonjour Jean Dupont !
http://localhost/tpdut2/bonjour.php?nom=Dupont&prenom=Jean
LST INFO 59
Les formulaires introduits dans le HTML depuis plus anciennes versions sont
l’élément essentiel qui permet l’interactivité entre un site et ses visiteurs.
Ils constituent pour cette raison la base de la création de site dynamique
Tout échange entre visiteur et serveur passe par un formulaire, dans lequel
l’utilisateur peut saisir textes ou mot de passe, opérer des choix grâce à des
boutons radio, des cases à cocher ou des listes de sélection, envoyer ses
propres fichiers depuis le poste client.
Il est donc important d’en maitriser la création à la fois en HTML, Pour
obtenir des formulaires présentables, et en PHP, pour gérer les informations
fournies par le formulaires au script coté serveur.
Les Formulaires
LST INFO 60
Récupération des données du formulaire
Que se passe-il lorsque l’utilisateur clique sur le bouton
d’envoi?
Une requête HTTP est envoyée au serveur à destination
du script désigné par l’attribut action de l’élément
<form> . La requête contient toutes les associations entre
les noms des champs et de leur valeur.
Ces association se trouvent dans l’en-tête HTTP si la
méthode POST est utilisée et dans l’URL s’il s’agit de
la méthode GET.
Les Formulaires
LST INFO 61
Valeurs uniques:
 Les valeurs uniques proviennent des champs de formulaire
dans lesquels l’utilisateur ne peut entrer qu’une valeur, un
texte par exemple, ou ne peut faire qu’un seul choix
(bouton radio, liste de sélection à choix unique).
 Ces valeurs sont contenues sur le serveur dans des tableaux
associatifs dits super-globaux appelés $_POST et $_GET,
selon la méthode choisie.
 Les clés de ces tableaux sont les noms associes aux champs
par l’attribut name
Les Formulaires
LST INFO 62
 Cas de la méthode POST
<html>
<head>
<title>formulaire traité par php</title>
</head>
<body>
<form action=“form.php ” method="post" >
<fieldset>
<legend><b>Infos</b></legend>
nom: <input type="text" name="nom" size="40"/> </br>
Débutant: <input type="radio" name="niveau" value="débutant"/>
Initié: <input type="radio" name="niveau" value="initié" /> </br>
<input type="reset" value="effacer">
<input type="submit" value="envoyer">
</fieldset>
</form>
Les Formulaires
formulaire.php
63
<?php
if(isset($_POST["nom"]) && isset($_POST["niveau"]))
{ echo"<h2> Bonjour ".$_POST["nom"]." vous êtes ".$_POST["niveau"]."
en PHP</h2>";}
?>
Les Formulaires
suite
form.php
Cas de la méthode GET:
Avec la méthode GET vous récupérez les données du formulaire dans les
variables $_GET[“nom”] et $_GET[“niveau”], comme ci-dessous:
<?php
If ( isset($_GET["nom"] ) && isset($_GET["niveau"] )
{ echo"<h2> Bonjour ".$_GET["nom"]." vous êtes ".$_GET["niveau"]."
en PHP</h2>";}
?>
Contrairement à ce qui ce passe avec la méthode POST, vous constatez que lors
du clic sur le bouton d’envoi l’adresse de la page cible désignée par l’attribut
action est suivi par le caractère ? Puis le nom de chaque champ et la valeur qui
y associée.
Les Formulaires
LST INFO 65
Les valeurs multiples
Certains champs de formulaire peuvent permettre aux visiteurs de saisir
plusieurs valeurs sous un même nom de composant.
Cela peut concerner un groupe de cases à cocher ayant le même attributs
name, par exemple, dont il est possible de cocher une ou plusieurs cases
simultanément. Ce peut également être le cas d’une liste de sélection
ayant toujours un nom unique mais dans laquelle l’attribut
multiple= “multiple” est défini.
Dans tous les cas, ce n’est pas une valeur scalaire mais un tableau qui
est récupéré côté serveur, il faut pour cela faire suivre le nom du
composant de crochets, comme pour créer une variable de type array.
Les Formulaires
<form action="checkbox.php">
<input type="hidden" name="envoi" value="yes">
<input type="text" name="voiture"><br>
<input type="checkbox" name="options[]" value="Injection au
méthane">&nbsp;Injection au méthane<br>
<input type="checkbox" name="options[]" value="Trois roues de
secours">&nbsp;Trois roues de secours<br>
<input type="checkbox" name="options[]" value="Miroir de courtoisie
dans le coffre">&nbsp;Miroir de courtoisie dans le coffre<br>
<input type="checkbox" name="options[]" value="Ventilation des rotules
(côté conducteur)">&nbsp;Ventilation des rotules côtés conducteur)<br>
1<input type="checkbox" name="options[]" value="Kit James-Bond
">&nbsp;Kit James-Bond <br>
<input type="submit">
</form>
<?php
$envoi = $_GET['envoi']; //aiguilleur
$voiture = $_GET['voiture']; //Nom de la voiture
$options = $_GET['options']; //Contenu des cases à coche
if ($envoi == 'yes') {
$options_text = implode(', ',$options);
echo '<h1>L'auto de vos rêves &quot;'.$voiture.'&quot;:</h1>';
echo '<p>options:<br><br>'.$options_text.'</p>';
}
?>
LST INFO 68
L’inclusion d’un élément HTML <input type=“file”> dans un
formulaire
<form action="file.php" method="post"
enctype="multipart/form-data">
crée une situation particulière. Il ne s’agit plus de transmettre une ou
plusieurs valeurs scalaires au serveur mais l’intégralité d’un fichier,
lequel peut avoir une taille important et un type quelconque. Ce fichier
doit évidement être présent sur l’ordinateur du visiteur.
Pour la sécurité de votre site, vous utilisez l’attribut accept de l’élément
<input>. Cet attribut peut prendre un grand nombre de valeurs,
correspondant aux type MIME des fichier acceptés, par exemple
“image/gif” ou “text/html”. Un fichier d’un type différent est rejeté.
L’élément <form> doit avoir l’attribut method à la valeur post et
l’attribut enctype à la valeur multipart/form-data.
Transfert de fichier vers le serveur
LST INFO 70
L’élément <input type=“file”/>
Permet le transfert de fichier du poste client vers le serveur.
L’attribut name est indispensable.
L’attribut size limite la taille de zone de saisie. Et plus
particulièrement l’attribut accept, qui définit le ou les types
de fichier acceptés.
<input type=“file” name=“monfichier” accept=“image/gif,
image/ipeg” size=“ 30”/>
Transfert de fichier vers le serveur
LST INFO 71
Transfert de fichier vers le serveur
Le formulaire doit comporter les quelques spécificités suivantes:
- utilisation de la method="post" la seule permettant le transfert de
données volumineuses
- une option enctype="multipart/form-data" indiquant un échange de
données
- un champ caché (optionnel) indiquant la taille maximale (en octets)
autorisée pour le fichier à "uploader"
- un champ de type fichier permettant entre autre à l'utilisateur de
sélectionner le fichier dans son système de fichiers.
il doit renvoyer (champ action) vers un script PHP capable de
"réceptionner" le fichier.
72
<head>
<title>file</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form action="file.php" method="post" enctype="multipart/form-data">
<p>
Formulaire d'envoi de fichier :<br />
<input type="file" name="monfichier" /><br />
<input type="submit" value="Envoyer le fichier" />
</p>
</form>
Transfert de fichier vers le serveur
73
<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
// Testons si le fichier n'est pas trop gros
if ($_FILES['monfichier']['size'] <= 1000000)
{
// Testons si l'extension est autorisée
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
}
}
?>
LST INFO 74
PHP fourni alors de nouvelles informations dans un tableau
associatif $_FILE[ ] . Ce tableau contient les clés suivantes:
tmp_name qui contient le nom (et chemin) du fichier temporaire
sous lequel le fichier a été stocké.
name qui contient le nom qu'avait le fichier dans l'espace de
l'utilisateur
size qui contient la taille du fichier en octets
type qui contient le "MIME type" du fichier (ex: text/html, image/gif,
etc.)
Transfert de fichier vers le serveur
LST INFO 75
Transfert de plusieurs fichiers
Il est possible de proposer à l’utilisateur de transférer plusieurs fichiers
simultanément pour lui éviter de recommencer plusieurs fois la même
opération à partir de l’exemple précédent. Vous devez en ce cas faire en
sorte que l’éléments <input type=“file” ….> Soient tous écrits de la
manière suivant:
<input type=“file” name= “file[ ]” accept= “image/gif” size =“50” />
Transfert de fichier vers le serveur
EXEMPLE: envoyer deux fichiers
avec le formulaire
LST INFO 76
<form method="post" action="reception.php" enctype="multipart/form-data">
<label for="icone">Icône du fichier (JPG, PNG ou GIF | max. 15 Ko)
:</label><br />
<input type="file" name="icone" id="icone" /><br />
<label for="mon_fichier">Fichier (tous formats | max. 1 Mo) :</label><br />
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
<input type="file" name="mon_fichier" id="mon_fichier" /><br />
<label for="titre">Titre du fichier (max. 50 caractères) :</label><br />
<input type="text" name="titre" value="Titre du fichier" id="titre" /><br />
<label for="description">Description de votre fichier (max. 255 caractères)
:</label><br />
<textarea name="description" id="description"></textarea><br />
<input type="submit" name="submit" value="Envoyer" />
</form>
LST INFO 77
EXEMPLE: envoyer deux fichiers
avec le formulaire
miniProjet-TD-TP
 mini-projet
 TD-TP: PHP-mysql
LST INFO 78
LST INFO
79
Les Sessions
 La session est un mécanisme qui permet à PHP de garder "en
mémoire" un nombre illimité de valeurs entre plusieurs requêtes
d'un même utilisateur.
 Les sessions permettent de conserver des variables tant que
l'internaute reste connecté au site
 Elles servent aux statistiques( visiteurs); transmettre des
variables sur toutes les pages de votre site.
 -L’utilisation du mécanisme des sessions obéit aux étapes
générales suivantes:
LST INFO 80
Les Sessions
1- Ouverture d’une session dans chaque page ayant accès aux données à l’aide
de la fonction session_start( ) de syntaxe:
session_start( );
2 – Chaque utilisateur se voit attribuer un identifiant de session, lié à la session
en cours, et donc différent lors d’une autre connexion.
3- Lecture des variables de session dans chaque page en fonction des besoins
à l’aide du tableau superglobal $_SESSION
4- Fermeture de la session après destruction éventuelle des variables de
session, de synthaxe: session_destroy();
EXEMPLES ‘openclassrooms’
LST INFO 81
LST INFO 82
LST INFO 83
Les Cookies
 Un cookie est un petit fichier qui peut être écrit par un script
PHP ou par un autres langages, tel JavaScript, et enregistré sur l’ordinateur
du visiteur.
 Ce fichier contient du texte et permet de « retenir » des informations sur le
visiteur. Par exemple, vous inscrivez dans un cookie le pseudo du visiteur,
comme ça la prochaine fois qu'il viendra sur votre site, vous pourrez lire son
pseudo en allant regarder ce que son cookie contient.
 Les cookies font l’objet de limites d’emploi. Un site donné ne peut écrire
beaucoup de cookies sur un même poste client. Chacun d’eux ne doit pas
dépasser 4 Ko, ce qui empêche le stockage d’information de taille important.
Un cookie est souvent utilisé pour identifier un utilisateur.
LST INFO 84
Les Cookies
 Ecriture des cookies
Pour écrire un cookie, on utilise la fonction setcookie( ), dont la syntaxe est la
suivante:
setcookie($cookie_name, $cookie_value, time() + $temps );
Avec : $temps = 3600*24*365
Ici temps de validité est de 1 an.
Les paramètres de la fonction setcookie( ) sont les suivants:
$cookie_name: est une chaîne définissant le nom du cookie. Ce nom obéissant aux
même règles des noms que les variables, il faut éviter les caractères spéciaux.
$cookie_value : contient la valeur associe a cookie, il s’agit d’une chaine de
caractère.
EXEMPLES ‘openclassrooms’
<?php
setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null, null, false, true);
// On écrit un cookie
setcookie('pays', 'France', time() + 365*24*3600, null, null, false, true);
// On écrit un autre cookie...
// Et SEULEMENT MAINTENANT, on peut commencer à écrire du code html
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Ma super page PHP</title>
</head>
<body>
un code PHP pour afficher de nouveau le pseudo du visiteur :
<p>
Hé ! Je me souviens de toi !<br />
Tu t'appelles <?php echo $_COOKIE['pseudo']; ?> et tu viens de <?php echo
$_COOKIE['pays']; ?> c'est bien ça ?
</p>
LST INFO 86
Création, ouverture et fermeture d’un fichier
avant de réaliser des opérations de lecture ou d’écriture sur un fichier, vous
devez l’ouvrir explicitement.
La syntaxe de la fonction:
$monfichier = fopen(‘ nom ‘, ‘ mode ‘)
le premier paramètre est une chaine de caractère indiquant le nom du fichier,
ce nom peut être sous une forme réduite (le nom du fichier seul)
le deuxième paramètre détermine le mode d’accès au fichier. Ce mode est
codée dans une chaine et peut prendre les valeurs suivant:
Les Fichiers
LST INFO 87
“r ”: Le fichier est ouvert en lecture seule, et la lecture commence au
début du fichier
“r+”: Le fichier est ouvert en lecture et en écriture, et ces opérations
commencent au début du fichier.
“w” : Le fichier est ouvert en écriture seule, et l’écriture commence au
début du fichier(le fichier est crée s’il n’existe pas)
“w+”: Le fichier est ouvert en lecture et en écriture, et ces opérations
commencent au début du fichier (le fichier est crée s’il n’existe pas)
“a ”: le fichier est ouvert en écriture seule, le pointeur est place en fin de
fichier. Si le fichier n’existe pas, il est créé.
“a+ ”: le fichier est ouvert en lecture et écriture, le pointeur est place en fin
de fichier. Si le fichier n’existe pas, il est créé.
Les Fichiers
LST INFO 88
Fermeture du fichier:
Apres avoir ouvert un fichier pour y effectuer des opérations de
lecture ou d’écriture, il vous impérativement le fermer pour éviter
tous les problèmes qui pourraient résulter d’une tentative
d’ouverture du même fichier de la part d’un autre script ou du
même script ouvert par une autre connexion.
L’opération de fermeture est réalisée à l’aide de la fonction
suivantes:
fclose($monfichier)
Les Fichiers
89
Les Fichiers
Lire et écrire dans un fichier
Pour lire, on a deux possibilités :
lire caractère par caractère avec la fonction fgetc ;
lire ligne par ligne avec fgets.
<?php
// 1 : on ouvre le fichier
$monfichier = fopen('compteur.txt', 'r+');
// 2 : on lit la première ligne du fichier
$ligne = fgets($monfichier);
// 3 : quand on a fini de l'utiliser, on ferme le fichier
fclose($monfichier);
?>
Exemple :
$fichier = fopen("essai.txt","r");
$premier = fgetc($fichier);
echo "Premier Caractère : " . $premier;
fclose($fichier);
?>
90
Pour l'écriture, on peut :
utiliser fwrite et fputs.
Cette fonction va écrire la ligne que vous voulez dans le fichier.
Elle s'utilise comme ceci :
<?php fputs($monfichier, 'Texte à écrire'); ?>
La fonction fputs s’utilise la fonction fseek qui va replacer le curseur
où l'on veut dans le fichier.
Les Fichiers

Mais conteúdo relacionado

Semelhante a seance4-1 php.ppt

Php_Mysql.pdf
Php_Mysql.pdfPhp_Mysql.pdf
Php_Mysql.pdfETTAMRY
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP EL JAOUARI Ahmed
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfrachidimstapha
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academySoufiane SAHMI
 
PHP (Partie I) Par Mahdi Ben Alaya
PHP (Partie I) Par Mahdi Ben AlayaPHP (Partie I) Par Mahdi Ben Alaya
PHP (Partie I) Par Mahdi Ben AlayaMahdi Ben Alaya
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
chapitre 4-PHP5 module web part2 (1).pdf
chapitre 4-PHP5 module web part2 (1).pdfchapitre 4-PHP5 module web part2 (1).pdf
chapitre 4-PHP5 module web part2 (1).pdfimaneeaouattahee
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdfssuserc46a93
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxFrancisRUKAN
 
cours-gratuit.com--CoursPhp-id1055.ppt
cours-gratuit.com--CoursPhp-id1055.pptcours-gratuit.com--CoursPhp-id1055.ppt
cours-gratuit.com--CoursPhp-id1055.pptGroupeExcelMarrakech
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfRihabBENLAMINE
 

Semelhante a seance4-1 php.ppt (20)

Php_Mysql.pdf
Php_Mysql.pdfPhp_Mysql.pdf
Php_Mysql.pdf
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Programmation web cours php -- sahmi academy
Programmation web   cours php -- sahmi academyProgrammation web   cours php -- sahmi academy
Programmation web cours php -- sahmi academy
 
PHP (Partie I) Par Mahdi Ben Alaya
PHP (Partie I) Par Mahdi Ben AlayaPHP (Partie I) Par Mahdi Ben Alaya
PHP (Partie I) Par Mahdi Ben Alaya
 
PHP Training
PHP TrainingPHP Training
PHP Training
 
PHP.pptx
PHP.pptxPHP.pptx
PHP.pptx
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
chapitre 4-PHP5 module web part2 (1).pdf
chapitre 4-PHP5 module web part2 (1).pdfchapitre 4-PHP5 module web part2 (1).pdf
chapitre 4-PHP5 module web part2 (1).pdf
 
PHP mysql Xml.doc
PHP mysql Xml.docPHP mysql Xml.doc
PHP mysql Xml.doc
 
PHP mysql Xml.pdf
PHP mysql Xml.pdfPHP mysql Xml.pdf
PHP mysql Xml.pdf
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Cours php
Cours php Cours php
Cours php
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
 
Nouveautés php 7
Nouveautés php 7Nouveautés php 7
Nouveautés php 7
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptx
 
cours-gratuit.com--CoursPhp-id1055.ppt
cours-gratuit.com--CoursPhp-id1055.pptcours-gratuit.com--CoursPhp-id1055.ppt
cours-gratuit.com--CoursPhp-id1055.ppt
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
 

seance4-1 php.ppt

  • 1. LST INFO 1 PHP Hypertext Preprocessor LST Informatique FST 2016-2017 Mohamed OUZARF Techniques du web
  • 2. LST INFO 2 Modèle Client Base de données MySQL Serveur Script PHP internet requête réponse Document Html appel de la page extraction de données exécution
  • 3. LST INFO 3 Le navigateur demande une page web auprès du serveur. Le serveur traite le fichier demandé (qui peut contenir du code PHP), il le traite, puis l’envoie le résultat au navigateur. Le navigateur reçoit une page HTML. Il interprète le code HTML, CSS, javascript, … et affiche la page. Il arrive souvent que le serveur web ait besoin d’une autre application (par exemple un SGBD). Modèle
  • 4. LST INFO 4 Histoire du PHP Il a été créé en 1994 par Rasmus Lerdorf pour les besoins des pages web personnelles (livre d’or, compteurs, etc.). A l’époque, PHP signifiait Personnal Home Page. C’est un langage incrusté au HTML et interprété (PHP3) ou compilé (PHP4) côté serveur. Il dérive du C et du Perl dont il reprend la syntaxe. Il est extensible grâce à de nombreux modules et son code source est ouvert. Comme il supporte tous les standards du web et qu’il est gratuit. En 1997, PHP devient un projet collectif et son interpréteur est réécrit par “Zeev Suraski et Andi Gutmans ” pour donner la version 3 qui s’appelle PHP Hypertext Preprocessor).
  • 5. 5 Intégration d’un script dans une page Les pages web sont au format html. Les pages web dynamiques générées avec PHP sont au format php. Le code source php est directement insérer dans le fichier html grâce au conteneur : <?php … ?> Exemple: <html> <body> <?php echo ’’Bonjour’’; ?> </body> </html>
  • 6. LST INFO 6 Exemple de script <html> <body> <h1>Mon premier script</h1> <?php echo “Bonjourn“ ; ?> </body> </html> Exemple de script, code source (côté serveur) : Résultat affiché par le navigateur :
  • 7. LST INFO 7 Commentaires Un script php se commente comme en C : Exemple : <?php // commentaire de fin de ligne /* commentaire sur plusieurs lignes */ # commentaire de fin de ligne comme en Shell ?> Tout ce qui se trouve dans un commentaire est ignoré. Il est conseillé de commenter largement ses scripts.
  • 8. LST INFO 8 Variables, constantes et types Les variables est le conteneur d’une valeur d’un des types utilisés en PHP . La déclaration des variables n’est pas obligatoire en début de script. L’initialisation des variables n’est pas non plus obligatoire. Les identificateurs de variable sont précédés du symbole « $ » (dollars). Exemple : $toto.
  • 9. LST INFO 9 Les noms des variables sont sensibles à la casse (majuscules et minuscules). $mavar et $Mavar ne désignent pas la même variable. Le nom commence par un caractère alphabétique, pris dans les ensembles [a-z] ,[A-Z] ou par le caractères de soulignement( _ ). Les variables peuvent être de type entier (integer), réel (double), chaîne de caractères (string), tableau (array), objet (object), booléen (boolean). Variables, constantes et types
  • 10. LST INFO 10 L’affectation consiste à donner une valeur à une variable. Lors de la création d’une variable, vous ne déclarez pas son type. C’est la valeur que vous lui affectez qui détermine ce type.  Initialiser une variable : affecter une valeur initiale qui pourra éventuellement être modifiée par le programme. Le symbole d'affectation est le signe =.  $i_i = 4 ; // initialisation par un entier  $s_ecole = "ENITA Bx"; // initialisation par une chaîne $s_w = "1.2 euros"; // initialisation par une chaîne $d_nb=12345678.99; // initialisation par un réel  $t_tb[ ] = 100; // initialisation du 1er élément du tableau Variables, constantes et types
  • 11. LST INFO 11 Dans php, vous pouvez affecter une aussi par référence. -L’affectation par référence, au moyen de l’operateur =, l’opérande de droite est une variable qui doit être précédée du caractère &. Variables, constantes et types Exemple 1 : $toto = 100; // la variable $toto est initialisée à la valeur 100 $foobar = &$toto; // la variable $foobar fait référence à $toto $toto++; // on change la valeur de $toto echo $foobar; /* qui est répercutée sur $foobar qui vaut alors 101*/
  • 12. LST INFO 12 Quelques fonctions utiles pour les variables:  empty($var) : renvoie vrai si la variable est vide  isset($var) : renvoie vrai si la variable existe  unset($var) : détruit une variable  gettype($var) : retourne le type de la variable  settype($var, “type”) : convertit la variable en type “type”(cast)  is_long(), is_double(), is_string(), is_array(), is_object(), is_bool(), is_float(), is_numeric(), is_integer(), is_int()… Variables, constantes et types
  • 13. LST INFO 13 Variables, constantes et types
  • 14. LST INFO 14 Lors de l’envoi de données d’un formulaire vers le serveur, le script qui reçoit les informations doit pouvoir détecter l’existence d’une réponse dans les champs du formulaire. Les fonctions isset() et empty() permettent ce type de contrôle. - La fonction isset(), dont la syntaxe est la suivante: Boolean isset($var); renvoie TRUE si la variable var est définie, FALSE sinon - La fonction empty(), dont la syntaxe est la suivante: Boolean empty($var ); retourne la valeur TRUE si la variable $var n’est pas initialisée à la valeur 0 ou NULL ou la chaine “0” et la valeur FALSE si elle a une valeur quelconque. Contrôle d’état d’une variable
  • 15. 15 La portée d’une variable est limitée au bloc dans lequel elle a été crée. Une variable locale à une fonction n’est pas connue dans le reste du programme. Une variable crée dans un bloc n’est pas connue dans les autres blocs, mêmes supérieurs. Opérateurs d’assignement : = (affectation), *= ($x*=$y équivalent à $x=$x*$y), /=, +=, -=, %= Opérateurs logiques : and, && (et), or, || (ou), xor (ou exclusif), ! (non) Variables, constantes et types
  • 16. LST INFO 16 Opérateurs arithmétiques : Variables, constantes et types Opérateur description + addition - soustraction * Multiplication / Division % Modulo ++ et -- Décrémentation et incrémentation (Ces deux derniers peuvent être pré ou post fixés
  • 17. LST INFO 17 Opérateur Description = = Test l’égalité de deux valeurs $a=345; $b=“345” ou $b=“345 elements” $a= =$b; TRUE != ou <> Test l’inégalité de deux valeurs = = = Test l’identité des valeurs et des types de deux expressions. $a=345; $b=“345”; $a= = =$b; False !== Test la non-identité de deux expression < et <= Test inferieur ou (inferieur ou égal) > et >= Test supérieur ou (supérieur ou égal) Les opérateurs de comparaison
  • 18. LST INFO 18 Opérateur Description OR Test si l’un au mois des opérandes à la valeur TRUE. || Equivaut à l’opérateur OR mais n’a pas la même priorité. XOR Test si l’un et un seul des opérandes à la valeur TRUE. AND Test si les eux opérandes en la même valeur TRUE && Equivaut à l’opérateur AND mais n’ a pas la même priorité ! Operateur unaire de négation, qui inverse la valeur de l’opérande. Les operateurs logiques
  • 19. LST INFO 19 Opérateurs arithmétiques : Variables, constantes et types
  • 20. LST INFO 20 Il existe en php un grand nombre de constantes prédéfinis, que vous pouvez notamment utiliser dans les fonctions comme paramètres permettant de définir des options. Le code suivant: <?php Print_r(get_defined_constants( )); ?> Permet d’afficher l’ensemble des constantes existantes. Les constantes ne portent pas le symbole $ (dollars) en début d’identificateur et ne sont pas modifiables. Variables, constantes et types
  • 21. Les constantes sont manipulés à l’aide de la syntaxe define: define (‘’constante’’, ‘’valeur’’); Exemple 1 : define(‘’author’’,’’Foobar’’); echo author; // affiche ‘Foobar’ Exemple 2 : define(“MY_YEAR”,1980); echo MY_YEAR; // affiche 1980 Variables, constantes et types Exemple 3 : Define ("font", "<FONT size=4 color=#FF0000><B>") defined (”author") ; // renvoi 1 defined (”my_date") ; // renvoi 0 Remarque : test d’existense de constante:
  • 22. LST INFO 22 Dans php, il n’existe pas de déclaration explicite du type d’une variable lors de sa création. Php permet la manipulation d’un certain nombre de types : Les types scalaire de base: Entiers, flottants, chaine de caractères, booléens. Les types composes: tableaux (array), objet (object) Les types spécieux: type resource, type nul Variables, constantes et types
  • 23. Les Structures de contrôle Structures conditionnelles (même syntaxe qu’en langage C) : if( ... ) { … } elseif { … } else { … } <!DOCTYPE html> <html> <body> <?php $t = date("H"); echo "<p>The hour (of the server) is " . $t; echo ", and will give the following message:</p>"; if ($t < "10") { echo "Have a good morning!"; } elseif ($t < "20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?> </body> </html>
  • 24. <?php $color = "red"; switch ($color) { case "red": echo "Your favorite color is red!"; break; case "blue": echo "Your favorite color is blue!"; break; case "green": echo "Your favorite color is green!"; break; default: echo "Your favorite color is neither red, blue, nor green!"; } ?> switch-case Les Structures de contrôle switch( … ) { case … : { … } break; … default : { … } }
  • 25. Les Structures de contrôle Structures de boucle (même syntaxe qu’en langage C) : for( … ; … ; … ) { … } while( … ) { … } do { … } while( … );
  • 26. Les Structures de contrôle --------------------------------- FOREACH---------------------------------- foreach($tableau as $valeur) { // bloc utilisant la valeur de l’élément courant } foreach ($tableau as $key => $value){ //commandes } La structure de langage foreach fournit une façon simple de parcourir des tableaux. foreach ne fonctionne que pour les tableaux et les objets,
  • 27. Structures de contrôle (FOR) Structures de boucle (même syntaxe qu’en langage C) : <?php for ($x=0; $x<=50; $x=$x+5) { echo '<p>variable $x is now = ' . $x . '</p>'; } ?> Sortie: variable $x is now = 0 variable $x is now = 5 . . variable $x is now = 40 variable $x is now = 45 variable $x is now = 50 html> <head> <title>Titres</title> </head> <body> <?php for ($ x=1; $x<=6; $x=$x+1) { echo "<h" . $x . ">Heading levels</h" . $x . ">"; } ?> </body> </html> Sortie: Heading levels Heading levels Heading levels Heading levels Heading levels Heading levels
  • 28. Structures de contrôle (While et Do-while) Structures de boucle (même syntaxe qu’en langage C) <?php $x = 1; while ($x <= 50) { echo "<p>This text is repeated 50 times</p>"; $x = $x + 1; } ?> Sortie: This text is repeated 50 times This text is repeated 50 times . . This text is repeated 50 times This text is repeated 50 times This text is repeated 50 times <?php $i = 1; do { echo $i . '<br />'; $i++; }while( $i < 5 ); ?> Sortie: 1 2 3 La différence entre les deux réside dans le fait que dans le cas de la boucle while, la condition est examinée avant la boucle tandis que pour la boucle do-while elle est éxaminée à la fin.
  • 29. LST INFO 29 Mathématiques Le module de base de PHP offre un grand nombre de fonctions mathématiques utiles..  abs($x) : valeur absolue  ceil($x) : retourne l’entier n le plus proche à $x tel que $x <=n  floor($x) : la partie entière de $x .  pow($x,$y) : x à la puissance y  round($x,$i) : arrondi de x à la ième décimale  max($a, $b, $c …) : retourne l’argument de valeur maximum  pi() : retourne la valeur de Pi  Et aussi : cos, sin, tan, exp, log, min, pi, sqrt… Quelques constantes :  M_PI : valeur de pi (3.14159265358979323846)  M_E : valeur de e (2.7182818284590452354)
  • 30. 30 Chaînes de caractères Une variable chaîne de caractères n’est pas limitée en nombre de caractères. Elle est toujours délimitée par des simples quotes ou des doubles quotes. Si vous utilisez les doubles quotes pour délimiter une chaîne, alors les variables et les caractères contenus dans cette chaîne sont évalués. Ce n’est pas le cas si vous utilisez les simples quotes. Exemples : <? php $Nom=“saad”; echo “Bonjour $Nom”; // affiche Bonjour saad, la variable $Nom est évaluée echo ‘Bonjour $Nom’; // affiche Bonjour $Nom , la variable $Nom n’est pas évaluée ?>
  • 31. LST INFO 31 Exemple : echo ‘’Hello Word !n’’; Caractères spéciaux Description n nouvelle ligne r retour à la ligne t tabulation horizontale antislash $ et “ caractère dollars et double quotte Chaînes de caractères
  • 32. LST INFO 32 Chaînes de caractères Opérateur de concaténation de chaînes : . (point) Exemples: <?php $nom = ’’saad ’’. echo ’’Nom : ’’. $nom; // affiche Nom saad. ?>
  • 33. LST INFO 33 Longueur d’une chaîne de caractères.  Pour déterminer le nombre de caractère d’une chaine, utilisez la fonction strlen( ), dont la syntaxe est la suivante: int strlen( string $ch).  La fonction strlen() peut servir, par exemple, à vérifier qu’un code postal saisi par un internaute comporte bien cinq chiffres.  Exemple: $code="7508”; if ( strlen($code) !=5 ) echo “code erroné !” Chaînes de caractères
  • 34. LST INFO 34 Comparaison de chaines: Les opérateurs de comparaison usuels sont utilisables avec les chaînes. Cela inclus bien sur les operateurs d’égalité (= =) et d’identité (= = =), ce dernier ne permettant d’obtenir la valeur TRUE dans une expression conditionnelle que si les deux opérandes ont non seulement la même valeur mais aussi le même type Pour comparer des chaînes et obtenir leur ordre alphabétique, php dispose de deux fonctions: Int strcmp( string $ch1, string $ch2) Int strcasecmp( string $ch1, string $ch2) Leur fonctionnement est identique, mais la première fonction est sensible à la casse alors que la seconde ne l’est pas. Elle retourne toute les deux un nombre négatif(généralement -1) si $ch1 est inférieure à $ch2, un nombre positif(généralement 1) dans le cas contraire et 0 en cas d’égalité. Chaînes de caractères
  • 35. Fonction: création LST INFO 35 <?php function DireBonjour($nom) { echo 'Bonjour ' . $nom . ' ! <br >'; } DireBonjour('Marie'); DireBonjour('Patrice'); DireBonjour('Edouard'); DireBonjour('Pascale'); DireBonjour('François'); DireBonjour('Benoît'); DireBonjour('Père Noël'); ?> Exemple1
  • 36. Fonction: création LST INFO 36 Exemple2 <?php // Ci-dessous, la fonction qui calcule le volume du cône: syntaxe déclaration function VolumeCone($rayon, $hauteur) { // calcul du volume $volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); return $volume; // indique la valeur à renvoyer, ici le volume } // utilisation de la fonction : $volume = VolumeCone(3, 1); echo 'Le volume d'un cône de rayon 3 et de hauteur 1 est de ' . $volume; echo 'Le volume d'un cône de rayon 3 et de hauteur 1 est de ' . $VolumeCone(5, 2); ?>
  • 37. LST INFO 37 La fonction array( ) permet de créer de manière rapide des tableaux indicés ou associatifs. C’est elle qui sera le plus souvent utilisé pour la création de tableaux. La façon la plus élémentaire de créer un tableau indicé consiste à définir individuellement une valeur pour chacun des ces éléments, de la manière suivante: $tab[n]=valeur; ou n est un indice entier quelconque, et « valeur » un scalaire ou une variable de type integer, double, boolean, string et array. Pour créer un tableau composé de plusieurs éléments en une seule opération, vous disposez de la fonction array(). $tab=array( valeur0, valeur1, …, valeurN) Les Tableaux
  • 38. 38 Les Tableaux 1° méthode 2° méthode 3° méthode Exemple Tabeaux indicés
  • 39. LST INFO 39 Les Tableaux Les tableaux associatifs: La même fonction array( ) permet aussi de créer rapidement un tableau associatif en définissant pour chacun de ses éléments une clé et une valeur. La syntaxe : $tabasso=array(“cléA” =>valeurA, “cléB” =>valeurB,… “cléZ” =>valeurZ) Chaque clé est une chaine de caractère délimitée par des guillemets. Pour lire la “valeurA” vous écrivez $tabasso[“cléA”]. Un tableau associatif est appelé aussi dictionnaire ou hashtable. On associe à chacun de ses éléments une clé dont la valeur est de type chaîne de caractères. L’initialisation d’un tableau associatif est similaire à celle d’un tableau normal. Exemple 1 : $personne = array(‘’Nom’’ => ‘’Alami’’, ‘’Prenom’’ => ‘’Saad’’);
  • 40. LST INFO 40 Les Tableaux Exemple Les tableaux associatifs: 1° méthode 2° méthode
  • 41. LST INFO 41 Les tableaux multidimensionnels: PHP ne comporte pas de méthodes explicite de création de tableaux multidimensionnels. Exemple de tableau(4,3): $tabmulti=array( array(“L_0-C_0”, “L_0-C_1”, “L_0-C_2”), array(“L_1-C_0”, “L_1-C_1”, “L_1-C_2”), array(“L_2-C_0”, “L_2-C_1”, “L_2-C_2”), array(“L_3-C_0”, “L_3-C_1”, “L_3-C_2”), ); Les Tableaux
  • 42. Exemple LST INFO 42 <?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>"; echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>"; echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>"; echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>"; ?> Volvo: In stock: 22, sold: 18. BMW: In stock: 15, sold: 13. Saab: In stock: 5, sold: 2. Land Rover: In stock: 17, sold: 15.
  • 43. <?php $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); for ($row = 0; $row < 4; $row++) { echo "<p><b>Row number $row</b></p>"; echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$cars[$row][$col]."</li>"; } echo "</ul>"; } ?> Exemple
  • 44. LST INFO 44 //********************************************* // Lecture d’un tableau associatif //********************************************* $montab=array("France"=>"Paris","Great Britain"=>"London","Belgie"=>"Brussel"); While(list($cle, $valeur) = each($montab)) { echo “ L’élément de clé <b>$cle</b> a la valeur <b>$valeur</b> <br>"; } ?> Les Tableaux Les deux premiers éléments sont : Paris et London L‘élément de clé France a la valeur Paris L’élément de clé Great Britain a la valeur London L‘élément de clé Belgie a la valeur Brussel L‘élément d’indice 0 a la valeur Paris L‘élément d’indice 1 a la valeur London L‘élément d’indice 2 a la valeur Brussel
  • 45. LST INFO 45 Exemple Passer en revue un tableau avec each() <?php $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry'); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $valn"; } ?> a => apple b => banana c => cranberry Retourne la paire clé/valeur courante du tableau array
  • 46. LST INFO 46 est très efficace pour parcourir les tableaux associatifs mais fonctionne également pour les tableaux indicé. Pour les tableaux indicé vous écrivez le code suivant: foreach($tab as $valeur) { // bloc de code utilisant les valeurs de la variable $valeur; } Pour les tableaux associatif vous écrivez le code suivant: foreach($tab as $cle=>$valeur) { // bloc de code utilisant les valeurs de la variable $cle et $valeur; } Les Tableaux L’instruction foreach ( ):
  • 47. LST INFO 47 Les Tableaux Exemple de l’instruction foreach ( ):
  • 48. LST INFO 48 Les Tableaux Exemple de l’instruction foreach ( ):
  • 49. LST INFO 49 Les Tableaux Quelques fonctions: count($tab), sizeof($tab) : retournent le nombre d’éléments du tableau in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab list($var1,$var2…) : transforme une liste de variables en tableau range($i,$j) : retourne un tableau contenant un intervalle de valeurs shuffle($tab) : mélange les éléments d’un tableau sort($tab) : trie les éléments du tableau rsort($tab) : trie inverse les éléments du tableau implode($str,$tab): retournent une chaîne de caractères contenant les éléments du tableau $tab joints par la chaîne de jointure $str. explode($delim,$str) : retourne un tableau dont les éléments résultent du hachage de la chaîne $str par le délimiteur $delim array_merge($tab1,$tab2,$tab3…) : concatène les tableaux passés en arguments array_rand($tab) : retourne un élément du tableau au hasard
  • 50. LST INFO 50 Les Tableaux Quelques fonctions : array_count_values($tab) : retourne un tableau contenant les valeurs du tableau $tab comme clés et leurs fréquence comme valeur (utile pour évaluer les redondances) array_keys($tab) : retourne un tableau contenant les clés du tableau associatif $tab array_values($tab) : retourne un tableau contenant les valeurs du tableau associatif $tab array_search($val,$tab) : retourne la clé associée à la valeur $val Quelques fonctions alternatives pour le parcours de tableaux (normaux ou associatifs) reset($tab) : place le pointeur sur le premier élément current($tab) : retourne la valeur de l’élément courant next($tab) : place le pointeur sur l’élément suivant prev($tab) : place le pointeur sur l’élément précédant each($tab) : retourne la paire clé/valeur courante et avance le pointeur
  • 51. LST INFO 51 Rechercher dans un tableau array_key_exists : pour vérifier si une clé existe dans l'array ; in_array : pour vérifier si une valeur existe dans l'array ; array_search : pour récupérer la clé d'une valeur dans l'array.
  • 52. LST INFO 52 <?php $coordonnees = array ( 'prenom' => 'François', 'nom' => 'Dupont', 'adresse' => '3 Rue du Paradis', 'ville' => 'Marseille'); if (array_key_exists('nom', $coordonnees)) { echo 'La clé "nom" se trouve dans les coordonnées !'; } if (array_key_exists('pays', $coordonnees)) { echo 'La clé "pays" se trouve dans les coordonnées !'; } ?> array_key_exists
  • 53. LST INFO 53 Vérifier si une valeur existe dans l'array : in_array <?php $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise'); if (in_array('Myrtille', $fruits)) { echo 'La valeur "Myrtille" se trouve dans les fruits !'; } if (in_array('Cerise', $fruits)) { echo 'La valeur "Cerise" se trouve dans les fruits !'; } ?>
  • 54. LST INFO 54 Récupérer la clé d'une valeur dans l'array : array_search <?php $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise'); $position = array_search('Fraise', $fruits); echo '"Fraise" se trouve en position ' . $position . '<br />'; $position = array_search('Banane', $fruits); echo '"Banane" se trouve en position ' . $position; ?>
  • 55. LST INFO 55 Créer un lien avec des paramètres nous pouvons créer des liens en HTML qui transmettent des paramètres d'une page vers une autre. Soit: deux fichiers sur votre site : index.php (l'accueil) ; bonjour.php. Ce lien appelle la page bonjour.php et lui envoie deux paramètres : nom : Dupont ; prenom : Jean. Communication avec PHP
  • 56. LST INFO 56 Envoyer des paramètres dans l'URL Le point d'interrogation sépare le nom de la page PHP des paramètres. Ensuite, ces derniers s'enchaînent selon la forme: nom=valeur et sont séparés les uns des autres par le symbole &. Communication avec PHP
  • 57. LST INFO 57 Récupérer les paramètres en PHP Nom Valeur $_GET['nom’] Dupont $_GET['prenom’] Jean la page bonjour.php va automatiquement créer un array au nom : $_GET. Il s'agit d'un array associatif dont les clés correspondent aux noms des paramètres envoyés en URL. Communication avec PHP
  • 58. 58 <head> <title>Réception de paramètres dans l'URL</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <p>Bonjour <?php echo $_GET['prenom'] . ' ' . $_GET['nom']; ?> !</p> </body> <head> <title>Envoi de paramètres dans l'URL</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <p><a href="bonjour.php?nom=Dupont&prenom=Jean">Dis-moi bonjour !</a></p> </body> Dis-moi bonjour ! Bonjour Jean Dupont ! http://localhost/tpdut2/bonjour.php?nom=Dupont&prenom=Jean
  • 59. LST INFO 59 Les formulaires introduits dans le HTML depuis plus anciennes versions sont l’élément essentiel qui permet l’interactivité entre un site et ses visiteurs. Ils constituent pour cette raison la base de la création de site dynamique Tout échange entre visiteur et serveur passe par un formulaire, dans lequel l’utilisateur peut saisir textes ou mot de passe, opérer des choix grâce à des boutons radio, des cases à cocher ou des listes de sélection, envoyer ses propres fichiers depuis le poste client. Il est donc important d’en maitriser la création à la fois en HTML, Pour obtenir des formulaires présentables, et en PHP, pour gérer les informations fournies par le formulaires au script coté serveur. Les Formulaires
  • 60. LST INFO 60 Récupération des données du formulaire Que se passe-il lorsque l’utilisateur clique sur le bouton d’envoi? Une requête HTTP est envoyée au serveur à destination du script désigné par l’attribut action de l’élément <form> . La requête contient toutes les associations entre les noms des champs et de leur valeur. Ces association se trouvent dans l’en-tête HTTP si la méthode POST est utilisée et dans l’URL s’il s’agit de la méthode GET. Les Formulaires
  • 61. LST INFO 61 Valeurs uniques:  Les valeurs uniques proviennent des champs de formulaire dans lesquels l’utilisateur ne peut entrer qu’une valeur, un texte par exemple, ou ne peut faire qu’un seul choix (bouton radio, liste de sélection à choix unique).  Ces valeurs sont contenues sur le serveur dans des tableaux associatifs dits super-globaux appelés $_POST et $_GET, selon la méthode choisie.  Les clés de ces tableaux sont les noms associes aux champs par l’attribut name Les Formulaires
  • 62. LST INFO 62  Cas de la méthode POST <html> <head> <title>formulaire traité par php</title> </head> <body> <form action=“form.php ” method="post" > <fieldset> <legend><b>Infos</b></legend> nom: <input type="text" name="nom" size="40"/> </br> Débutant: <input type="radio" name="niveau" value="débutant"/> Initié: <input type="radio" name="niveau" value="initié" /> </br> <input type="reset" value="effacer"> <input type="submit" value="envoyer"> </fieldset> </form> Les Formulaires formulaire.php
  • 63. 63 <?php if(isset($_POST["nom"]) && isset($_POST["niveau"])) { echo"<h2> Bonjour ".$_POST["nom"]." vous êtes ".$_POST["niveau"]." en PHP</h2>";} ?> Les Formulaires suite form.php
  • 64. Cas de la méthode GET: Avec la méthode GET vous récupérez les données du formulaire dans les variables $_GET[“nom”] et $_GET[“niveau”], comme ci-dessous: <?php If ( isset($_GET["nom"] ) && isset($_GET["niveau"] ) { echo"<h2> Bonjour ".$_GET["nom"]." vous êtes ".$_GET["niveau"]." en PHP</h2>";} ?> Contrairement à ce qui ce passe avec la méthode POST, vous constatez que lors du clic sur le bouton d’envoi l’adresse de la page cible désignée par l’attribut action est suivi par le caractère ? Puis le nom de chaque champ et la valeur qui y associée. Les Formulaires
  • 65. LST INFO 65 Les valeurs multiples Certains champs de formulaire peuvent permettre aux visiteurs de saisir plusieurs valeurs sous un même nom de composant. Cela peut concerner un groupe de cases à cocher ayant le même attributs name, par exemple, dont il est possible de cocher une ou plusieurs cases simultanément. Ce peut également être le cas d’une liste de sélection ayant toujours un nom unique mais dans laquelle l’attribut multiple= “multiple” est défini. Dans tous les cas, ce n’est pas une valeur scalaire mais un tableau qui est récupéré côté serveur, il faut pour cela faire suivre le nom du composant de crochets, comme pour créer une variable de type array. Les Formulaires
  • 66. <form action="checkbox.php"> <input type="hidden" name="envoi" value="yes"> <input type="text" name="voiture"><br> <input type="checkbox" name="options[]" value="Injection au méthane">&nbsp;Injection au méthane<br> <input type="checkbox" name="options[]" value="Trois roues de secours">&nbsp;Trois roues de secours<br> <input type="checkbox" name="options[]" value="Miroir de courtoisie dans le coffre">&nbsp;Miroir de courtoisie dans le coffre<br> <input type="checkbox" name="options[]" value="Ventilation des rotules (côté conducteur)">&nbsp;Ventilation des rotules côtés conducteur)<br> 1<input type="checkbox" name="options[]" value="Kit James-Bond ">&nbsp;Kit James-Bond <br> <input type="submit"> </form>
  • 67. <?php $envoi = $_GET['envoi']; //aiguilleur $voiture = $_GET['voiture']; //Nom de la voiture $options = $_GET['options']; //Contenu des cases à coche if ($envoi == 'yes') { $options_text = implode(', ',$options); echo '<h1>L'auto de vos rêves &quot;'.$voiture.'&quot;:</h1>'; echo '<p>options:<br><br>'.$options_text.'</p>'; } ?>
  • 69. L’inclusion d’un élément HTML <input type=“file”> dans un formulaire <form action="file.php" method="post" enctype="multipart/form-data"> crée une situation particulière. Il ne s’agit plus de transmettre une ou plusieurs valeurs scalaires au serveur mais l’intégralité d’un fichier, lequel peut avoir une taille important et un type quelconque. Ce fichier doit évidement être présent sur l’ordinateur du visiteur. Pour la sécurité de votre site, vous utilisez l’attribut accept de l’élément <input>. Cet attribut peut prendre un grand nombre de valeurs, correspondant aux type MIME des fichier acceptés, par exemple “image/gif” ou “text/html”. Un fichier d’un type différent est rejeté. L’élément <form> doit avoir l’attribut method à la valeur post et l’attribut enctype à la valeur multipart/form-data. Transfert de fichier vers le serveur
  • 70. LST INFO 70 L’élément <input type=“file”/> Permet le transfert de fichier du poste client vers le serveur. L’attribut name est indispensable. L’attribut size limite la taille de zone de saisie. Et plus particulièrement l’attribut accept, qui définit le ou les types de fichier acceptés. <input type=“file” name=“monfichier” accept=“image/gif, image/ipeg” size=“ 30”/> Transfert de fichier vers le serveur
  • 71. LST INFO 71 Transfert de fichier vers le serveur Le formulaire doit comporter les quelques spécificités suivantes: - utilisation de la method="post" la seule permettant le transfert de données volumineuses - une option enctype="multipart/form-data" indiquant un échange de données - un champ caché (optionnel) indiquant la taille maximale (en octets) autorisée pour le fichier à "uploader" - un champ de type fichier permettant entre autre à l'utilisateur de sélectionner le fichier dans son système de fichiers. il doit renvoyer (champ action) vers un script PHP capable de "réceptionner" le fichier.
  • 72. 72 <head> <title>file</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <form action="file.php" method="post" enctype="multipart/form-data"> <p> Formulaire d'envoi de fichier :<br /> <input type="file" name="monfichier" /><br /> <input type="submit" value="Envoyer le fichier" /> </p> </form> Transfert de fichier vers le serveur
  • 73. 73 <?php // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['monfichier']['size'] <= 1000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['monfichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png'); if (in_array($extension_upload, $extensions_autorisees)) } } ?>
  • 74. LST INFO 74 PHP fourni alors de nouvelles informations dans un tableau associatif $_FILE[ ] . Ce tableau contient les clés suivantes: tmp_name qui contient le nom (et chemin) du fichier temporaire sous lequel le fichier a été stocké. name qui contient le nom qu'avait le fichier dans l'espace de l'utilisateur size qui contient la taille du fichier en octets type qui contient le "MIME type" du fichier (ex: text/html, image/gif, etc.) Transfert de fichier vers le serveur
  • 75. LST INFO 75 Transfert de plusieurs fichiers Il est possible de proposer à l’utilisateur de transférer plusieurs fichiers simultanément pour lui éviter de recommencer plusieurs fois la même opération à partir de l’exemple précédent. Vous devez en ce cas faire en sorte que l’éléments <input type=“file” ….> Soient tous écrits de la manière suivant: <input type=“file” name= “file[ ]” accept= “image/gif” size =“50” /> Transfert de fichier vers le serveur
  • 76. EXEMPLE: envoyer deux fichiers avec le formulaire LST INFO 76 <form method="post" action="reception.php" enctype="multipart/form-data"> <label for="icone">Icône du fichier (JPG, PNG ou GIF | max. 15 Ko) :</label><br /> <input type="file" name="icone" id="icone" /><br /> <label for="mon_fichier">Fichier (tous formats | max. 1 Mo) :</label><br /> <input type="hidden" name="MAX_FILE_SIZE" value="1048576" /> <input type="file" name="mon_fichier" id="mon_fichier" /><br /> <label for="titre">Titre du fichier (max. 50 caractères) :</label><br /> <input type="text" name="titre" value="Titre du fichier" id="titre" /><br /> <label for="description">Description de votre fichier (max. 255 caractères) :</label><br /> <textarea name="description" id="description"></textarea><br /> <input type="submit" name="submit" value="Envoyer" /> </form>
  • 77. LST INFO 77 EXEMPLE: envoyer deux fichiers avec le formulaire
  • 79. LST INFO 79 Les Sessions  La session est un mécanisme qui permet à PHP de garder "en mémoire" un nombre illimité de valeurs entre plusieurs requêtes d'un même utilisateur.  Les sessions permettent de conserver des variables tant que l'internaute reste connecté au site  Elles servent aux statistiques( visiteurs); transmettre des variables sur toutes les pages de votre site.  -L’utilisation du mécanisme des sessions obéit aux étapes générales suivantes:
  • 80. LST INFO 80 Les Sessions 1- Ouverture d’une session dans chaque page ayant accès aux données à l’aide de la fonction session_start( ) de syntaxe: session_start( ); 2 – Chaque utilisateur se voit attribuer un identifiant de session, lié à la session en cours, et donc différent lors d’une autre connexion. 3- Lecture des variables de session dans chaque page en fonction des besoins à l’aide du tableau superglobal $_SESSION 4- Fermeture de la session après destruction éventuelle des variables de session, de synthaxe: session_destroy(); EXEMPLES ‘openclassrooms’
  • 83. LST INFO 83 Les Cookies  Un cookie est un petit fichier qui peut être écrit par un script PHP ou par un autres langages, tel JavaScript, et enregistré sur l’ordinateur du visiteur.  Ce fichier contient du texte et permet de « retenir » des informations sur le visiteur. Par exemple, vous inscrivez dans un cookie le pseudo du visiteur, comme ça la prochaine fois qu'il viendra sur votre site, vous pourrez lire son pseudo en allant regarder ce que son cookie contient.  Les cookies font l’objet de limites d’emploi. Un site donné ne peut écrire beaucoup de cookies sur un même poste client. Chacun d’eux ne doit pas dépasser 4 Ko, ce qui empêche le stockage d’information de taille important. Un cookie est souvent utilisé pour identifier un utilisateur.
  • 84. LST INFO 84 Les Cookies  Ecriture des cookies Pour écrire un cookie, on utilise la fonction setcookie( ), dont la syntaxe est la suivante: setcookie($cookie_name, $cookie_value, time() + $temps ); Avec : $temps = 3600*24*365 Ici temps de validité est de 1 an. Les paramètres de la fonction setcookie( ) sont les suivants: $cookie_name: est une chaîne définissant le nom du cookie. Ce nom obéissant aux même règles des noms que les variables, il faut éviter les caractères spéciaux. $cookie_value : contient la valeur associe a cookie, il s’agit d’une chaine de caractère. EXEMPLES ‘openclassrooms’
  • 85. <?php setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null, null, false, true); // On écrit un cookie setcookie('pays', 'France', time() + 365*24*3600, null, null, false, true); // On écrit un autre cookie... // Et SEULEMENT MAINTENANT, on peut commencer à écrire du code html ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Ma super page PHP</title> </head> <body> un code PHP pour afficher de nouveau le pseudo du visiteur : <p> Hé ! Je me souviens de toi !<br /> Tu t'appelles <?php echo $_COOKIE['pseudo']; ?> et tu viens de <?php echo $_COOKIE['pays']; ?> c'est bien ça ? </p>
  • 86. LST INFO 86 Création, ouverture et fermeture d’un fichier avant de réaliser des opérations de lecture ou d’écriture sur un fichier, vous devez l’ouvrir explicitement. La syntaxe de la fonction: $monfichier = fopen(‘ nom ‘, ‘ mode ‘) le premier paramètre est une chaine de caractère indiquant le nom du fichier, ce nom peut être sous une forme réduite (le nom du fichier seul) le deuxième paramètre détermine le mode d’accès au fichier. Ce mode est codée dans une chaine et peut prendre les valeurs suivant: Les Fichiers
  • 87. LST INFO 87 “r ”: Le fichier est ouvert en lecture seule, et la lecture commence au début du fichier “r+”: Le fichier est ouvert en lecture et en écriture, et ces opérations commencent au début du fichier. “w” : Le fichier est ouvert en écriture seule, et l’écriture commence au début du fichier(le fichier est crée s’il n’existe pas) “w+”: Le fichier est ouvert en lecture et en écriture, et ces opérations commencent au début du fichier (le fichier est crée s’il n’existe pas) “a ”: le fichier est ouvert en écriture seule, le pointeur est place en fin de fichier. Si le fichier n’existe pas, il est créé. “a+ ”: le fichier est ouvert en lecture et écriture, le pointeur est place en fin de fichier. Si le fichier n’existe pas, il est créé. Les Fichiers
  • 88. LST INFO 88 Fermeture du fichier: Apres avoir ouvert un fichier pour y effectuer des opérations de lecture ou d’écriture, il vous impérativement le fermer pour éviter tous les problèmes qui pourraient résulter d’une tentative d’ouverture du même fichier de la part d’un autre script ou du même script ouvert par une autre connexion. L’opération de fermeture est réalisée à l’aide de la fonction suivantes: fclose($monfichier) Les Fichiers
  • 89. 89 Les Fichiers Lire et écrire dans un fichier Pour lire, on a deux possibilités : lire caractère par caractère avec la fonction fgetc ; lire ligne par ligne avec fgets. <?php // 1 : on ouvre le fichier $monfichier = fopen('compteur.txt', 'r+'); // 2 : on lit la première ligne du fichier $ligne = fgets($monfichier); // 3 : quand on a fini de l'utiliser, on ferme le fichier fclose($monfichier); ?> Exemple : $fichier = fopen("essai.txt","r"); $premier = fgetc($fichier); echo "Premier Caractère : " . $premier; fclose($fichier); ?>
  • 90. 90 Pour l'écriture, on peut : utiliser fwrite et fputs. Cette fonction va écrire la ligne que vous voulez dans le fichier. Elle s'utilise comme ceci : <?php fputs($monfichier, 'Texte à écrire'); ?> La fonction fputs s’utilise la fonction fseek qui va replacer le curseur où l'on veut dans le fichier. Les Fichiers