0% ont trouvé ce document utile (0 vote)
21 vues41 pages

Cours PHP Part 2

php

Transféré par

aameliora
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues41 pages

Cours PHP Part 2

php

Transféré par

aameliora
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 4.

PHP-Partie 2-

Prof. Amina ADADI

2ème Année Génie Logiciel

1 Année universitaire 2019-2020


Persistance: Session & Cookies

2
COOKIES

Un cookie est un fichier petit (65 Ko maxi) que l'on stocke sur le
poste du visiteur.
Exemple :
Vous stockez le pseudo du visiteur. Lorsqu'il revient sur votre site,
vous pouvez lire dans le cookie et lui afficher "Bonjour
votre_pseudo".

Contrairement à certaines légendes, les cookies sont totalement


inoffensifs, ce ne sont pas des virus ou troyens ou je ne sais quoi !

3
COOKIES
Création des cookies

On utilise la fonction setcookie()

4
COOKIES
Attention
Plusieurs conditions sont à respecter afin que l'utilisation des cookies se passe au mieux :
1. l'envoie d'un cookie doit être la première fonction PHP que vous utilisez dans votre
script,
ce qui veut dire que vous devez utiliser la fonction setcookie() tout en haut de votre
script (AUCUN AFFICHAGE ET AUCUN CODE HTML AVANT UN SETCOOKIE)
2. Si d'autres fonctions interviennent avant l'envoi du cookie, celui-ci ne fonctionnera
pas.
3. Si vous envoyez un cookie sur un poste client, celui-ci effacera automatiquement
l'ancien cookie qui portait le même nom (si il y en avait un), autrement il le créera
4. Note : pour effacer un cookie, vous devez lancer un cookie qui aura le même nom
que le cookie que vous voulez effacer, tout en lui donnant une valeur nulle (vous
pouvez également l'envoyer avec un temps de vie dépassé).

5
COOKIES
Afficher un cookie
$_COOKIE['Nom_cookie']

Modifier un cookie

6
COOKIES
Supprimer un cookie
Pour supprimer un cookie , on utilise setcookie() avec une date d’expiration passée:

Vérifier si les cookies sont « enable »

7
COOKIES
Exemple: Sondage avec
vérification des votes

8
COOKIES
Exemple: Sondage avec
vérification des votes

9
SESSION
Intérêt
Aller plus loin que les cookies
Permettre à plusieurs pages de partager les mêmes données
Conserver plusieurs données lors d’une session
Ranger les données de la session sur le serveur
Sécuriser le passage des données vers le serveur en
 Donnant un identifiant à la session
 Cryptant l’identifiant
Disposer de plusieurs sessions et donner un nom à chacune

10
SESSION
Intérêt
Aller plus loin que les cookies
Permettre à plusieurs pages de partager les mêmes données
Conserver plusieurs données lors d’une session
Ranger les données de la session sur le serveur
Sécuriser le passage des données vers le serveur en
 Donnant un identifiant à la session
 Cryptant l’identifiant
Disposer de plusieurs sessions et donner un nom à chacune

11
SESSION
 Les sessions en PHP permettent de sauvegarder des
variables de page en page pendant une certaine durée
prédéfinie par PHP (et modifiable bien entendu).
 Chaque utilisateur ayant besoin des sessions se voit
attribuer un identifiant unique appelé ID de session. Cet
identifiant est stocké sur le poste de l'internaute sous
forme d'un cookie ou transite via l'URL si l'option
session.use_trans_sid est à 1 (ou On) dans le fichier
[Link].

12
SESSION
 Démarrer une session
Avant d'utiliser les sessions sur une page, on doit toujours utiliser la fonction
session_start() placée avant tout envoi de code HTML, et donc généralement tout en
haut de votre page PHP :

 Création une variable de session

13
SESSION
 Exemple

14
SESSION
 Durée de vie d’une session
Dés que l'on ferme le navigateur la session est détruite.
Sauf à configurer le fichier [Link] avec [Link] qui
fixe la durée de vie, en secondes, du cookie envoyé au client.
La valeur 0 signifie "jusqu'à ce que le client soit fermé". Par
défaut à 0.
Donc si on le laisse à zéro la session dure jusqu'à la
fermeture du navigateur, pour laisser les données durant 30
minutes, il faut remplacer 0 par 1800 (= 30 minutes * 60
secondes dans une minute). [Link] = 0

15
SESSION
 Affichage id session
Lit et/ou modifie l'identifiant courant de session

 Suppression d’une variable de session

• La commande session_unregister() supprime une variable dans la session


courante.
• Elle retourne TRUE si success, FALSE sinon.

• Il est aussi possible de purger toutes les variables de la session avec

• Si vous utilisez le tableau superglobale $_SESSION, il suffit alors d'utiliser unset()


16
SESSION
 Fermeture d’une session

Fermeture conservatrice avec session_write_close


• La commande session_write_close() écrit les valeurs des variables de session sur le
serveur et ferme la session.
Fermeture destructive avec session_destroy
Si vous voulez détruire la session du visiteur, vous pouvez faire un lien "Déconnexion" qui
améne vers une page qui fait appel à la fonction session_destroy()
La commande session_destroy() détruit toutes les données enregistrées d'une session.
Cette derniére commande est la plus utilisée car n'impose aucune sauvegarde au serveur.
Retourne TRUE en cas de succés, et FALSE sinon.

17
SESSION
Exemple:
Commande en ligne

18
SESSION
Exemple: Commande en ligne

19
SESSION
Exemple:
Commande en ligne

20
Accès à la base de données

21
3 façons pour accéder à la BD
PHP propose plusieurs moyens de se connecter à une base de données MySQL.
 L'extension mysql_ : ce sont des fonctions qui permettent d'accéder à une
base de données MySQL et donc de communiquer avec MySQL. Leur nom
commence toujours par mysql_. Toutefois, ces fonctions sont vieilles et on
recommande de ne plus les utiliser aujourd'hui.
 •L'extension mysqli_ : ce sont des fonctions améliorées d'accès à MySQL (Le
« i » pour « improved » ).Elles proposent plus de fonctionnalités et sont plus à
[Link] y’a deux variation: MySQLi (object-oriented) et MySQLi (procedural)
 •L'extension PDO : c'est un outil complet qui permet d'accéder à n'importe
quel type de base de données. On peut donc l'utiliser pour se connecter aussi
bien à MySQL que PostgreSQL ou Oracle

22
Scénario de communication

1. le serveur utilise toujours PHP, il lui fait donc passer le message


2. PHP effectue les actions demandées et se rend compte qu'il a besoin de MySQL. En effet, le code
PHP contient à un endroit « Va demander à MySQL d'enregistrer ce message ». Il fait donc
passer le travail à MySQL ;
3. MySQL fait le travail que PHP lui avait soumis et lui répond « O.K., c'est bon ! » ;
4. PHP renvoie au serveur que MySQL a bien fait ce qui lui était demandé

23
Classes prédéfinies PDO
 PDO : connexion PHP / base de données
 __construct()
 exec(), prepare(), query()
 errorCode(), errorInfo()
 getAttributes(), setAttribute()
 lastInsertId(), quote()
 beginTransaction()
 commit(), rollBack()
 getAvailableDrivers()

24
Classes prédéfinies PDO
 PDOStatement : requête préparée, jeu de résultats
 bindColumn(), bindParam(), bindValue(),
closeCursor()
 errorCode(), errorInfo()
 fetch(), fetchAll(), fetchColumn(),
fetchObject(), setFetchMode(),
nextRowset()
 rowCount(), columnCount(), getColumnMeta()
 getAttribute(), setAttribute()
 execute()
 debugDumpParams()

25
fonctions de l'extension MySQLi
Interface POO Interface procédural Description
Ouvre une connexion à un
mysqli::__construct() mysqli_connect()
serveur MySQL
Sélectionne une base de
mysqli::select_db() mysqli_select_db() données par défaut pour
les requêtes
Exécute une requête sur la
mysqli::query() mysqli_query()
base de données
Le nombre de lignes dans
$mysqli_result::num_rows mysqli_num_rows()
un résultat
Retourne une ligne de
résultat sous la forme d'un
mysqli_result::fetch_array() mysqli_fetch_array()
tableau associatif, d'un
tableau indexé, ou les deux
mysqli::close() mysqli_close() Ferme une connexion

26
Principales opération sur la base de données

 CONNEXION
 EFFECTUER DES REQUÊTES
 LES REQUÊTES PRÉPARÉES

27
Connexion
MySQLi Object-Oriented

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Création de connexion
$conn = new mysqli($servername, $username, $password);

// Vérification de la connexion
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?

28
Connexion
MySQLi Procedural

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Création de connexion
$conn = mysqli_connect($servername, $username,
$password);

// Vérification de la connexion
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?

29
Connexion
PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
$conn = new PDO("mysql:host=$servername;dbname=myDB",
$username, $password);
// Le mode PDO error est a réglé a EXCEPTION
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
30
Connexion
Fermeture de la connexion
MySQLi Object-Oriented:
$conn->close();

MySQLi Procedural:
mysqli_close($conn);

PDO:
$conn = null;

31
EFFECTUER DES REQUÊTES

PDO distingue 2 types de requêtes :


les requêtes de sélection : SELECT > query($requete)/
mysqli_query($requete)
les requêtes de modification insertion: UPDATE – INSERT – DELETE >
exec($requete)/ mysqli_query($requete)

La différence entre ces deux méthodes est que query() retournera un jeu de
résultats sous la forme d'un objet PDOStatement pour PDO

Alors que exec() retournera uniquement le nombre de lignes affectées. En


d'autres termes, vous utiliserez query() pour des requêtes de sélection
(SELECT) et exec() pour des requêtes d'insertion (INSERT), de modification
(UPDATE) ou de suppression DELETE)

