Vous êtes sur la page 1sur 28

Développement Web Back-end

PARTIE II
L’interactivité
en PHP

Dans ce module, vous allez :


PHP et les formulaires

Formulaire HTML

 Retourne des informations saisies par un utilisateur vers une application serveur

 La création d’un formulaire nécessite la connaissance de quelques balises HTML indispensables :

 Structure : un formulaire commence toujours par la balise

<form> et se termine par la balise </form>

 Champ de saisie de text en ligne :


<input type = "text" name ="nom_du_champ" value="chaîne">

 Boutons d’envoi et d’effacement :


<input type=" submit " value = "Envoyer">

<input type = "reset" name ="efface" value = "Effacer">


PARTIE 2

 Case à cocher et bouton radio :


<input type = "checkbox" name ="case1" value="valeur_case">

<input type = "radio" name ="radio1" value ="valeur_radio">

3
PHP et les formulaires

 Liste de sélection avec options à choix unique :

<select name ="select" size="1">

<option value = "un"> choix </option>

<option value ="deux"> choix2 </option>

</select>

 Liste de sélection avec options à choix multiples :


<select name ="select" size = "1" multiple>
PARTIE 2

<option value = "un"> choix1 </option>

<option value = "deux"> choix2 </option>

</select>
4
PHP et les formulaires

 Méthodes d’envoi get et post

 transmission selon une des deux méthodes d'envoi GET ou POST

– La méthode GET place les informations d'un formulaire directement à la suite de l'adresse URL de
la page appelée.

• http://www.site.com/cible.php?champ=valeur&champ2=valeur

• inconvénients :

- rendre visibles les données dans la barre d’adresse du navigateur.

- De plus, la longueur totale est limitée à 255 caractères, ce qui rend impossible la
transmission d’un volume de données important
PARTIE 2

– La méthode POST regroupe les informations dans l'entête d'une requête HTTP

• Assure une confidentialité efficace des données


5
PHP et les formulaires

 Récupération des paramètres en PHP

 Les tableaux associatifs $_GET et $_POST contiennent toutes les


variables envoyées par un formulaire

 Vous pouvez aussi utiliser la variable $_REQUEST, si vous ne


souhaitez pas vous embarrasser de la méthode utilisée. Elle contient
un mélange des données de GET, POST, COOKIE et FILE.
PARTIE 2

6
PHP et les formulaires

<form method="POST" action="page_cible.php">


<input type="text" name="Champ_saisie" value="Texte"> <br>
<select name="Liste_Choix" size="3">
<option value="Option_1">Option_1</option>
<option value="Option_2">Option_2</option>
<option value="Option_3">Option_3</option>
</select> <br>
<textarea name="Zone_Texte" cols="30" rows="5"> Texte par défaut </textarea><br>
<input type="checkbox" name="Case_Cocher[]" value="Case_1"> Case 1<br>
<input type="checkbox" name="Case_Cocher[]" value="Case_2"> Case 2<br>
<input type="checkbox" name="Case_Cocher[]" value="Case_3"> Case 3<br>
<input type="radio" name="Case_Radio" value="Case radio 1"> radio 1<br>
<input type="radio" name="Case_Radio" value="Case radio 2"> radio 2<br>
PARTIE 2

<input type="radio" name="Case_Radio" value="Case radio 3"> radio 3<br>


<input type="reset" name="Annulation" value="Annuler">
<input type="submit" name="Soumission" value="Soumettre">
</form>

7
PHP et les formulaires

<?php

$resultat = $_POST["Champ_saisie"] . "<br>";

$resultat .= $_POST["Liste_Choix"] . "<br>";

$resultat .= $_POST["Zone_Texte"] . "<br>";

for ($i = 0; $i < count($_POST["Case_Cocher"]); $i++)

$resultat .= $_POST["Case_Cocher"][$i] . "<br>";

$resultat .= $_POST["Case_Radio"] . "<br>";


PARTIE 2

echo $resultat;

?>

