31
Création d’un site Web dynamique PHP (Personal Home Page / Hypertext Processor) PHP est un langage de programmation utilisé pour la construction des sites Web dynamiques Ce programme a pour but de générer une page HTML. Délimitées par < ? et ?> Zones entre < ? et ?> : code PHP à exécuter (similaire à du code C). • Le code PHP va être analysé par le serveur • Le résultat va être une nouvelle page Web mise à jour automatiquement par le code PHP Cycle de vie d’une page PHP 1) Envoie de la requête par le client 2) Les pages PHP sont analysées par le serveur, le code PHP est interprété 3) Le contenu de la page est mise à jour automatiquement et envoyé au Client

Cours php

Embed Size (px)

Citation preview

Page 1: Cours php

Création d’un site Web dynamique

PHP (Personal Home Page / Hypertext Processor)

PHP est un langage de programmation utilisé pour la construction des sites

Web dynamiques

Ce programme a pour but de générer une page HTML.

Délimitées par < ? et ?>

Zones entre < ? et ?> : code PHP à exécuter (similaire à du code C).

• Le code PHP va être analysé par le serveur

• Le résultat va être une nouvelle page Web mise à jour automatiquement par

le code PHP

Cycle de vie d’une page PHP

1) Envoie de la requête par le client

2) Les pages PHP sont analysées par le serveur, le code PHP est interprété

3) Le contenu de la page est mise à jour automatiquement et envoyé au

Client

Page 2: Cours php
Page 3: Cours php

La notion de variable

– Une variable est un conteneur de valeur

echo …$variable…

On récupère la valeur gardée dans la variable par son nom

Communication entre le client (navigateur) et le serveur (PHP)

– On peut envoyer des données du client à un programme PHP grâce aux

variables

– Les formulaires en HTML permettent de recueillir des données auprès de

l’utilisateur

Les données sont ensuite communiquées à un programme PHP

Les données recueillies dans le formulaire sont transmises au programme

indiqué dans action=…

Dans PHP, on récupère ces données grâce à des tableaux associatifs spéciaux

Page 4: Cours php

Structures conditionnelles

If…else

if (expr1) {

code à exécuter si expr1 est validé

}

elseif (expr2) {

code à exécuter si expr2 est validé

}

...

else {

code à exécuter si aucune des expressions précédentes n'est validée

}

Switch