32
EFFECTUER DES REQUÊTES
Requête SQL retournant une seule ligne
PDO mysqli
$query = 'SELECT * FROM salaries $query = 'SELECT * FROM salaries
WHERE where id=1;';
id=1;'; $result = mysqli_query($conn,$query);
$ligne = $pdo->query($query) $ligne = mysqli_fetch_assoc($result);
->fetch();
Requête SQL retournant plusieurs lignes
$query = 'SELECT * FROM salaries;'; $query = 'SELECT * FROM salaries;';
$liste = $pdo->query($query) $result = mysqli_query($conn,$query);
->fetchAll(); $liste = array();
while($ligne= mysqli_fetch_assoc($resu
lt)){
$liste[] = $ligne ;
}
Requête d'insertion, de modification ou de suppression
$query = 'DELETE FROM salaries WHERE $query = 'DELETE FROM salaries WHERE
id=2;'; id=2;';
$rowCount = $pdo->exec($query); mysqli_query(sconn,$query);
$rowCount = mysq l i_affected_rows();

33
LES REQUÊTES PREPAREES

Le principe est de préparer un « moule » de requête et de placer des place holders


aux endroits où l'on voudra insérer nos valeurs dynamiques.
Vous avez une requête avec des place holders (les points d'interrogation) :

$requete ='DELETE FROM salaries WHERE idsalaries = ?';

Le SGBD va préparer (interpréter, compiler et stocker temporairement son "plan


d'exécution logique" ) la requête.

PDO et Mysqli
$stmt = $conn->prepare($requete)

34
LES REQUÊTES PREPAREES
Une fois préparé, et lors de l’exécution il faut d’abord binder les paramètre . C-à-d, Il
faudra associer des valeurs aux place holders, qui agissent un peu comme des
variables $stmt->bind_param. Ensuite on exécute la requête préparée : $stm-
>execute() ;
Mysqli
$stmt = $conn->prepare("INSERT INTO MyGuests
(firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname,
$email);

// affecter les paramètre et exécuter


$firstname = « ahmad";
$lastname = « ahmadi";
$email = « ahmadi@[Link]";
$stmt->execute();

L’argument "sss" liste le type de données des paramètres. “S” veut dire string, i -
integer d - double
35
LES REQUÊTES PREPAREES
PDO
// bind parameters
$stmt = $conn->prepare("INSERT INTO MyGuests
(firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

// exécuter
$firstname = « ahmad";
$lastname = « ahmadi";
$email = « ahmadi@[Link]";
$stmt->execute();

36
LES REQUÊTES PREPAREES
Exemple complet PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,
$password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare sql and bind parameters


$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

37
LES REQUÊTES PREPAREES
Exemple complet PDO
// insert a row
$firstname = " Meryem ";
$lastname = " ALAMI ";
$email = " Meryem @[Link]";
$stmt->execute();

// insert another row


$firstname = "salim";
$lastname = "slimi";
$email = " salim @[Link]";
$stmt->execute();

echo "New records created successfully";


}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;
?>

38
LES REQUÊTES PREPAREES
Exemple complet mysqli
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// prepare and bind


$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?,
?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

39
LES REQUÊTES PREPAREES
Exemple complet mysqli
// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@[Link]";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "mary@[Link]";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@[Link]";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

40
Pour aller plus loin dans PHP

Accès au système de fichier

Gestion des dates calendrier

Gestion dynamique des images

Gestion des chaines de caractère et expression

régulière

41

Vous aimerez peut-être aussi