8
PHP et les formulaires

 PHP et les formulaires

 La plupart des éléments d'un formulaire n'acceptent qu'une seule et


unique valeur, laquelle est affectée à la variable correspondante
dans le script de traitement.

$Champ_Saisie  "Ceci est une chaîne de caractères.";

 Pour des cases à cocher et les listes à choix multiples, plusieurs


valeurs peuvent être sélectionnées entraînant l'affectation d'un
tableau de valeurs aux variables correspondantes.
PARTIE 2

$Case_Cocher[0]  "Case radio 1";

$Case_Cocher[1]  "Case radio 3";


9
PHP et les formulaires

 Validation des données du formulaire sur serveur

Une validation côté serveur, en PHP, va donc également s’imposer pour filtrer les données potentiellement
dangereuses.

Le PHP nous offre différentes options pour sécuriser nos formulaires en testant la validité des données envoyées : on
va pouvoir utiliser des fonctions, des filtres, des expressions régulières, etc.

La première fonction que vous devez absolument connaitre est la fonction htmlspecialchars(). Cette fonction va
permettre d’échapper certains caractères spéciaux comme les chevrons « < » et « > » en les transformant en entités
HTML. En échappant les chevrons, on se prémunit d’une injection de code JavaScript puisque les balises <script> et
</script> vont être transformées en & <script> et &/<script> et ne vont donc pas être exécutées par le navigateur.
PARTIE 2

La deuxième fonction est stripslashes() qui va supprimer les antislashes que certains hackers pourraient utiliser pour
échapper des caractères spéciaux. La troisième fonction est trim() qui va supprimer les espaces inutiles
10
PHP et les formulaires

 Validation des données du formulaire sur serveur

Tester La faille XSS.

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


<p>Votre nom : <input type="text" name="nom" /></p>
</form>
Bonjour, <?php echo htmlspecialchars($_REQUEST['nom']),'<br>'; ?>.

Ou bien on peut créer une fonction personnalisée qui va se charger d’exécuter chacune
des fonctions ci-dessus :

$nom = valid_donnees($_POST["nom"]);
PARTIE 2

function valid_donnees($donnees){
$donnees = trim($donnees);
$donnees = stripslashes($donnees);
$donnees = htmlspecialchars($donnees);
return $donnees;
} 11
Les cookies

 Principe

 Un cookie est un fichier texte créé par un script et stocké sur l’ordinateur des visiteurs
d’un site

 Les cookies permettent de conserver des renseignements utiles sur chaque utilisateur,
et de les réutiliser lors de sa prochaine visite

 Exemple : personnaliser la page d’accueil ou les autres pages du site

– un message personnel comportant par exemple son nom, la date de sa dernière


visite, ou tout autre particularité.
PARTIE 2

 Les cookies étant stockés sur le poste client, l’identification est immédiate et ne
concernent que les renseignements qui le concernent

12
Les cookies

 Exemple d’application des cookies

 Mémorisation des paniers dans les applications d’e-commerce

 Identification des utilisateurs

 Des pages web individualisées

 Afficher des menus personnalisés

 Afficher des pages adaptées aux utilisateurs en fonction de leurs


PARTIE 2

précédents visites

13
Les cookies

Écrire des cookies

 L’écriture de cookies est possible grâce à la fonction setcookie()

 il faut mettre cette fonction dès le début du script avant l’envoi


d’aucune autre information de la part du serveur vers le poste client.
Setcookie("nom_var", "valeur_var", date_expiration)
<?php
setcookie ("premierCookie", "Salut", time() +3600*24*7);

if (!$_COOKIE["premierCookie"]) {
echo "le cookie n’a pas été défini";}
else {
PARTIE 2

echo $_COOKIE["premierCookie"], "<br>";


}
?>

14
Les cookies

 Écriture de cookies

 Nom_var : nom de la variable qui va stocker l’information sur le


poste client et qui sera utilisée pour récupérer cette information dans
la page qui lira le cookie.
 C’est la seule indication obligatoire pour un cookie

 Valeur_var : valeur stockée dans la variable. Par exemple une chaîne