switch (expr1) {

case expr2:

{code à exécuter si expr1=expr2}

break;

case expr3:

{code à exécuter si expr1=expr3}

break;

...

default:

{code à exécuter s'il n'y a pas eu de correspondance jusqu'ici}

break;

}

Application 1

Créer un formulaire qui demande la saisie de 2 nombres (test_valeur.html)

Page 5: Cours php

Ces 2 nombres seront ensuite testés dans un script (test_valeur.php). Ce script

affichera les 2 nombres et précisera lequel est le plus grand ou s'ils sont égaux.

Script du formulaire : test_valeur.html

Page 6: Cours php

Quelques fonctions de teste sur les variables

empty($var) : renvoie vrai si la variable est vide (n’est pas défini.

isset($var) : renvoie vrai si la variable existe (possède une valeur).

unset($var) : détruit une variable, libérant la mémoire qu’elle occupe.

gettype($var) : retourne le type de la variable.

settype($var, ’’type’’) : convertit la variable en type type.

Application 2

Calcul d'une factorielle. Nous allons créer un formulaire qui demande la saisie

d'un nombre entier.

Ce nombre une fois saisi est transmis à un script (factorielle.php) qui calcule sa

factorielle (ex factorielle de 5 =5x4x3x2x1)

Fichier factorielle.html

<html>

<body>

<form action="factorielle.php" method="post">

Veuillez saisir un nombre<br/>

<input type="text" name="nbre" /><br/>

<input type="submit" value="Test" /><input type="reset" value="Effacer" />

</form>

</body>

</html>

Page 7: Cours php

Fichier factorielle.php

<?php

$nbre=$_POST["nbre"];

echo "Le nombre saisi est : $nbre<br/>";

$cpt=$nbre;

echo "cpt vaut $cpt<br/>";

while($cpt>1){

$nbre=$nbre*--$cpt;

echo "nbr = $nbre<br/>";

echo "cpt = $cpt<br/>";

}

echo "La factorielle de ce nombre vaut $nbre";

?>

Application 3

<?php

if (!empty($_POST["nom"]))

{

echo "Bonjour ".$_POST["nom"];

}

else

{

echo "

<form action=\" coursphp.php\" method=\"post\">

Veuillez entrez votre nom :

<input type=\"text\" name=\"nom\" />

<input type=\"submit\" value=\"Entrez votre nom\" />

Page 8: Cours php

</form >";

}

Application 4

Rédiger un script qui demande la saisie d'un nom, ainsi que le choix minimum

d'une langue

<?php

if (!empty($_POST["nom"]) AND (isset($_POST["langue1"]) OR

isset($_POST["langue2"])) ) {

echo "Bonjour ".$_POST["nom"]." vous parlez : <br/>";

if(isset($_POST["langue1"])) echo $_POST["langue1"]."<br/>";

if(isset($_POST["langue2"])) echo $_POST["langue2"]."<br/>";}

else {

echo "<form action=\" coursphp_isset.php\" method=\"post\">

Veuillez entrez votre nom :

<input type=\"text\" name=\"nom\" /><br/>

<input type=\"checkbox\" value=\"Français\" name=\"langue1\" />Français<br/>

<input type=\"checkbox\" value=\"Anglais\" name=\"langue2\" />Anglais<br/>

<input type=\"submit\" value=\"Entrez\" />";

}

Page 9: Cours php

?>

Application 5

Créer un formulaire qui demande de faire un choix parmi une liste de 4 langues.

Lorsque le choix est fait le résultat est transmis à un script qui affiche le choix

réalisé. A l'affichage du formulaire aucun choix n'est fait par défaut. En cas de

non choix le formulaire doit se réafficher.

N.B: Le formulaire et son traitement sont dans le même fichier.

<?php

if (isset($_POST["langue"])) $langue = $_POST["langue"];

else $langue="";

switch($langue) {

case "FR":

echo "Votre langue est le francais";break;

case "EU":

echo "Votre langue est l'anglais";break;

case "DE":

echo "Votre langue est l'allemand";break;

case "IT":

echo "Votre langue est l'italien";break;

case "ES":

echo "Votre langue est l'espagnol";break;

Page 10: Cours php

default:

echo "

<form action=\"test_langue.php\" method=\"post\">

<P>Langue parlée ?<br/>

<input type=\"radio\" NAME=\"langue\" value=\"FR\" checked =\"checked\"

/>Francais<br/>

<input type=\"radio\" NAME=\"langue\" value=\"EU\" />Anglais<br/>

<input type=\"radio\" NAME=\"langue\" value=\"DE\" />Allemand<br/>

<input type=\"radio\" NAME=\"langue\" value=\"IT\" />Italien<br/>

<input type=\"radio\" NAME=\"langue\" value=\"ES\" />Espagnol<br/>

<P><input type=\"submit\" value=\"Envoyer\" />

</form> ";

break; }?>

Quelques fonctions prédéfinies

Page 11: Cours php
Page 12: Cours php

Quelques fonctions tableaux

La fonction header

La fonction header() permet de faire plusieurs choses et, en particulier, de

rediriger vers une autre page.

Syntaxe : header("Location: adresse d'une page web");

Exemple :

<?php

header("Location: http://www.site.com");

?>

Cette fonction doit par contre être utilisée avant d'envoyer des données html,

sous peine de produire une erreur.

Inclusion d'un autre fichier PHP :

include("nom fichier.php") ;

Les tableaux (array)

- Une variable tableau est de type array. Un tableau accepte des éléments de tout

type. Les éléments d’un tableau peuvent être de types différents et sont séparés

d’une virgule.

- Un tableau peut être initialisé avec la syntaxe array.

Exemple :

Page 13: Cours php

$tab_colors = array(‘red’, ’yellow’, ’blue’, ‘white’);

$tab = array(‘foobar’, 2002, 20.5, $name);

- Mais

Les tableaux associatifs

Le PHP permet de gérer des tableaux dont les éléments sont référencés non par

des valeurs numériques mais par des chaines de caractères. On appelle ce type

de tableau des tableaux associatifs

Exemple de tableau associatif

Nom MOHAMED

Age 30

note 20

$tab[age] vaut 30

Page 14: Cours php

Création d'un tableau associatif

<?php

$tab["nom"]="MOHAMED";

$tab["age"]=30;

$tab["note"]=20;

echo "Votre nom : ".$tab["nom"]; // ceci affiche Votre nom : MOHAMED

?>

ou

<?php

$tab=array(

"nom"=>"MOHAMED",

"age"=>30,

"note"=>20

);

echo $tab["nom"]; // ceci affiche MOHAMED

?>

Parcourir un tableau associatif

La fonction foreach

foreach($variable_tableau as $key => $value) { commandes...}

Sur le tableau désigné ($variable_tableau) on récupère la clé dans $Key et la

valeur

dans $value.

<?php

$fich = array ( "nom" => "LARBI",

"prenom" => "MOHAMED",

"maill" => "[email protected]",

"age" => 22);

foreach($fich as $cle => $val) {

Page 15: Cours php

echo "Votre $cle $val <br/>";

}?>

Votre nom Larbi

Votre prenom Mohamed

Votre mail [email protected]

Votre age 22

Page 16: Cours php

Principe d'accès à une base MySQL

Cinq étapes :

1 Connexion au SGBD.

2 Sélection d'une base.

3 Envoi d'une requête.

4 Récupération et utilisation du résultat.

5 Fermeture de la connexion.

Se connecter au serveur MySQL

mysql_connect($server,$user,$password): permet de se connecter au serveur

$server en tant qu’utilisateur $user avec le mot de passe $password, retourne

l’identifiant de connexion si succès, FALSEmysql_connect retourne un

identifiant positif de connexion (différent de 0) en cas de succès, et sinon

FALSE (c’est à dire 0).

• Choisir une base de données parmi celles disponibles

• Passer des requêtes SQL

via des primitives MySQL_query....

• Fermer la connexion

• mysql_connect connexion

• mysql_select_db choix d'une base

• mysql_query requête SQL

• mysql_close déconnexion

Connexion - Deconnexion au serveur MySQL

Pratique

Connexion au serveur MySQL

Page 17: Cours php

Ouvrir l'application « NotePad++».

Créer un nouveau script PHP.

Saisir le script suivant

<?php

$username = "root";

$password = "";

$hostname = "localhost";

// Connexion au serveur

$link = mysql_connect ($hostname , $username, $password) or die ("Connexion

impossible");

echo "Connexion réussie.<BR>\n";

echo "Ressource de connexion : $link<BR>\n";

// Déconnexion

mysql_close($link);

?>

Enregistrer ce script sous le nom « connexion.php».

« die(message)» : la fonction termine l'exécution du script courant et renvoie le

message donné en argument. On peut la remplacer par « exit».

Sélectionner une base de données

La fonction « mysql_select_db» permet de sélectionner une base de données. Sa

syntaxe de base est :

« mysql_select_db ( string database_name , resource link_identifier )»

avec

* database_name : le nom de la base de données,

* link_identifier : la ressource de connexion obtenue par la fonction

mysql_connect()

Si « link_identifier» n'est spécifiée, la dernière connexion est utilisée.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Page 18: Cours php

Compléter « connexion.php» comme ci-dessous :

$basename = "test1";;

$username = "root";

$password = "";

$hostname = "localhost";

// Connexion au serveur

$link = mysql_connect ($hostname , $username, $password) or die ("Connexion

impossible");

echo "Connexion réussie.<BR>\n";

echo "Ressource de connexion : $link<BR>\n";

// Sélection de la base de données

mysql_select_db($basename) or die ("Impossible de se connecter à la

base".$basename);

echo "Base sélectionnée : $basename <BR>\n";

// Déconnexion

mysql_close($link);

La fonction « mysql_query» permet d'envoyer une requête SQL à une base de

données MySQL. Sa

syntaxe de base est :

« mysql_query ( string query , resource link_identifier )»

avec :

* « query» la requête SQL,

* « link_identifier» la ressource de connexion.

Si «link_identifier» n'est pas précisée, la dernière connexion est utilisée

Page 19: Cours php

PhpMyAdmin

Page 20: Cours php

Exercice

Le formulaire de saisie :

Appellez ce fichier : form_saisie.html. il faut faire attention à deux choses :

• L'appel au script php lors de l'envoi du formulaire saisie.php

• les paramètres name donnés aux champs de formulaire...

Page 21: Cours php

Le script de stockage dans la table

Page 22: Cours php
Page 23: Cours php

Comparaison : Fonctions permettant d’interfacer PHP avec les bases

de données MySQL et PostegreSQL

PHP/MySQL

Les fonctions PHP les plus couramment utilisées pour accéder à une base

MySQL sont les suivantes :

mysql_connect() pour ouvrir une connexion avec le serveur de base de donnée

mysql_select_db() pour changer la base active sur la connexion en cours

mysql_query() pour envoyer une requête SQL

mysql_close() pour fermer la connexion avec le serveur

Les résultats peuvent ensuite être exploités grâce aux fonctions

mysql_num_rows() retourne le nombre de résultats renvoyé par la requête

mysql_fetch_array() pour transformer une ligne de résultat en tableau indicé

mysql_fetch_assoc() pour transformer une ligne de résultat en tableau associatif

Application

Soit une Table MEMBRES dans la base MaBase ayant le modèle suivant :

Nom Prenom

Alaoui

Mohamed

Rochdi

Laila

Page 24: Cours php

Et les données ont été insérées ainsi :

insert into’ membres’ (‘nom’,’prenom’) values (‘Alaoui’, ‘Mohamed’) ;

insert into’ membres’ (‘nom’,’prenom’) values (‘Rochdi’, ‘Laila’) ;

Il ya deux résultats

Alaoui Mohamed

Rochdi Laila

Page 25: Cours php

PHP et PostgreSQL

PHP dispose également en standard de librairies offrant la possibilité de

l'interfacer avec des bases de données PostgreSQL.

pg_connect() pour ouvrir une connexion avec le serveur de base de donnée et

choisir une base

donnée sur un hôte.

pg_query() pour envoyer une requête SQL

pg_close() pour fermer la connexion avec le serveur.

Les résultats peuvent ensuite être exploités grâce aux fonctions

pg_num_rows() retourne le nombre de résultats renvoyé par la requête

pg_fetch_row() pour transformer une ligne de résultat en tableau indicé

Il ya deux résultats

Page 26: Cours php

Alaoui Mohamed

Rochdi laila

Sessions

HTTP protocole non connecté

HTTP n’établit pas de connexion permanente !

2 requêtes successives d’un même client sont indépendantes pour le serveur.

Un serveur peut difficilement suivre le parcours de l’utilisateur dans le site

Chaque connexion est vue comme une demande d’un utilisateur différent.

Gestion des sessions : Suivi de l’activité du client sur plusieurs pages

La notion de session permet d'établir une continuité dans le dialogue

client/serveur en gardant la trace de l'authentification de l'utilisateur. En effet le

protocole HTTP est un protocole sans état, aucune information n'est stockée

entre deux connexions, ou demande de nouvelle page web.

La gestion des sessions en PHP s'appuie sur la notion de cookie

« donnée stockée par un serveur Web chez un client »

Débat éthique

COOKIE : fichier écrit sur l'ordinateur de l'internaute par le serveur web,

permettant de sauvegarder un contexte de connexion. ce contexte est composé

d'une série de variables stockées directement dans le navigateur web du client

afin de palier au caractère sans état du protocole http.

Et voici désormais comment se réalise la gestion des sessions :

A la première connexion le serveur associe un identifiant de session à un

internaute

Le serveur transmet cet identifiant au client sous la forme d'un cookie

Page 27: Cours php

Grâce à l'identifiant de session le serveur est en mesure de stocker des

informations sur le client

A chaque nouvelle connexion HTTP (à chaque nouvelle page demandée) le

client transmet son identifiant de session, permettant de suivre les actions du

client, de garder trace de sa connexion et de stocker certaines variables associés

au client.

Les solutions pour mettre en oeuvre viennent des fonctions suivantes :

session_start() identifie ou crée la session si existe déjà, recrée toutes les

variables PHP associées doit être appelé au début du script PHP

Les solutions pour mettre en oeuvre viennent des fonctions suivantes :

session_start() identifie ou crée la session si existe déjà, recrée toutes les

variables Php associées doit être appelé au début du script PHP

session_destroy() détruit les informations associées à la session

session_id() renvoie l’identifiant de la session

session_register(nomVariable) associe une variable Php à la session. Cette

information sera stockée et pourra être retrouvée à chaque session

session_unregister(nomVar) supprime une variable de la session

Page 28: Cours php

session_is_registered(nomVar) test l’existence d’une variable

Pour finir de clarifier les choses voilà désormais un exemple, dans le premier

fichier, ci-dessous :

Lors de la première visite on démarre une session dans laquelle on stocke l'heure

de connexion et l'adresse IP.

Ensuite quand le client ira sur la page suivante, représentée par le fichier

suivant, il sera reconnu grâce à son identifiant de session et on pourra retrouver

l'heure de sa connexion, et l'adresse IP depuis laquelle il s'est connecté, ces

informations ayant été stockées sur le serveur hébergeant le site web.

Le résultat est alors le suivant :

Page 29: Cours php

Dans notre exemple nous pouvons visualiser les cookies (par exemple sous

Mozilla Firefox, en allant dans le menu Outils -->Options -->Vie privée --

>Cookies -->Afficher les cookies)

On y voit que le navigateur stocke un identifiant de session PHPSESSID

permettant de retrouver

les informations concernant le client sur le serveur.

Application

Récupérer les données utilisateurs

Un formulaire très simple permettant l'authentification

Comment exploiter les données qui ont été transmises par un utilisateur dans un

Code source en HTML :

Page 30: Cours php

Pour plus de rigueur et plus de sécurité, il est donc préférable d'aller récupérer le

contenu des variables dans le tableau associatif $_GET.

Les données pourraient aussi venir de la méthode POST ($_POST['']), de

cookies ($_COOKIES['']), de sessions ($_SESSION['']), ou bien encore avoir

déjà été utilisées dans le script.

Et on peut maintenant utiliser ces données pour fabriquer une page HTML

fonction du résultat.

Voilà pour résumer un petit schéma qui permettra de mieux comprendre :

Il peut être utile de conserver des informations d'une page sur l'autre. Par

exemple pour :

se souvenir du login de l'utilisateur

se souvenir des références indiquant à quoi l'utilisateur s'intéresse

se souvenir des dernières pages visitées par l'utilisateur etc

Jusqu'ici, un seul moyen : utiliser des paramètres et penser à les remettre à

chaque lien et dans chaque formulaire

Programmation fastidieuse et source de problèmes.

Une session peut être vue comme un ensemble d'informations concernant un

utilisateur d'un site.

par utilisateur, on entend un navigateur sur une machine

Page 31: Cours php

les informations sont conservées entre deux pages

une page PHP peut ajouter ou modifier des informations

En PHP, la session est vue comme une variable spéciale appelée

$ SESSION : c'est un tableau associatif sa valeur est conservée d'une page sur

l'autre