Cours PHP 2

Transcription

Cours PHP 2
Projet DELIRE
Introduction à PHP/MySQL
Les cookies




conçus par Netscape
fichiers texte courts stockés par le navigateur
(côté client)
cookie sans durée d’expiration : mémoire vive
cookie avec durée d’expiration : mémoire
secondaire
Les cookies : setcookie.php
<?php
setcookie(’truc’, ’machin’);
?>
<html>
<head>
<meta http-equiv="content-type"
content="text/html;charset=utf-8"/>
<title>Titre</title>
</head>
<body>
<p>Un cookie a &eacute;t&eacute; envoy&eacute;</p>
</body>
</html>
Les cookies : testcookie.php
<html>
<head>
<meta http-equiv="content-type"
content="text/html;charset=utf-8"/>
<title>Titre</title>
</head>
<body>
<?php
if (isset($_COOKIE[’truc’])) {
echo '<p>Un cookie a été envoyé</p>'
echo '<p>Son contenu est : ';
echo $_COOKIE[’truc’];
echo '</p>';
} else {
echo '<p>Aucun cookie du nom de truc</p>';
}
?>
</body>
</html>
Les cookies : fonctions

Suppression d’un cookie


Modification de la valeur d’un cookie


setcookie('nom')
setcookie('nom', nouvelle valeur)
Validité et date d’expiration



setcookie('nom', valeur, timestamp)
timestamp : nombre de secondes depuis le 1er
janvier 1970
mktime(heures, minutes, secondes, mois,
jour, an)
Persistence des données

On veut parfois garder de l’information entre
plusieurs pages :

Login / Password

Préférences de navigation

Sélection de produits à acheter (panier, ...)
Persistence des données

On utilise donc les sessions PHP.





Les cookies permettent de stocker des informations
côté client.
Les sessions permettent de stocker des
informations côté serveur.
Elles sont identifiées par un numéro qui reste valide
tant que le visiteur reste connecté.
Le numéro est transmis au serveur soit dans l’URL,
soit dans un cookie.
Les données se placent et se récupèrent dans
$_SESSION, comme pour les formulaires.
Utilisation des sessions




Les sessions utilisent les cookies : il faut donc ouvrir la
session avant d'afficher quoi que ce soit (voir fonction
setcookie)
Note : Les valeurs des cookies sont dans le tableau
pré-rempli $_COOKIE
Le cookie utilisé (ou la variable dans $_GET à defaut)
s'appelle PHPSESSID
La session existe dès qu'elle est crée et jusqu'à ce
qu'elle soit détruite

Création (et réouverture) : session_start()

Destruction : session_destroy()

Note : les session s'autodétruisent après un certain
temps (généralement 30 min)
Exemple d'utilisation
<html>
<head>
<meta http-equiv="content-type"
content="text/html;charset=utf-8"/>
<title>Connexion au site</title>
</head>
<body>
<form method="post" action="verifLogin.php">
<label>Login</label>
<input type="text" name="login">
<br/>
<label>Mot de passe</label>
<input type="password" name="password">
<br/>
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
Création de la session
<?php
// On démarre la session
session_start();
// On n’effectue les traitement qu’à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login']))
&& (!empty($_POST['password']))
&& (!empty($_POST['submit'])) ) {
extract($_POST); // création des variables $login,
$password...
// On va chercher les infos correspondant ce login
// ...
$_SESSION['login'] = $login;
$_SESSION['age'] = 22;
$_SESSION['pays'] = 'France';
echo '<p>Vous êtes bien connecté</p>';
}
?>
Utilisation de la session
<?php
// On appelle la session
session_start();
// On affiche une phrase résumant les infos sur l’utilisateur
echo 'Login : ',$_SESSION['login'],'<br/>',
'Age : ',$_SESSION['age'],'<br/>',
'Pays : ',$_SESSION['pays'],'<br/>';
?>
Destruction de la session
<?php
// On appelle la session
session_start();
// On écrase le tableau de session
$_SESSION = array();
// On détruit la session
session_destroy();
?>
SQL




SQL est un langage puissant de requete
Il permet de faire une demande complexe à une
base de données dans un langage proche de
l'anglais
On l'utilise pour récupérer, ajouter, supprimer et
créer des données dans une base de données
Les bases de données utilisent des tables :


chaque ligne est un enregistrement de champs
avec des valeurs
les requetes se font sur ces champs
Exemple
codeAer
BST
EFD
LD
NY-JFK
ORLY
RCDG
TLS
nomAeroport
Poretta
Ellington Field
Heathrow
John-F Kennedy
Orly
Charles de Gaulle
Blagnac
villeAeroport
Bastia
Houston
Londres
New York
Paris
Paris
Toulouse
Accès au serveur MySQL


Connexion

$c = mysql_connect("localhost", "login", "mdp");

$c
est false en cas d'erreur de connexion
Choix de la base

$s = mysql_select_db("nom", $c);

$s
est false en cas d'erreur
Requêtes


Exécution

$res = mysql_query("une requete", $c);

$res est false en cas d'erreur
Récupération de(s) résultat(s)






$row = mysql_fetch_row($res);
$tab = mysql_fetch_array($res);
$obj = mysql_fetch_object($res);
$row[0]; $row[1]; …
$tab["champ"]; … ou $tab[0];
obj >champ; …
…
Autres fonctions

mysql_num_rows($res) :


mysql_affected_rows($res) :


retourne le nombre de résultats d'un SELECT
retourne le nombre de ligne affectées par un
INSERT, un UPDATE ou un DELETE
mysql_insert_id($c) :

retourne le dernier incrément d'un champ
AUTO_INCREMENT
Injections SQL

Utilisateur Dupont


Utilisateur : Dupont' -

SELECT uid WHERE name = 'Dupont' AND password =
'45723a2af3788c4ff17f8d1114760e62';
SELECT uid WHERE name = 'Dupont' -- ' AND
password = '4e383a1918b432a9bb7702f086c56596e';
Utiliser mysql_real_escape_string sur les
données utilisateur :

Dupont' -- → Dupont\' --