de caractères ou une variable chaîne, en provenance d’un formulaire
 Date_expiration : la date à laquelle le cookie ne sera plus lisible et
sera effacé du poste client
 on utilise en général la date du jour, définie avec la fonction time()
à laquelle on ajoute la durée de validité désirée
PARTIE 2

 Si l’attribut n’est pas spécifié, le cookie expire à l’issue de la session

15
Les cookies

 Lecture de cookies

 Les cookies sont accessibles dans le tableau associatif $_COOKIE

 Il faut d’abord vérifier l’existence des variables dont les noms et les valeurs ont
été définis lors de la création du cookie.

– Cette vérification s’effectue grâce à la fonction isset($_COOKIE["nom_var"]) qui


renvoie true si la variable $nom_var existe et false sinon.

<?php

if (isset($_COOKIE["premierCookie"])){
PARTIE 2

echo "<h2> Bonjour isset($_COOKIE[premierCookie])</h2>";

}
?>

16
Les cookies

 Écriture de plusieurs variables par un cookie

 Utilisation de la fonction compact() pour transformer les variables en un tableau

 Convertir le tableau en une chaîne de caractère à l’aide de la fonction implode()

 Affecter la chaîne créée à l’attribut « nom_cookie »

$col="#FF0000";
$size=24;
$font="Arial";
$text="Je suis le cookie";
PARTIE 2

$arr=compact("col", "size", "font", "text");


$val=implode("&", $arr);
Setcookie("la_cookie", $val, time()+600);

17
Les cookies

 Lecture de plusieurs variables d’un cookie

 Décomposé la chaîne stockée par la cookie et retrouver un tableau en


utilisant la fonction explode()
echo " <b> voici le contenu de la chaîne cookie : </b><br>";

echo $_COOKIE["la_cookie"], "<br> <br>";

$arr=explode("&", $_COOKIE["la_cookie"]);

echo "<b> ces variables ont été établies à partir de la chaîne cookie : </b> <br>
<br>";

