ProgWeb1_Chapitre2_PHP (3)
ProgWeb1_Chapitre2_PHP (3)
ProgWeb1_Chapitre2_PHP (3)
Programmation Web 1
Auditoire: LBC 2
2
Les sites web statiques
Serveur
Client
1: demande d’une page web 2: accès
aux fichiers
Client Serveur
1: demande d’une page web
Le navigateur Web
Le serveur Web
Il s'agit d'un programme capable de traiter les requêtes HTTP issues des
clients Web, c'est-à-dire des navigateurs.
stockedesdonnéesdefaçonorganiséesetcohérentes.
Exemples:Mysql,PostgreSQL, MS-SQLSERVER,DB2
Moteur dynamique
Ecriture du code
Sublime Text
Atom
PHPStorm
Il est possible d'installer ces outils séparément mais il est plus simple
d'installer un paquetage tout prêt.
WAMP sous Windows
MAMP sous MacOs
XAMPP sous Linux
Développement web en PHP
Windows
Apache
MySQL
PHP
Grand succès
Typologie
Toute instruction se termine par un point-virgule ;
Il est obligatoire, sauf si l'instruction est suivie de la balise ?>
Sensible à la casse sauf par rapport aux fonctions (tous les mots-clés,
comme echo, les classes, etc. ne sont PAS sensibles à la casse. A l'inverse,
les variables sont sensibles à la casse)
Commentaire
Pour commenter le code, on utilise :
• Commentaire sur une ligne: // ou #
• Commentaire sur plusieurs lignes: /* ... */
Tout ce qui se trouve dans un commentaire est ignoré.
Il est conseillé de commenter largement les scripts
Ecriture du code PHP
Affichage du texte:
La fonction echo affiche un (ou plus) argument. Si l'argument est une
chaîne entre simple quotte ' il est affiché tel quel.
echo 'Hello World'; affiche Hello World
Avec le quotte double " les variables contenues dans cette chaîne sont
interprétées.
$nom= "Toto";
echo "Hello $nom"; affiche Hello Toto
echo 'Hello $nom'; affiche Hello $nom
printf(): écriture formatée comme en C, la chaine de caractères est
constante et contient le format d’affichage des variables passées en
argument
printf("Hello %s", $nom); affiche Hello Toto
Les variables
Identificateurs de variables :
• PHP n’est pas un langage fortement structuré, il ne contient donc pas de
partie déclarative clairement définie. Pour définir une variable, il suffit de
l’initialiser.
• Les variables sont précédées du signe $, quelque soit leur type. Ainsi pour
déclarer une variable x :
$x=1;
La variable $x est alors définie et vaut 1. Elle devient immédiatement
accessible jusqu’à la fin du script.
Type de variables:
• Les variables PHP sont à typage faible. C'est PHP qui décide son type lors
de l'affectation. Il existe six types de données :
– Les entiers (int)
– Les flottants (float, double)
– Les booléens (bool)
– Les chaîne de caractères (string)
– Les tableaux (array)
– Les objets (object)
Les variables
Conversion de types:
Il est parfois utile de forcer le type d'une variable. On utilise les
opérateurs de casting (int), (string)
Exemple :
$nbr= 12; // $nbr vaut le nombre 12
$ch = (string)$nbr; // $ch vaut le chaîne "12"
Quelques fonctions :
isset($var) : renvoie true si la variable est définie
unset($var) : supprime une variable
gettype($var) : retourne le type de la variable
settype($var, "type") : convertit la variable en type type (casting)
is_long(), is_double(), is_string(), is_array(), is_object(), is_bool(),
is_float(), is_numeric(), is_int()… : tester un type particulier en
retournant true ou false
Les constantes
Opérateurs arithmétiques
Opérateur Nom Exemple
+ Addition $a + $b
- Soustraction $a - $b
* Multiplication $a * $b
/ Division $a / $b
%, fmod() Modulo: reste de la division $a % $b
intdiv() Division entière intdiv($a,$b)
Les structures de contrôle
if (condition){ if (condition ){
liste d’instructions; } liste d’instructions1;}
else { liste d’instructions2;}
} case "-":
echo $a - $b; break;
case "*": echo $a * $b; break;
default:
echo "Opération inconnue.";
}
?>
Les structures de contrôle
25
Les tableaux
Principe:
La création se fait à l'aide de la fonction array()
Les éléments d'un tableau peuvent appartenir à des types
distincts
Tableau numéroté
Types de tableau
Tableau associatif
Les tableaux numérotés
echo $jours[1] ;
Modification
Exemple : Modification d'un élément d'un tableau
$jours[0] = ' Monday' ;
Ajout
Exemple : Ajout d'un élément d'un tableau
$jours[6]= " Dimanche" ;
Les tableaux numérotés
Principe
Les tableaux associatifs fonctionnent sur le même principe, sauf qu'au lieu de
numéroter les cases, on va les étiqueter en leur donnant à chacune un nom
différent.
Affichage
Modification
Ajout
instructions;}
Exemple:
$tab=array ( " Moliere "=>1600 , " Vian"=>1900 , " Hugo "=>1800 ) ;
asort ($tab ) ; print_r($tab);
Array ( [ Moliere ] => 1600 [ Hugo ] => 1800 [ Vian] => 1900 )
arsort($tab); print_r($tab);
Array ( [ Vian] => 1900 [ Hugo ] => 1800 [ Moliere ] => 1600 )
Les tableaux
ksort(tab) trie les clés du tableau selon le critère des codes ASCII
krsort(tab) trie les clés du tableau en ordre inverse des codes ASCII.
Exemple:
$tab=array ( " Moliere "=>1622 , " Vian"=>1920 , " Hugo "=>1802 ) ;
ksort ( $tab ) ; print_r($tab);
Array ( [ Hugo ] => 1802 [ Moliere ] => 1622 [ Vian] => 1920 )
krsort($tab); print_r($tab);
Array ( [ Vian] => 1920 [ Moliere ] => 1622 [ Hugo ] => 1802 )
Les tableaux
Exemple:
<?php
$notes = array ( 10 , 12 , 15, 20 ) ;
if( in_array ( 12, $notes)){
echo ' La valeur 12 se trouve dans les notes ' ; }
$position = array _search ( 15 , $notes ) ;
echo ' 15 se trouve en position ' . $position. '<br/> ' ;
?>
Exercice
<html>
<head><title>Exercice php</title></head>
<body>
<?php
$l=array('a','b','c','a','b');
$dic=array();
foreach ($l as $elt){
if (array_key_exists($elt,$dic)){
$dic[$elt]=$dic[$elt]+1;}
else $dic[$elt]=1;}
print_r($dic);
?>
</body>
</html>
Exercice
<html>
<head><title>Exercice php</title></head>
<body>
<?php
$tab=array("Ahmed"=>12,"Ali"=>20, "Mohamed"=>17);
print_r($tab);
foreach ($tab as $cle=>$valeur){
echo $cle . ":". $valeur . "</br>";}
$somme=0;
foreach ($tab as $cle=>$valeur){
$somme+=$valeur; }
echo $somme."</br>";
echo $somme/count($tab). "</br>";
Correction de l’exercice
$max=0;
$nom="";
foreach ($tab as $cle=>$valeur){
if ($valeur>$max){
$max=$valeur;
$nom=$cle;}
}
echo $nom . " a la meilleur note =". $max;
?>
</body>
</html>
Les chaines de caractères
42
Les chaines de caractères
$ch="Bonjour";
echo "position: ". strpos($ch,'ou'); //affiche position: 4
$ch="Bonjour";
echo "sous-chaine: ", substr($ch,0,3); //affiche sous-chaine: Bon
Les chaines de caractères
$ch="abcada";
echo str_replace("a","1",$ch); //affiche 1bc1d1
Les fonctions
46
Les fonctions
Lesvariablesen PHP:
global
Local
static
Passage de paramètres:
Il est possible de passer des paramètres
Par valeur:
function nom_fonction($param1, …, $paramN)
Par référence:
function nom_fonction(&$param1, …, &$paramN)
Les fonctions
Passage de paramètre par valeur
Par défaut, les arguments sont passés à la fonction par valeur:
changer la valeur d'un argument dans la fonction ne change pas sa
valeur à l'extérieur de la fonction.
on travaille avec une « copie » de la variable de départ. Les deux
copies sont alors indépendantes et lorsqu’on modifie le contenu de la
copie, le contenu de la variable d’origine n’est pas modifié.
Exemple : Passage de paramètre par valeur
function incrementer ( $x, $montant ){
$x = $x + $montant ;
echo $x;
}
$x = 10 ;
incrementer ($x); //affiche 11
echo $x; //affiche 10
Les fonctions
$x = 10 ;
incrementer ($x); //affiche 11
incrementer ($x, 5); //affiche 15
Les fonctions
<?php
function somme () {
$ p a ra ms = f u n c _ g e t _ a r g s ( ) ;
$somme=0 ;
f o r e a c h ( $ p a ra m s a s $ p a ra m ) {
$ s o m m e + = $ p a ra m ; }
return $somme;
}
e c h o s o mme ( 2 ,3 ) , " < b r / > " ; / / a f f i c h e la somme 5
e c h o s o m m e ( 2 , 3 , 4 ) , " < b r / > " ; / / a f f i c h e la somme 9
e c h o s o m m e ( 2 , 3 , 4 , 5 ) , " < b r / > " ; / / a f f i c h e la somme 14
?>
Les fonctions
<?php
function somme (. . . $params) {
$somme=0 ;
foreach ($params as $param) {
$somme += $param;}
return $somme;
}
e c h o s o m m e ( 2 , 3 ) , " < b r / > " ; / / a f f i c h e la somme 5
e c h o s o m m e ( 2 , 3 , 4 ) , " < b r / > " ; / / a f f i c h e la somme 9
e c h o s o m m e ( 2 , 3 , 4 , 5 ) , " < b r / > " ; / / a f f i c h e la somme 14
?>
Les fonctions
58
Les formulaires en php: structure
2. La méthode Post
La méthode POST n’utilise pas l’URL
Elle regroupe les informations dans l’entête d’une requête HTTP et les
envoie avec les informations de navigation (adresse IP, version
navigateur, …).
Cette méthode est plus sécurisée: assure une confidentialité efficace des
données.
Elle n’est pas limitée en taille.
Les formulaires en php: Récupération des données
Les informations envoyées au moyen d'un formulaire sont stockées dans les
tableaux superglobaux de l'environnement PHP.
Ce sont des tableaux associatifs comme ceux que l'on déclare traditionnellement.
Les clés correspondent aux noms des variables transmises
Les valeurs correspondent à celles associées à ces variables.
Ils sont superglobaux: visibles de partout dans le programme.
Ils sont accessibles en lecture et en écriture. Il est donc possible de les modifier.
Les formulaires en php: exemple
Le tableau $_GET contient tous les couples variable/valeur transmis dans l'url.
cible.php
<?php
if(!empty($_POST))
{// Récupération des informations
echo "Nom d'utilisateur : " . $_POST['login'] . '<br />';
echo "Mot de passe : " . $_POST['password'] . '<br />';
} Nom utilisateur: user
?> Mot de passe: 1234
Les formulaires en php: exemple
cible.php
<?php
if(!empty($_POST)) {
foreach($_POST as $field => $value) {
echo $field . ' : ' . $value . '<br />';
}
} login: user
?> password: 1234
Les formulaires en php: validation des données
Côté client
La validation des données côté client est effectuée dans le navigateur,
avant que les données n'aient été soumises au serveur.
la validation de formulaire intégrée avec les fonctions de validation
de formulaire HTML5.
la validation JavaScript, codée en JavaScript, entièrement
personnalisable.
Il est conseillé d’utiliser cette validation tant qu’il est possible pour les
raisons suivantes:
Rapidité du traitement
Réduction de la charge du serveur
Les formulaires en php: validation des données
70
Validation des données avec HTML5
(Les patterns et les expressions régulières)
Dans certains cas, on a besoin que les champs d’un formulaire
respectent une certaine règle de syntaxe ou un format bien
définie.
Les patrons sont utilisés pour vérifier et valider ces champs.
Des patrons par défaut existent pour certains types de champ,
comme les champs de type email ou url par exemple, qui
attendent des formats spécifiques.
D'autres patrons peuvent être créés sur-mesure, grâce à
l'attribut pattern qui accepte une expression régulière.
Expression régulière
72
Validation des données avec HTML5
(Les patterns et les expressions régulières)
• Nombre d’occurrence:
– {n} exactement n fois
– {n,} au moins n fois
– {n,m} entre n et m fois
73
Validation des données avec HTML5
(Les patterns et les expressions régulières)
• Liste de caractères
Les crochets [ ] définissent une liste de caractères autorisés (ou
interdits).
Le signe - permet de définir un intervalle.
Le caractère ^ après le premier crochet indique quand à lui une
interdiction.
– [abc] un caractère parmi a, b ou c
– [a-z] intervalle : un caractère de a à z
– [^ab] un caractère autre que a ou b
74
Validation des données avec HTML5
(Les patterns et les expressions régulières)
75
Validation des données avec HTML5
(Les patterns et les expressions régulières)
• Caractères spéciaux
\n: Saut de ligne
\t: tabulation
\d: un chiffre (équivalent à [0-9]).
\D: tout sauf un chiffre
\s: un "caractère blanc" (espace, retour chariot, tabulation, saut de ligne,
saut de page).
\S: tout sauf espacement
\w : un caractère alphanumérique (y compris le caractère _). Equivalent
à [a-zA-Z0-9_].
\W: Permet de capturer un caractère non alphanumérique (équivalent à
[^a-zA-Z0-9_]).
76
Validation des données avec HTML5
(Les patterns et les expressions régulières)
Ladifférence se situe au niveau du type d'erreur qui sera renvoyé en cas d'échec.
En-tête de page
Pied de page
Menu de navigation
Barre contextuelle
header.php
<html>
<head> </head>
<body>
<?php include("header.php"); ?>
<?php include("menu.php"); ?>
<!-- Le corps -->
<div id="corps">
<h1>Page Accueil </h1>
<p>
Bienvenue sur mon super site !<br/>
</p>
</div>
<!-- Le pied de page -->
menu.php <?php include("footer.php"); ?>
</body>
</html>
footer.php
Importation de fichiers
Grand intérêt:
Plusieurs fichiers (ici index.php, produits.php et contact.php) font appel
aux mêmes sources (header.php et footer.php)
Importation de fichiers
Fichier reutilisable.php
<?php
echo " Ceci est une instruction PHP tres simple . < br/ > " ;
?>
Fichier principal.php
<?php
echo " Ceci est le fichier principal . < br/ > " ;
require ( 'reutilisable.php ' ) ;
echo " Fin d u script . < br/ > " ;
?>
Importation de fichiers
Erreur
Importation de fichiers
Warning