Académique Documents
Professionnel Documents
Culture Documents
Côté Serveur
1
Principe
2
Scripts côté serveur :
les quatre leaders du marché
Perl
3
Modèle du fonctionnement du
PHP
4
Modèle du fonctionnement
du PHP
Architecture (avec Apache)
APACHE
PHP
POST/GET
Répertoires
web
6
Historique
7
PHP, qu'est-ce que c'est ?
8
Premier programme
<HTML>
<HEAD><TITLE>Mon premier programme</TITLE></HEAD>
<BODY>
il est sur le serveur
<?php print date ("H i s"); ?>
</BODY>
</HTML>
9
Premier programme
Côté navigateur
<HTML>
<HEAD> <TITLE> Heure </TITLE> </HEAD>
<BODY>
<P>
Sur le serveur, il est actuellement 16:39:27
</P>
</BODY>
</HTML>
10
Généralité
Extension du fichier :
.php pour du PHP 4
Délimiteur :
<? ... ?>
11
Les bases du langage
Syntaxe du langage
12
Commentaires
13
Exemples de commentaires
<?php
/*commentaire multiligne*/
//commentaire une ligne
echo "<h2>PHP is Fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This ", "string ", "was ", "made ", "with multiple parameters.";
# Ceci est un commentaire style shell sur une seule ligne
?>
14
Syntaxe du langage
Variables, types et
opérateurs
15
Variables, types et
opérateurs (I)
Le typage des variables est implicite en php.
Il n’est donc pas nécessaire de déclarer leur type au préalable
ni même de les initialiser avant leur utilisation.
Les identificateurs de variable sont précédés du symbole "$" (dollars).
Exemple : $variable.
Les variables peuvent être de type entier (integer), réel (double), chaîne
de caractères (string), tableau (array), objet (object), booléen
(boolean)...
Il est possible de convertir une variable en un type primitif grâce au cast
(comme en C).
Exemple :
16
Booléen
17
Exemple
<?php
$valeur = true;
echo '<br/>affichage valeur à TRUE: "'.$valeur.'"';
$valeur = false;
echo '<br/>affichage valeur à FALSE: "'.$valeur.'"';
exit;
?>
18
Les entiers
19
Exemples
<?php
$a = 1234; // un nombre décimal
$a = -123; // un nombre négatif
$a = 0123; // un nombre octal (équivalent à 83 décimales)
$a = 0x1A; // un nombre hexadécimal (équivalent à 26 décimales)
?>
20
Nombres décimaux
21
Exemple
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>
22
Les chaînes de caractères
Syntaxe
Une chaîne de caractères littérale peut être
spécifiée de 2 façons différentes :
Entourée de guillemets simples
Entourée de guillemets doubles
23
Entourée de simple guillemet
24
Exemple
<?php
echo 'ceci est une chaîne simple';
25
Entourée de guillemet double
26
27
Chaînes de caractères (II)
Opérateur de concaténation de chaînes : . (point)
Exemple 1 :
$a = "Salam";
$b= " tout le monde";
echo $a.$b;
Exemple 2 :
$prenom = " Batou ";
$nom = $prenom. " Larbi ";
Exemple 3 :
$filiere = " 3ème année ";
$filiere.= " SIR ";
echo $filiere; 28
Chaînes de caractères (III)
Affichage d’une chaîne avec print :
Exemples:
print 'Hello Word.';
print "Nom : ". $name;
print("Bonjour");
Quelques fonctions:
strlen($str) : retourne le nombre de caractères d’une chaîne
strtolower($str) : conversion en minuscules
strtoupper($str) : conversion en majuscules
trim($str) : suppression des espaces de début et de fin de chaîne
substr($str,$i,$j) : retourne une sous chaîne (entre les positions i et j)
strnatcmp($str1,$str2) : comparaison de 2 chaînes
addslashes($str) : déspécialise les caractères spéciaux (‘, ‘’, \)
ord($char) : retourne la valeur ASCII du caractère
29
Variables, types et
opérateurs (II)
Quelques fonctions :
empty($var) : renvoie vrai si la variable est vide
Exemple :
30
Variables, types et
opérateurs (III)
Opérateurs arithmétiques :
+ (addition),
+=, -=, %=
31
Variables, types et
opérateurs (IV)
Opérateurs logiques :
and, && (et), or, || (ou), xor (ou exclusif), !
(non)
Opérateurs de comparaison :
== (égalité), < (inférieur strict), <= (inférieur
32
Syntaxe du langage
Les Constantes
33
Constantes
Exemple :
define("author",“SIR ");
Print author; // affiche ‘SIR’
define("MY_Year","2013");
print MY_Year; // affiche 2013
34
Syntaxe du langage
Mathématiques
35
Mathématiques
36
Mathématiques
Et aussi :
cos, sin, tan, exp, log, min, pi, sqrt…
Nombres aléatoires :
rand($x,$y) : valeur aléatoire entre x et y
37
Syntaxe du langage
Les Tableaux
38
Tableaux (I)
Un tableau peut être initialisé avec la syntaxe array.
Exemple :
$name=3;
$tab_colors = array('red', 'yellow', 'blue', 'white');
$tab = array(‘SIR', 2013, 20.5, $name);//on peut mettre n’importe quel type
39
Tableaux (II)
Parcours d’un tableau.
$tab = array(‘SIR’, ‘3’, ’FSTG’);
Exemple 1 :
$i=0;
while($i < count($tab)) { // count() retourne le nombre d’éléments
echo $tab[$i].’\n’;
$i++;
}
Exemple 2 :
foreach($tab as $elem) {
echo $elem.’’\n’’;
}
La variable $elem prend pour valeurs successives
tous les éléments du tableau $tab.
40
Tableaux (III)
Quelques fonctions:
41
Tableaux associatifs (I)
Exemple 1 :
$personne = array("Nom" => "SIR", "Prénom" => " 3ème année");
Exemple 2 :
$personne["Nom" ] = " SIR ";
$personne[" Prénom "] = " 3ème année ";
Ici la clé ‘’Nom’’ est associée la valeur ‘’SIR’’.
42
Tableaux associatifs (II)
Exemple 1 :
foreach($personne as $elem) {
echo $elem;
}
Exemple 2 :
foreach($personne as $key => $elem) {
echo ‘’$key : $elem’’;
}
Ici on accède simultanément aux clés et aux éléments.
43
Exemple
<?php
// ceci
$a = array( 'couleur' => 'rouge', 'gout' => 'sucre', 'forme' => 'rond', 'nom' => 'pomme', 4); // cette clé sera 0
// est complétement équivalent à
echo $a['couleur']."<br>" ;
echo $a['gout']."<br>" ;
echo $a['forme']."<br>";
echo $a['nom']."<br>";
echo $a[0]."<br>"; // cette clé sera 0
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
echo $b[0]." ".$b[1]." ".$b[2];
// va créer le tableau array( 0 => 'a' , 1 => 'b' , 2 => 'c' )
// ou plus simplement array('a' , 'b' , 'c' )
?>
44
Les tableaux
Quelques fonctions
array_count_values($tab) : retourne un tableau associatif contenant
les valeurs du tableau $tab comme clés et leurs fréquence comme
valeur
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
résultats:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
-------------------------------------------------------------
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
résultats:
Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => color
[1] => size
)
---------------------------------------------------------------------------
<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>
Array
(
[0] => XL
[1] => gold
)
------------------------------------------------------------------------------
Les tableaux
Quelques fonctions
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
Exemple :
<?php
$colors = array("red", "green", "blue");
$nbr = count($colors);
reset($colors);
for($i=1; $i<=$nbr; $i++) {
echo current($colors)."<br>";
next($colors)
}
?>
Les fonctions I
Exemple :
<?php
function test() {
$foo = "variable locale";
Quelques exemples :
function afficher($str1, $str2) { // passage de deux paramètres
echo ‘’$str1, $str2’’;
}
Exemple :
function f1() { // définition de la fonction f1
echo ‘’fonction f1…’’;
}
f1(); // appel de la fonction f1 définie plus haut
f2(); // appel de la fonction f2 pas encore définie
function f2() { // définition de la fonction f2
echo ‘’fonction f2’’;
}
Exemple :
function trigo($nbr) {
return array(sin($nbr), cos($nbr), tan($nbr)); // retour d’un
// tableau
}
$r = M_PI;
list($a, $b, $c) = trigo($r); /* affectation aux variables $a,$b
et
$c des éléments du tableau retourné par la fonction trigo */
echo '$a='.$a; echo "<br>";
echo '$b= '.$b; echo "<br>";
Fonctions dans une autre
fonction
<?php
function foo()
{
function bar()
{
echo "Je n'existe pas tant que foo() n'est pas appelé.\n";
}
}
/* Impossible d'appeler bar() ici
car il n'existe pas. */
foo();
/* Maintenant, nous pouvons appeler bar(),
car l'utilisation de foo() l'a rendu
accessible. */
bar();
?>
Valeur par défaut des arguments
de fonctions
<?php
function servir_cafe ($type = "cappuccino")
{ return "Servir un $type.\n"; }
echo servir_cafe()."<br>";
<?php
function carre ($num)
{
return $num * $num;
}
echo carre (4);
?>
Retourner un tableau d'une
fonction
<?php
function petit_nombre()
{
return array (0, 1, 2);
}
Syntaxe:
require("fichier.php");
Syntaxe:
include("fichier.php");
<?php
$color = 'verte';
$fruit = 'pomme';
?>
test.php
<?php
include 'vars.php';
?>
Inclusion de fichiers dans une
fonction
<?php
function foo()
{
global $color;
include 'vars.php';
<html>
<head>
<title> Le site INFOS PLUS</title>
</head>
<body>
<h1>Le site INFOS PLUS</h1>
<h1> Le site d'astuces à votre services...</h1>
<p>Contactez-moi au numéro de téléphone suivant :</p>
<p>INFOS PLUS PARIS : <i>01.99.01.01.01</i></p>
<p>Je vous attends ! Venez vite !</p>
<?
// insertion de l'entête
<?php require("entete.php"); ?>
<h1>bonjour</h1>
<h1>Présentation</h1>
<p>Ce site vous propose des centaines d'astuces concernant l'utilisation de l'outil informatique.</p>
<p>C'est d'actualité, non ?</p>
<p>Pour continuer la visite, cliquez sur le lien page suivante...</p>
<p><a href="suite.php">Page suivante</a></p>
</body>
</html>
<?php
// insertion de l'entête
require("entete.php"); ?>
<h1>La suite</h1>
<p>Salut !</p>
<p>Maintenant, si vous voulez continuer de visiter ce site, il va falloir me dire d'où vous êtes...</p>
<p>En fait, il n'y a pas de suite !</p>
<p><a href="index.php">Alors retourner à la page d'accueil...</a></p>
</body>
</html>
Les Instructions
64
Tests : if... then... else
syntaxe :
if ( condition1 ) {
Action 1
} elseif ( condition2 ) {
Action 2
}
} else {
Action 3
}
65
Tests : if... then... else
exemple :
if ($a==$b) {
echo "A est égal à B";
} elseif ($a > $b) {
echo "A est supérieur à B";
} else {
echo "A est inférieur à B";
}
66
Tests : switch... case... default
la condition est associée à la valeur d'une variable, de plus l'instruction 'break'.
Exemple :
switch ($a) {
case $b:
echo "A est égal à B";
break;
case >$b:
echo "A est supérieur à B";
break;
default:
echo "A est inférieur à B";
break;
}
67
Boucles
while ( condition ) {
Action;
}
do {
Action;
} while (condition);
68
Boucles
$i=1;
while ($i <= 10) {
echo "- $i -";
$i++;
}
$i=1;
do {
echo "- $i -";
$i++;
} while ($i <= 10)
69
Break;Continue
Break :Cette instruction permet de sortir de n'importe quelle boucle, à n'importe
quel moment.
Continue : Cette instruction permet de ne pas exécuter le code contenu dans la
boucle et de passer à l'itération suivante.
70
Interaction avec l’usager
get, post
et
les formulaires
71
Bonnes pratiques
72
Interaction avec
l’usager
Formulaires HTML
73
Formulaires HTML
74
Formulaires HTML (Suite)
75
Formulaires HTML :
Exemple POST
exemple (fichier test.html) :
<HTML>
<FORM ACTION="test.php" METHOD=POST>
<INPUT TYPE=hidden NAME=« IGSI" VALUE="bonjour">
Nom : <INPUT TYPE=text NAME="nom">
<INPUT TYPE=submit VALUE="Envoyer">
</FORM>
</HTML>
76
Formulaires HTML :
Exemple GET
Code HTML classique :
<form action="traitement.php" method="get">
<p>
Formation: <input type="text" name="Form" /> <br />
École: <input type="text" name="ecole" />
<input type="submit" value="OK" />
</p>
</form>
77
Formulaires HTML :
Exemple GET
On récupère les données et on les affiche
(fichier traitement.php)
<?php
$formation = $_GET["Form"];
$ecole = $_GET["ecole"];
echo "Vous êtes de l'école $ecole.";
echo " <br /> ";
echo "Vous êtes en ".$formation.".";
?>
78
Autre utilité de $_GET
Adresse :
http://serveur/page.php?a=bonjour&b=bye
79
Transmission
Chaque champ a un nom
GET : les données sont transmises dans l’URL
test.php
POST : transmission dans le protocole HTTP
(invisible sur l’URL)
80
Champs de formulaire :
<INPUT>
Très général: saisie de texte, ou choix dans
des listes. L'attribut TYPE vaut:
TEXT pour les chaînes de caractères
HIDDEN pour les champs cachés
CHECKBOX pour un choix multiple
RADIOBOX pour un choix exclusif
SUBMIT pour déclencher l'action
FILE pour transmettre un fichier
81
Champs de formulaire :
<INPUT> (Suite)
<input type= "file"> Fichier
82
Champs <SELECT>
83
Champs <SELECT>:
MULTIPLE
L'option MULTIPLE permet de sélectionner plusieurs valeurs
<HTML>
<form action=« test.php" method="post">
Nom : <input type="text" name="Master" VALUE="Master" <br />
Email : <input type="text" name="igsi"><br />
COURS : <br />
<select multiple name=« cours[]">
<option value=" BD ">BD</option>
<option value=" java ">java</option>
<option value=" php ">php</option>
</select><br />
<input type="submit" name="submit" value="me contacter!">
</form>
</HTML>
84
Champ <TEXTAREA>
85
Traitement des données en
PHP
temporaire
86
Que se passe-t-il quand on
valide ?
Le programme client transmet au programme
serveur les informations sous la forme:
$_POST["titre"]=t
$_POST["annee"]=a
88
Passage de valeurs multiples
<H1>Passage de valeurs multiples</H1>
<FORM ACTION="ExPHP.php"
METHOD="POST">
Titre : <INPUT TYPE=TEXT SIZE=20 NAME="titre" >
<TABLE><TR><TH>Prénom</TH><TH>Nom</TH></TR>
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME=" prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME=" prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
<TR><TD><INPUT TYPE=TEXT SIZE=30 NAME=" prenom[]">
<TD><INPUT TYPE=TEXT SIZE=30 NAME="nom[]">
</TABLE>
<H1>Votre choix</H1>
<INPUT TYPE=SUBMIT VALUE='Valider'>
<INPUT TYPE=RESET VALUE='Annuler'>
</FORM>
89
Que se passe-t-il quand on
valide ?
Le programme client transmet au programme serveur les infos sous la forme:
titre=t&prenom[]=p1&nom[]=n1&prenom[]=p2&nom[]=n2&...
Pour le script PHP, cela donne:
<?php
$titre = $_POST['titre'];
$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
echo "Pour le film $titre j'ai reçu les acteurs suivants :<P>\n";
?>
=> on crée deux tableaux PHP ! 90
Ce que fait le script
On sait ainsi envoyer d'une page à une autre le nom et le prénom du visiteur, mais
dès qu'on charge une autre page ces informations sont "oubliées".
Un visiteur arrive sur votre site. On demande à créer une session pour lui. PHP génère alors un numéro
unique. Ce numéro est souvent très gros et généralement écrit en hexadécimal. Par exemple :
a02bbffc6198e6e0cc2715047bc3766f.
Ce numéro sert d'identifiant et est appelé "ID de session" (ou PHPSESSID). PHP transmet
automatiquement cet ID de page en page en utilisant un cookie en règle générale.
Une fois la session créée, on peut créer une infinité de variables de session pour nos besoins. Par
exemple, on peut créer une variable $_SESSION['nom'] qui contient le nom du visiteur,
$_SESSION['prenom'] qui contient le prénom, etc. Le serveur conserve ces variables même lorsque la
page PHP a fini d'être générée. Cela veut dire que, quelle que soit la page de votre site, vous pourrez
récupérer par exemple le nom et le prénom du visiteur via la superglobale $_SESSION !
Lorsque le visiteur se déconnecte de votre site, alors la session est fermée et PHP "oublie" toutes les
variables de sessions que vous avez créées. Il est en fait difficile de savoir précisément quand un
visiteur quitte votre site. En effet, lorsqu'il ferme son navigateur ou va sur un autre site, votre site n'en
est pas informé. Soit le visiteur clique sur un bouton "Déconnexion" (que vous aurez créé) avant de s'en
aller, soit on attend quelques minutes d'inactivité pour le déconnecter automatiquement (on parle de
timeout). Le plus souvent, le visiteur est déconnecté par un timeout.
Les sessions II
Fonctions
session_start() : démarre une session
session_start() doit être présente sur toutes les pages qui utilisent
les variables de sessions et doit être déclarée avant tout envoie au
navigateur du client.
Remarque: il faut appeler session_start() sur chacune de vos
pages AVANT d'écrire le moindre code HTML (avant même
la balise <!DOCTYPE>). Si vous oubliez de lancer
session_start(), vous ne pourrez pas accéder aux variables
superglobales $_SESSION.
Exemple d'utilisation des
sessions
<?php
// On démarre la session AVANT d'écrire du code HTML
session_start();
<p>
Salut <?php echo $_SESSION['prenom']; ?> !<br />
Tu es à l'accueil de mon site (index.php). Tu veux aller sur une autre page ?
</p>
<p>
<a href="mapage.php">Lien vers mapage.php</a><br />
<a href="monscript.php">Lien vers monscript.php</a><br />
<a href="informations.php">Lien vers informations.php</a>
</p>
</body>
</html>
Voici par exemple le code source
de la page informations.php
<?php
session_start(); // On démarre la session AVANT toute chose
?>
<p>Re-bonjour !</p>
<p>
Je me souviens de toi ! Tu t'appelles <?php echo $_SESSION['prenom'] . ' ' . $_SESSION['nom']; ?> !<br />
Et ton âge hummm... Tu as <?php echo $_SESSION['age']; ?> ans, c'est ça ? :-D
</p>
</body>
</html>
Avantages des sessions
L'utilité des sessions en pratique
Concrètement, les sessions peuvent servir dans de nombreux cas sur votre
site ,Voici quelques exemples :
Imaginez un script qui demande un login et un mot de passe pour qu'un
visiteur puisse se « connecter » (s'authentifier). On peut enregistrer ces
informations dans des variables de session et se souvenir de l'identifiant du
visiteur sur toutes les pages du site !
Puisqu'on retient son login et que la variable de session n'est créée que s'il a
réussi à s'authentifier, on peut l'utiliser pour restreindre certaines pages de
notre site à certains visiteurs uniquement.
Cela permet de créer toute une zone d'administration sécurisée : si la
variable de session login existe, on affiche le contenu, sinon on affiche une
erreur.
98
Avantages des sessions
99
Les cookies
Code : PHP
<?php setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null, null, false, true); ?>
Créer le cookie avant d'écrire du
HTML
Code : PHP
<?php setcookie('pays', ‘Tunisie', time() + 365*24*3600, null, null, false, true); ?>
Passage par cookies
PHP propose des fonctions pour :
Poser un cookie :
<?php
$expire = 365*24*3600;// durée du cookie en sec, 1 an
setcookie("lenom","lavaleur",time()+$expire);
?>
Récupérer un cookie :
<? // On affiche la valeur de nickname
echo 'le cookie "lenom" a pour valeur : ';
echo $_COOKIE["lenom"];
?>
Dates et heures
114
Dates et heures (I)
Les fonctions de dates et heures sont incontournables sur Internet et sont indispensables pour la
conversion en français des dates fournies par la base de données MySQL qui les code au
format anglophone (YYYY-DD-MM hh:mm:ss).
Quelques fonctions :
date(‘’$format’’) : retourne une chaîne de caractères contenant la date et/ou l’heure
locale au format spécifié
getdate() : retourne un tableau associatif contenant la date et l’heure
checkdate($month, $day, $year) : vérifie la validité d’une date
mktime ($hour, $minute, $second, $month,$day, $year) : retourne le
timestamp UNIX correspondant aux arguments fournis c’est-à-dire le
nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970) et
le temps spécifié
time() : retourne le timestamp UNIX de l’heure locale
115
Dates et heures (III)
Les formats pour date :
d Jour du mois sur deux chiffres [01..31] j Jour du mois sans les zéros initiaux
l Jour de la semaine textuel en version longue et en anglais
D Jour de la semaine textuel en trois lettres et en anglais
w Jour de la semaine numérique [0..6] (0: dimanche)
z Jour de l'année [0..365]
m Mois de l'année sur deux chiffres [01..12] n Mois sans les zéros initiaux
F Mois textuel en version longue et en anglais
M Mois textuel en trois lettres
Y Année sur 4 chiffres y Année sur 2 chiffres
h Heure au format 12h [01..12] g Heure au format 12h sans les zéros initiaux
H Heure au format 24h [00..23] G Heure au format 24h sans les zéros initiaux
i Minutes [00..59] s Secondes [00.59]
a am ou pm A AM ou PM
L Booléen pour savoir si l'année est bissextile (1) ou pas (0)
S Suffixe ordinal anglais d'un nombre (ex: nd pour 2)
t Nombre de jour dans le mois donné [28..31]
U Secondes depuis une époque Z Décalage horaire en secondes [-43200..43200] 116
Dates et heures (IV)
117
Dates et heures (II)
Exemple 1 :
echo date(''Y-m-d H:i:s'');
/* affiche la date au format MySQL :‘ 2002-09-27 20:30:29’ */
Exemple 2 :
if(checkdate(15-04-2005))
echo ‘’c’est le grand oral!!! ’’;
Exemple 3 :
$ aujourdhui = getdate();
$mois =$aujourdhui['mon'];
$ jour =$aujourdhui['mday'];
$annee =$aujourdhui['year'];
echo ''$jour/$mois/$annee''; // affiche ‘29/4/2006’
118
PHP et MySQL
119