foreach ($arr as $k=>$elem) {


PARTIE 2

echo "$k=>$elem <br>";

18
Les cookies

 Supprimer un cookie

 Il suffit de renvoyer le cookie grâce à la fonction setcookie() en spécifiant


simplement l'argument NomDuCookie

setcookie("Visites");

 Une autre méthode consiste à envoyer un cookie dont la date d'expiration est
passée:
PARTIE 2

setcookie("Visites","",time()-1 )

19
Les sessions

 Principe

 Est un mécanisme permettant de mettre en relation les différentes requêtes


du même client sur une période de temps donnée.

 Les sessions permettent de conserver des informations relatives à un


utilisateur lors de son parcours sur un site web

 Des données spécifiques à un visiteur pourront être transmises de page en


page afin d'adapter personnellement les réponses d'une application PHP

 Chaque visiteur en se connectant à un site reçoit un numéro d'identification


dénommé identifiant de session (SID)
PARTIE 2

20
Les sessions

 Démarrer une session PHP

 La fonction session_start() se charge de générer automatiquement cet


identifiant unique de session et de créer un répertoire. Elle doit être placée
au début de chaque page afin de démarrer ou de continuer une session.
<?php
session_start();
$Session_ID = session_id();
// $Session_ID = 7edf48ca359ee24dbc5b3f6ed2557e90 ?>

 La fonction session_start() vérifie d’abord si une session existe déjà en


recherchant la présence d’un ID de session. Si elle en trouve un, c’est à dire
que la session est déjà démarrée, elle met en place les variables de session et
PARTIE 2

si ce n’est pas le cas, elle démarre une nouvelle session en créant un nouvel
ID de session.

21
Les sessions

 Stockage des données de session

 Vous pouvez stocker toutes vos données de session sous forme de paires clé-valeur dans
le tableau $_SESSION[]. Les données stockées sont accessibles pendant la durée de vie
d’une session. Considérons le script suivant, qui crée une nouvelle session et enregistre
deux variables de session.

<?php

// Démarrer la session

session_start();

// Stocker des données de session

$_SESSION["nom"] = "Jean";
PARTIE 2

$_SESSION["adresse"] = "Paris";

?>

22
Les sessions

 Accès aux données de session

 Pour accéder aux données de session que nous avons définies dans l’exemple ci-dessus depuis
n’importe quelle autre page, il suffit de recréer la session en appelant session_start() puis de
passer la clé correspondante au tableau associatif $_SESSION.
<?php

// Démarrer la session

session_start();

// Accès aux données de session

echo 'Nom : ' . $_SESSION["nom"] . '\n';

echo 'Adresse : ' . $_SESSION["adresse"];


PARTIE 2

?>

23
Les sessions

Détruire une session

 Si vous souhaitez supprimer certaines données de session, il suffit d’indiquer la clé


correspondante du tableau associatif $_SESSION, comme indiqué dans l’exemple suivant :
// Démarrer la session

session_start();

// Suppression des données de session

if(isset($_SESSION["adresse"])){

unset($_SESSION["adresse"]);

 Pour supprimer toutes les variables de session globales et détruire la session, utilisez
session_unset() et session_destroy() :
PARTIE 2

// supprimer toutes les variables de session


session_unset();
// détruire la session
session_destroy();

24
Les sessions

Exemple d’authentification

 Nous allons créer un système de connexion simple en utilisant PHP . Nous allons créer un formulaire
de connexion, ainsi qu’une page d’accueil et un script de déconnexion.

 Créons un autre fichier PHP appelé « auth.php » et y mettons le code d’exemple suivant. Cet
exemple de code va créer un formulaire web qui permet aux utilisateurs de s’authentifier.

<form action="" method="post">


<h1 >S'authentifier</h1>
<input type="text" name="login" placeholder="login" required />
<input type="password" name="password" placeholder="Mot de passe" required />
PARTIE 2

<input type="submit" name="submit" value="S'inscrire" />


</form>

25
Les sessions

Exemple d’authentification

Les entrées seront vérifiées par rapport aux informations d’identification stockées dans la
base de données. Si le nom d’utilisateur et le mot de passe correspondent, l’utilisateur est
autorisé et se voit accorder l’accès au site, sinon la tentative de connexion sera rejetée.
<?php
session_start();
@ $login=$_POST["login"];
@ $mdp=crypt($_POST["password"], '$1$rasmusle$');
@ $submit=$_POST["submit"];
$_SESSION["login"]=$login;
$erreur='';
if (isset($submit)){
if($login=="alae" && $mdp=='$1$rasmusle$uwzLzKVWDEpvbNytWXBmS/'){
PARTIE 2

$_SESSION["autoriser"]="ok";
header("location:accueil.php");//header est une fonction qui renvoie les entêtes http
}else{ $erreur="login ou mot de passe incorrect"; echo $erreur; }
}
?>

26
Les sessions

Exemple d’authentification
Créer la page d’accueil
Voici le code de notre fichier « accueil.php », où l’utilisateur est redirigé après une connexion réussie.

<?php
// Initialiser la session
session_start();
// Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de
connexion
if(!isset($_SESSION["autoriser"])){
header("Location: auth.php");
exit(); //arret prematurer
}
?>
<h1>Bienvenue <?php echo $_SESSION['login']; ?>!</h1>
<p>C'est votre page d'accueil.</p>
PARTIE 2

<a href="deconnection.php">Déconnexion</a>
</div>
</body>
</html>

27
Les sessions

Exemple d’authentification

Créer le script de déconnexion

Maintenant, créons le fichier « deconnection.php ». Lorsque l’utilisateur clique sur le lien de déconnexion, le
script à l’intérieur de ce fichier détruit la session et redirige l’utilisateur vers la page de connexion.

<?php

// Initialiser la session

session_start();

// Détruire la session.

if(session_destroy())

{ // Redirection vers la page de connexion


PARTIE 2

header("Location: auth.php");

?>

28

Vous aimerez peut-être aussi