lienDB - Ghusse

publicité
PHP/MYSQL
Web Dynamique
ENSG
Juin 2008
Ces 6 jours de formation
Jour 1 : présentations, attentes, principes, HTML
Jour 2 : CSS, et HTML
Jour 3 : PHP, formulaires, Base de données
Jour 4 : Rappel PHP, Requêtes, Sessions
Jour 5 : Sessions, Requêtes, Insertion de données
Jour 6 : Sécurité, questions, retours sur la formation.
ACCÈS À LA BASE DE
DONNÉES
Requêtes avec PHP
Fonctions MySQL de PHP
Rechercher dans la documentation PHP des
informations sur MySQL
mysql_connect()
mysql_select_db()
mysql_query()
mysql_real_escape_string()
mysql_fetch_object() ou mysql_fetch_array()
Connexion à une base de
données
Fonction mysql_connect(host, user, password)
Fonction mysql_select_db(database)
N’utiliser qu’une seule fois dans un script
Script plus rapide
Moins de charge sur la base de données
<?php
$lienDB = @mysql_connect(“localhost”, “utilisateur”,”motDePasse”);
if (!$lienDB)
die(“Erreur de connexion à la base de données”);
if (!@mysql_select_db(“database”,$lienDB))
die(“Erreur de sélection de la base de données”);
?>
Exécution d’une requête
Fonction mysql_query()
<?php
$lienDB = @mysql_connect(“localhost”, “utilisateur”,”motDePasse”);
if (!$lienDB)
die(“Erreur de connexion à la base de données”);
if (!@mysql_select_db(“database”,$lienDB))
die(“Erreur de sélection de la base de données”);
@mysql_query(“INSERT INTO livres (titre,auteur) VALUES (‘Test’,1)”,$lienDB);
?>
Récupération de données
Fonction mysql_fetch_array() ou mysql_fetch_object()
<?php
$lienDB = @mysql_connect(“localhost”, “utilisateur”,”motDePasse”);
mysql_select_db(“baseDedonnees”,$lienDB); if (!$lienDB)
die(“Erreur de connexion à la base de données”);
$resultat = @mysql_query(“SELECT * FROM livres”,$lienDB);
for ($i=0;$i<@mysql_num_rows($resultat);$i++)
{
$livres[] = @mysql_fetch_object($resultat);
}
// Accès aux données
echo “<ul>”;
foreach($livres as $livre)
{
echo “<li>”.$livre->titre.”</li>”;
}
echo “</ul>”;
?>
Sécurisation des requêtes
Tous les paramètres reçus de l’utilisateur et utilisés dans
une requête doivent-être sécurisés :
mysql_real_escape_string()
Formulaires
Base de donnée
<?php
$lienDB = @mysql_connect(“localhost”, “utilisateur”,”motDePasse”);
mysql_select_db(“baseDedonnees”,$lienDB);
if (!$lienDB)
die(“Erreur de connexion à la base de données”);
// Sécurisation
$login = mysql_real_escape_string($_POST[“login”],$lienDB);
@mysql_query(“SELECT * FROM utilisateurs WHERE login=’”.$login.”’”,$lienDB);
?>
Le paramètre magic_quotes de PHP peut poser des problèmes. Avant sa désactivation, il faut
vérifier que tous les paramètres sont sécurisés !
UTILISER UNE
SESSION
Mode d’emploi en PHP
Démarrer une session
Utiliser la fonction session_start()
Cette fonction doit-être utilisée avant tout envoi de
données à l’utilisateur, car elle envoie des données dans
l’en-tête de connexion HTTP.
Stocker des informations sur
l’utilisateur
PHP défini un tableau destiné à contenir les
informations sur l’utilisateur
$_SESSION[]
Enregistrer une donnée :
Appel obligatoire à session_start en début de script
Initialisation de $_SESSION[“nomVariable”]
C’est tout
Accéder aux informations
sur l’utilisateur
Il faut obligatoirement faire appel à session_start() en
debut de script.
$_SESSION[“nomVariable”] contient la donnée
précédemment stockée
C’est tout.
Effacer les informations de
session
Utiliser la fonction session_destroy() : efface toutes les
données
Utiliser session_start() : recrée une nouvelle session
MODÉLISATION DE
L’APPLICATION
Quels fichiers, quelles fonctions ?
QUELLES
FONCTIONS ?
Un fichier par fonction de
l’application
CRÉATION DE
LIBRAIRIES
Organisation du code source
Utilisation de librairies PHP
Appel à des fonctions définies dans un autre fichier :
include / include_once
require / require_once : erreur si le fichier n’est pas
trouvé
*_once : le fichier n’est pas parsé une deuxième fois,
évite les erreurs (fonctions déjà déclarées)
include ou require : équivalent à la recopie du fichier
appelé à la place de l’instruction d’inclusion
Require ou include ?
require : si le fichier n’est pas trouvé, une erreur est
levée par PHP.
include : si le fichier est absent, un avertissement
est levé par PHP.
Meilleures pratiques
Regrouper les fonctions qui ont un lien dans un même fichier php :
une librairie.
Regrouper les librairies dans un répertoire /lib
Identifier les librairies indispensables pour toutes les pages.
Créer un fichier /conf.php regroupant les paramètres de connexion à
la base de données et les paramètres globaux de l’application.
Créer un fichier /init.php qui fait appel à toutes les librairies
indispensables, dans le bon ordre, et à /conf.php. Utiliser ce
fichier dans toutes les pages.
QUELLE LIBRAIRIES
UTILISÉES PAR TOUTE
L’APPLICATION ?
Un fichier par librairie !
Librairies
Connexion, requêtes MySQL
Authentification et gestion de l’identité
Affichage des éléments de la page : titre, menu, footer,
etc...
Application
Créer les fichiers conf.php, init.php.
Créer une librairie d’affichage : écriture de l’en-tête
HTML et du pied de page, écriture du menu.
Créer une librairie d’authentification : analyse dans tous
les cas si $_POST contient une demande
d’authentification ou de déconnexion.
Créer la librairie d’échange avec MySQL.
Partir du modèle de page web fourni pour l’exercice.
Téléchargement