Académique Documents
Professionnel Documents
Culture Documents
serveur :
Le langage PHP
1
Lotfi KHEDIRI
khediril@gmail.com
Rappel
Un client C (p.ex. un navigateur Web), sur une machine X .
Un serveur Web S sur une machine Y .
C se connecte à Y .
C demande à S une URL, accompagnée de paramètres.
S répond à C en lui renvoyant p.ex. une page Web. Cette
page peut être un document statique (p.ex. un fichier
HTML) ou une page dynamique produite par un
programme (p.ex. un script PHP).
S ferme la connexion à C .
Parts de marché : d’après des études par Opera et Netcraft, chiffres précis
ne signifient pas grand chose.
De nombreuses grandes entreprises de logiciel ont soit leur propre
logiciel, soit leur propre version modifiée d’Apache
(notamment,GFE/GWS pour Google).
lighthttpd est (comme son nom l’indique !) plus léger (c’est-à-dire, moins
riche en fonctionnalités mais plus rapide dans certains contextes)
qu’Apache.
Les versions de Microsoft IIS venant avec les Windows grands publics
sont très limitées.
Programmation Web 2017-2018 13:25:40
HyperText Transfer Protocl : HTTP
4
200 OK
301 Redirection permanente
302 Redirection temporaire
304 Pas de modification
400 Requête invalide
401 Non autorisé
403 Interdit
404 Page non trouvée
500 Erreur serveur
Client Serveur
6.Fermeture de la connexion
7.Rendu graphique des données (HTML, image, …)
Commentaires:
/* jusqu’au prochain */
// jusqu’à la fin de la ligne
# jusqu’à la fin de la ligne
$test = 12 ; // Entier
echo $test ; // 10
$total =
$nombre1 + $nombre2 + $chaine1 + $chaine2 ;
1.5 12 "10" 'coucou'
13.5 10
23.5 0
echo $total ; // 23.5 Réel
23.5
$nb = 6*2 ;
"Acheter " . $nb . " oeufs"
→ vaut "Acheter 12 oeufs"
echo "Bonjour" ;
$nom="Marcel" ; echo "Bonjour $nom" ;
Plus généralement :
$a + $b Somme
$a - $b Différence
$a * $b Multiplication
$a / $b Division
$a & $b ET binaire
$a | $b OU binaire
$a ^ $b XOR binaire
Opérateurs
new
[
++ --
! ~ - (int) (float) (string) (array) (object) @
*/%
+-.
<< >>
< <= > >=
== != === !==
&
Opérateurs
^
|
&&
|| En cas de doute,
? : utilisez les parenthèses ;-)
= += -= *= /= .= %= &= |= ^= <<=
>>=
and
xor
or
Programmation Web 2017-2018 13:25:40
Structure de contrôle Si…Alors…
Sinon…
36
if (condition)
{
/* Bloc d’instructions exécuté si la
condition est vraie */
}
[else
{
/* Bloc d’instructions exécuté si la
condition est fausse */
}]
while (condition)
{
/* Bloc d’instructions répété tant que la
condition est vraie */
}
do {
/* Bloc d’instructions exécuté une fois
puis répété tant que la condition est vraie
*/
} while (condition) ;
Équivalent à:
avant ;
while (condition)
{
/* Bloc d’instructions répété tant que la
condition est vraie */
fin_chaque_itération ;
}
Programmation Web 2017-2018 13:25:40
Structure de contrôle switch…
39
switch (val)
{
case v1:
instructions exécutées si val==v1
case v2:
instructions exécutées si val==v2
ou si val==v1
…
default:
instructions dans tous les cas
}
Création / initialisation:
$tab1=array(12, "fraise", 2.5) ;
PHP … HTML
… Val:12<br>\n
Val:fraise<br>\n
$tab4[0] = 12 ;
Val:2.5<br>\n
$tab4[1] = "fraise" ; Val:el5<br>\n
$tab4[2] = 2.5 ; …
$tab4[5] = "el5" ;
foreach($tab4 as $v)
{ Navigateur
echo "Val: $v<br>\n";
}
…
$tab5['un'] = 12 ;
Clé Valeur
$tab5['trois'] = "fraise" ;
"un" 12
$tab5["deux"] = 2.5 ;
$tab5[42] = "el5" ; "trois" "fraise"
"deux" 2.5
42 "el5"
La valeur peut être trouvée grâce à une clé qui porte le
même nom que le champs du formulaire de la page HTML
de saisie (attribut name).
<html>
<head>
Serveur
<title>bonjour</title> nomPers
</head>
Serveur Web
<body> <?php
Bonjour robert ! $html = <<<HTML
</body> <html>
</html> <head><title>bonjour</title></head>
Module PHP <body>
HTML;
robert
$html .= "Bonjour ".$_GET['nomPers']." !\n" ;
echo $html . "</body>\n</html>" ;
<!DOCTYPE html>
<html>
<head>
<title>formulaire</title>
</head>
<body>
<form action="valide1.php" method="get">
Nom: <input type="text" name="nomPers">
<input type="submit" value="Envoyer">
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel">
<option>Fraise
<option>Pomme
Envoyer <option>Poire
<option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> valide3.php?sel=Pomme
</html>
Programmation Web 2017-2018 13:25:40
Formulaires contenant des champs
« SELECT multiple»
57
<!DOCTYPE html>
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel" multiple>
<option>Fraise
<option>Pomme
<option>Poire
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html>
valide3.php?sel=Pomme&sel=Poire ???
Programmation Web 2017-2018 13:25:40
Formulaires contenant des champs
« SELECT multiple»
58
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel[]" multiple>
<option>Fraise
<option>Pomme
<option>Poire
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> valide3.php?sel%5B%5D=Pomme&sel%5B%5D=Poire
</html>
valide3.php?sel[]=Pomme&sel[]=Poire
<?php
$html = <<<HTML
<!DOCTYPE html>
<html>
<head>
<title>Liste de fruits</title>
</head> $_GET[‘sel']
<body> est un tableau
HTML;
if (isset($_GET['sel']) && !empty($_GET['sel']))
{/* La variable $_GET['sel'] est définie
et elle n'est pas vide */
foreach($_GET['sel'] as $fruit)
$html .= "Vous avez choisi $fruit<br>\n" ;
}
else
$html .= "Vous n'avez pas choisi de fruit\n" ;
echo $html . "</body>\n</html>" ;
<!DOCTYPE html>
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form name="formu" action="valide3.php" method="get">
Choisissez des fruits :<br>
<input type="checkbox" name="sel[]" value="Fraise">Fraise<br>
<input type="checkbox" name="sel[]" value="Pomme" >Pomme <br>
<input type="checkbox" name="sel[]" value="Poire" >Poire <br>
<input type="checkbox" name="sel[]" value="Banane">Banane<br>
<input type="checkbox" name="sel[]" value="Cerise">Cerise<br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
$a = 12 ;
$a 84
12
$b = $a ;
$c = &$a ; $b "coucou"
12
$b = "coucou" ;
$c "hello"
$c = 84 ;
echo "\$a : $a\n" ; $a : 84
echo "\$b : $b\n" ; $b : coucou
echo "\$c : $c\n" ;
unset($c) ; $c : 84
$c = "hello" ;
<?php
function permutation($x, $y) {
echo "permutation..." ;
$t = $x ; Permutation impossible :
$x = $y ;
$y = $t ; Passage des arguments
} des fonctions par valeur
$a = 12 ;
$b = 210 ;
echo "\$a = $a" ;
echo "\$b = $b" ; $a = 12
permutation($a, $b) ; $b = 210
echo "\$a = $a" ; permutation...
echo "\$b = $b" ; $a = 12
?> $b = 210
<?php
function permutation(&$x, &$y) {
echo "permutation..." ;
$t = $x ;
$x = $y ; Permutation
$y = $t ;
} réussie
$a = 12 ;
$b = 210 ;
echo "\$a = $a" ;
echo "\$b = $b" ; $a = 12
permutation($a, $b) ; $b = 210
echo "\$a = $a" ; permutation...
echo "\$b = $b" ; $a = 210
?> $b = 12
Utilisation
bonjour() ;
Bonjour cher inconnu
bonjour("Marcel") ;
nom valeur
$v = @file("dummy.txt")
or die("Problème de lecture") ;
Problème de lecture
Champ Description
name nom du fichier chez le client
type type MIME du fichier
size taille du fichier en octets
tmp_name nom temporaire du fichier sur le serveur
Si aucun fichier n’a été envoyé par le client, la variable mon_fichier vaudra la
chaîne de caractères : ‘’none’’ ou bien ‘’’’ (chaîne vide).
La durée de vie du fichier temporaire sur le serveur est limitée au temps
d’exécution du script. Pour pouvoir exploiter ultérieurement le fichier sur le
serveur, il faut le sauvegarder dans un répertoire et lui donner un vrai nom.
Exemple :
class Voiture { // déclaration de la classe
private $couleur; // déclaration d’un attribut
private $belle = TRUE; // initialisation d’un attribut
function voiture() { // constructeur
$this->couleur = ‘’noire’’;
} // le mot clé $this faisant référence à l’objet est obligatoire
function Set_Couleur($couleur) {
$this->couleur = $couleur;
}
}
$mavoiture = new Voiture(); // création d’une instance
$mavoiture->Set_Couleur(‘’blanche’’); // appel d’une méthode
$coul = $mavoiture->couleur; // appel d’un attribut
<body>
Le chemin pour lequel
le cookie est valable
<?php
echo "Cookie is set.";
?>
Programmation Web 2014-2015 13:25:40
Utilisation des Cookies
82
On retrouve le cookie dans le tableau superglobal $_COOKIES
Exemlpe : retrouver le cookie nommé « user »
<?php
$cookie_name = "user";
if(!isset($_COOKIE[$cookie_name]))
{
echo "Cookie named '" . $cookie_name . "' does not exist!";
}
else
{
echo "Cookie is named: " . $cookie_name . "<br>Value is: " .
$_COOKIE[$cookie_name];
}
?>
Quelques fonctions :
session_start() : démarre une session
session_destroy() : détruit les données de session et ferme la session
$_SESSION[‘’var’’]=val : enregistre la variable $var dans la session en
cours,
Unset($_SESSION[‘’var’’]) : détruit la variable $_SESSION[‘’var’’] de la
session en cours