Créez l`arborescence suivante : Créez une base de données maroc

Transcription

Créez l`arborescence suivante : Créez une base de données maroc
MAROC
Créez l’arborescence suivante :
Dsc00001.jpg
Dsc00002.jpg
Dsc00003.jpg
Dsc00004.jpg
Dsc00005.jpg
Créez une base de données maroc et une table pagetype
id clé primaire
Les enregistrements
Page 1
Laurent Lallias
Greco Php niv2
Créez commun.php le fichier de connexion
commun.php
<?php
/********** déclaration des variables de connexion **********/
$host = "localhost";
$user = "root";
$password = "";
$bdd = "maroc";
$table="pagetype";
/********** connection au serveur **********/
$link=@mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
/********** connection à la base de données **********/
$retour=@mysql_select_db($bdd,$link) or die("Impossible de se connecter");
?>
Créez index.php la page d'accueil
index.php
<html><head>
<title>Administration du site</title>
</head><body>
<?php
# inclusion dans le fichier des paramètres de connexion
include ("admin/connexions/commun.php");
# lecture de la table
$query = "SELECT * FROM $table";
$result=mysql_query($query);
# test pour savoir s'il y a des enregistrements
if (mysql_numrows($result)>0)
{
# création du formulaire
echo "
<form method=\"post\" action=\"index.php\">";
# impression de la combo box contenant les titres possibles
# par défaut on décide d'afficher le premier enregistrement $id=1
# on teste malgré tout si l'internaute n'a pas choisi de voir un autre enregistrement
Page 2
Laurent Lallias
Greco Php niv2
# si ce choix existe, il est dans $_POST["choix_titre"]
# auquel cas on affectera $id avec cette valeur
if (isset($_POST["choix_titre"])) $id=$_POST["choix_titre"];else $id=1;
echo "<select name=\"choix_titre\">";
while ($row=mysql_fetch_row($result))
{
#$row[0] correspond au numéro d'enregistrement
echo "<option value=\"$row[0]\"";
if($row[0]==$id) echo " selected=\"selected\"";
echo">$row[1]</option>";
if($row[0]==$id)
{
$titre=$row[1];
#$row[1] correspond au titre
$texte1=$row[2];
#$row[2] correspond au texte à gauche de l'image
$texte2=$row[3];
#$row[3] correspond au texte à droite de l'image
$image=$row[4];
#$row[4] correspond à l'image
}
}
echo "</select>";
# bouton valider
echo "<input type=\"submit\" name=\"submit\" value=\"Ok\">";
echo "</form>";
#on affiche le titre
echo "<h2>$titre</h2>";
#on crée un tableau
echo "
<table width=\"100%\" border=\"0\" cellspacing=\"0\">
<tr>
<td>$texte1</td>
<td width=320><img src=$image width=\"320\" height=\"240\"></td>
<td>$texte2</td>
</tr>
</table>
";
} else { echo "<a href=\"admin/ajout.php\">Enregistrement vide ! </a>"; }
?>
</body></html>
Page 3
Laurent Lallias
Greco Php niv2
Créez index.php la page d'accueil administration
index.php
<html>
<head>
<title>Administration du site</title>
</head>
<body bgcolor="#FF9933">
<?php
/**********include du fichier de connexion*********/
include("connexions/commun.php");
/*** On cherche tous les enregistrements ***/
$query = "SELECT * FROM $table";
/*** envoi de la requête à la base ***/
$result = mysql_query($query);
/*** on compte le nombre d’enregistrements***/
$nb=mysql_numrows($result);
echo "
<p align=center><font face=\"Arial, Helvetica, sans-serif\">
Votre table comporte ".$nb." enregistrement(s)
</font></p>
";
/*** le résultat de la requete est stocké dans un tableau ***/
while($row = mysql_fetch_row($result))
{
/** on affiche tous les champs sauf Id **/
echo "
<table width=\"100%\" border=\"1\" cellspacing=\"0\">
<tr><td>
<table width=\"100%\" border=\"0\" cellspacing=\"0\">
<tr><!- on affiche le contenu de la table dans des zones de texte-->
<td ><textarea cols=\"15\" rows=\"3\">$row[1]</textarea></td>
<td ><textarea cols=\"15\" rows=\"3\">$row[2]</textarea></td>
<td ><textarea cols=\"15\" rows=\"3\">$row[3]</textarea></td>
<td ><img src=../$row[4] width=128 height=96></td>
</tr>
<tr bgcolor=\"#cccccc\">
Page 4
Laurent Lallias
Greco Php niv2
<td colspan=\"4\"><!- on appelle un des scripts en passant l'id en paramètre-->
<a href=\"suppression.php?id=$row[0]\" >Supprimer cette page</A>
<a href=\"modification.php?id=$row[0]\" >Modifier cette page</A>
<a href=\"ajout.htm\">Ajouter une page</a>
</td>
</tr>
</table>
</td></tr>
</table>
";
}
/*** on ferme la connexion ***/
mysql_close($link);
?>
</body>
</html>
Créez ajout.htm le formulaire d'ajout d'enregistrement
ajout.htm
<html>
<body>
<!-- Le type "multipart/form-data" est utilisé
pour soumettre des formulaires qui contiennent des données non-ASCII,
et des données binaires-->
<form enctype="multipart/form-data" action="ajout_page.php" method="post">
<p>Tapez ici votre titre :<br>
<textarea name="titre" cols="100" rows="10"></textarea>
</p>
<p>Tapez ici votre texte1 :<br>
<textarea name="texte1" cols="100" rows="10"></textarea>
</p>
<p>Tapez ici votre texte2 :<br>
<textarea name="texte2" cols="100" rows="10"></textarea>
</p>
<p>Votre fichier image :<br>
<!-- Le champ caché MAX_FILE_SIZE (en octets) doit précéder le champ input de type file et sa
valeur représente la taille maximale acceptée du fichier. Ceci est considéré comme un conseil
pour le navigateur. Info que l'on peut traiter avec PHP-->
Page 5
Laurent Lallias
Greco Php niv2
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="imageenplus" type="file" size="50" >
</p>
<p align="center">
<input type="submit" value="Ajoutez votre page">
</p>
</form>
<p align=center><a href="index.php">Retour à la page d'administration</a></p>
</body>
</html>
Créez ajout_page.php le script d'ajout d'enregistrement
ajout_page.php
<?php
/******************************** Variables d'environnement
$_FILES["image_plus "]["name"]; on récupère le nom
$_FILES["image_plus "]["size"]; on récupère la taille
$_FILES["image_plus "]["type"]; on récupère son type mime
$_FILES["image_plus "]["tmp_name"]; on récupère le nom temporaire
$_FILES["image_plus "]["error"]; on récupère le code erreur
********************************/
#on récupère le nom d'origine de l'image téléchargée
$image_plus_name=$_FILES["imageenplus"]["name"];
#on récupère le nom temporaire de l'image téléchargée
$image_plus_tmp=$_FILES["imageenplus"]["tmp_name"];
#on récupère les titres et textes
$titre=$_POST["titre"];
$texte1=$_POST["texte1"];
$texte2=$_POST["texte2"];
# concaténation afin de définir le chemin de stockage*/
# images/ est le chemin d'accès au dossier images
# $image_plus est le nom de la variable transmise par le formulaire
$namefile="images/" . $image_plus_name;
$namefilecopy="../".$namefile;
# on teste si le fichier image existe déjà sur le serveur on ne veut pas l'écraser
if(!file_exists($namefilecopy)){
# copie du fichier dans le dossier adéquat, avec le nom adéquat
# Rq la commande copy (source, dest)
Page 6
Laurent Lallias
Greco Php niv2
# copy() fait une copie du fichier. Elle renvoie 1 en cas de succès, autre chose sinon
if ($image_plus_tmp) copy($image_plus_tmp,$namefilecopy);
# Pour avoir le temps de voir le fichier temporaire dans le dossier tmp
# sleep(5);
/**********include du fichier de connexion*********/
include("connexions/commun.php");
/********** infos à ajouter dans la table **********/
$query = "INSERT INTO $table(titre,texte1,texte2,image)
VALUES('$titre','$texte1','$texte2','$namefile')";
/********** stockage dans la bdd **********/
$result = mysql_query($query);
/********** déconnection avec MySQL **********/
mysql_close($link);
}
else {
echo "Le fichier que vous cherchez à télécharger existe déjà ";
}
echo "
<br/>L'image uploadée s'appelle ".$_FILES["imageenplus"]["name"]."<br/>
- Sa taille est de : ".$_FILES["imageenplus"]["size"]." octets<br/>
- Son type est : ".$_FILES["imageenplus"]["type"]."<br/>";
echo "<p align=\"center\">vous venez d'ajouter une page à votre site <br/>";
echo "<a href=\"index.php\">Retour à la page d'administration</a></p>";
?>
Page 7
Laurent Lallias
Greco Php niv2
Quelques types MIME
Lors d'une transaction entre un serveur web et un navigateur internet, le serveur web
envoie en premier lieu le type MIME du fichier envoyé au navigateur, afin que ce
dernier puisse savoir de quelle manière afficher le document.
Un type MIME est constitué de la manière suivante :
Content-type: type_mime_principal/sous_type_mime
Une image GIF a par exemple le type MIME suivant :
Content-type: image/gif
Type MIME
Type de fichier
Extension associée
application/pdf
Fichiers Adobe Acrobat
pdf
image/gif
Images gif
gif
image/jpeg ou image/pjeg
Images Jpeg
jpg,jpeg,jpe
multipart/x-zip
Fichiers archive zip
zip
text/html
Fichiers HTML
htm,html
video/mpeg
Vidéos MPEG
mpeg,mpg,mpe
video/quicktime
Vidéos QuickTime
qt,mov
video/msvideo
Vidéos Microsoft Windows
avi
video/x-sgi-movie
Vidéos MoviePlayer
movie
Le traitement d'erreurs
$_FILES["xxx"]["error"]==Valeur;
Le code d'erreur associé au téléchargement de fichier. Introduit en PHP 4.2.0
UPLOAD_ERR_OK ou Valeur : 0.
Aucune erreur, le téléchargement est correct.
Exemple : $_FILES["imageenplus "]["error"]==0;
UPLOAD_ERR_INI_SIZE ou Valeur : 1.
Le fichier téléchargé excède la taille de upload_max_filesize, configurée dans
le php.ini.
UPLOAD_ERR_FORM_SIZE ou Valeur : 2.
Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée
dans le formulaire HTML.
UPLOAD_ERR_PARTIAL ou Valeur : 3.
Le fichier n'a été que partiellement téléchargé.
UPLOAD_ERR_NO_FILE ou Valeur : 4.
Aucun fichier n'a été téléchargé.
Page 8
Laurent Lallias
Greco Php niv2
Créez suppression.php
suppression.php
<html>
<head><title>suppression.php</title></head>
<body>
<?php
/**********include du fichier de connexion*********/
include("connexions/commun.php");
/*** On cherche l'enregistrement qui correspond à l'id ***/
$query = "SELECT * FROM $table where id=".$_GET["id"];
/*** envoi de la requête à la base ***/
$result = mysql_query($query);
/*** le résultat de la requete est stocké dans un tableau ***/
$row = mysql_fetch_row($result);
$image="../".$row[4];
echo "
<table width=\"100%\" border=\"0\" cellspacing=\"0\">
<tr>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td><img src=$image width=\"128\" height=\"96\"></td>
</tr>
<tr>
<td colspan=\"4\" align=\"center\">
<A href=\"conf_suppr.php?id=$row[0]&filename=$image\">
Confirmez la suppression de l'enregistrement</A>
</td>
</tr>
<tr>
<td colspan=\"4\" align=\"center\">
<A href=\"index.php\">Annuler - Retour à l'administration</A>
</td>
</tr>
<tr>
<td colspan=\"4\" align=\"center\">
<A href=\"modification.php?id=$row[0] \">Modifiez l'enregistrement</A>
Page 9
Laurent Lallias
Greco Php niv2
</td>
</tr>
</table>
";
/*** on ferme la connexion ***/
mysql_close($link);
?>
</body>
</html>
Créez conf_suppr.php
conf_suppr.php
<?
/**********include du fichier de connexion*********/
include("connexions/commun.php");
/*** On supprime l'enregistrement qui correspond à l'id ***/
$query = "DELETE FROM $table WHERE id=".$_GET["id"];
/*** On supprime le fichier qui correspond à l'image ***/
unlink($_GET["filename"]);
/*** envoi de la requête à la base ***/
$result = mysql_query($query);
/*** on ferme la connexion ***/
mysql_close($link);
echo "<p align=\"center\">Vous venez de détruire l'enregistrement ".$_GET["id"]."<br>";
echo "<a href=\"index.php\" >Retour à l'administration</A></p>";
?>
Créez modification.php le formulaire de modification
modification.php
<?php
/**********include du fichier de connexion*********/
Page 10
Laurent Lallias
Greco Php niv2
include("connexions/commun.php");
/*** On cherche l'enregistrement qui correspond à l'id ***/
$query = "SELECT * FROM $table where id=".$_GET["id"];
/*** envoi de la requête à la base ***/
$result = mysql_query($query);
/*** le résultat de la requete est stocké dans un tableau ***/
$row = mysql_fetch_row($result);
echo "
<h1 align=\"center\"> Page à modifier</h1>
<table width=\"100%\" border=\"1\" cellspacing=\"0\">
<tr>
<td>$row[1]</td>
<td>$row[2]</td>
<td>$row[3]</td>
<td><img src=../$row[4] width=128 height=96></td>
</tr>
</table>
<hr>
<h1 align=\"center\"> Modification</h1>
<form enctype=\"multipart/form-data\"
action=\"modif_page.php?id=$row[0]\" method=\"post\">
<p>Tapez ici votre titre</p>
<p>
<textarea name=\"titre\" cols=\"150\">$row[1]</textarea>
</p>
<p>Tapez ici votre texte1</p>
<p>
<textarea name=\"texte1\" cols=\"150\">$row[2]</textarea>
</p>
<p>Tapez ici votre texte2</p>
<p>
<textarea name=\"texte2\" cols=\"150\">$row[3]</textarea>
</p>
<p>Votre fichier image :
<input type=\"file\" name=\"monfichier\" >
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\">
<input type=\"submit\" value=\"Modif de la page\">
</p>
</form>
";
/*** on ferme la connexion ***/
mysql_close($link);
Page 11
Laurent Lallias
Greco Php niv2
echo "<a href=\"index.php\">Retour à la page d'administration</a></p>";
?>
Créez modif_page.php
modif_page.php
<?
/**********include du fichier de connexion*********/
include("connexions/commun.php ");
$id=$_GET["id"];
$titre=$_POST["titre"];
$texte1=$_POST["texte1"];
$texte2=$_POST["texte2"];
if ($_FILES["monfichier"]["name"])
{
/******* récupération du nom du fichier uploadé**********/
$nomfichier="images/" . $_FILES["monfichier"]["name"];
/******** copie du fichier dans le dossier adéquate*****/
$nomfichiercopy="../".$nomfichier;
copy($_FILES["monfichier"]["tmp_name"],$nomfichiercopy);
/********** infos à mettre à jour dans la table - l'image a été changée**********/
$query = "UPDATE $table SET
titre='$titre',texte1='$texte1',texte2='$texte2',image='$nomfichier' WHERE id='$id'";
}
ELSE
{
/********** infos à mettre à jour dans la table - l'image ne change pas**********/
$query = "UPDATE $table SET titre='$titre',texte1='$texte1',texte2='$texte2'
WHERE id='$id'";
}
/********** stockage dans la bdd **********/
$result = mysql_query($query);
/********** déconnection avec MySQL **********/
mysql_close($link);
echo "<p align=\"center\">vous venez de modifier la page ".$id." de votre site <br>";
echo "<a href=\"index.php\">Retour à la page d'administration</a></p>";
?>
Page 12
Laurent Lallias
Greco Php niv2
Protection
Fichier .htaccess du dossier admin
AuthName "Acces Restreint"
AuthType Basic
AuthUserFile 'c:\program files\easyPHP1-8\www\maroc\admin\connexions\.htpasswd'
<LIMIT GET POST>
Require valid-user
</LIMIT>
Fichier .htaccess du dossier connexions
<LIMIT GET POST>
deny from all
</LIMIT>
Fichier .htpasswd du dossier connexions
Laurent:lallias
Quelques remarques
AuthType Basic précise qu'il faut utiliser AuthUserFile pour l'authentification.
La commande AuthUserFile permet de définir l'emplacement du fichier contenant
les logins et les mots de passe des utilisateurs autorisés à accéder à une ressource
donnée.
require valid-user précise que l'on autorise uniquement les personnes identifiées.
La balise LIMIT possède en attribut la valeur GET (en majuscule) et/ou la valeur POST,
afin de définir le type de méthode du protocole HTTP auxquelles la restriction
s'applique
Page 13
Laurent Lallias
Greco Php niv2
LES COOKIES
Objectif :
Identifier de manière durable un client, un usager du site.
Les cookies sont donc des petits fichiers texte stockés sur la machine du client
permettant ainsi de le reconnaître.
Création de Cookies et php
Syntaxe de la fonction :
setcookie(name, value,expire,path,domaine)
name : nom donné à la variable cookie
value : information stockée dans le cookie
expire : temps unix pendant lequel sera actif le cookie (s'exprime en
secondes)
path : Le chemin indique le répertoire du site où le cookie possède une
validité. La valeur par défaut est la racine du site web.
"/" signifie que le cookie est valide sur tout le site.
"/cookies/" signifie que le cookie est valide sur le dossier cookies
domaine : permet de préciser à partir de quelle url on pourra manipuler
le cookie déposé sur la machine client.
".lallias.com" valide sur le domaine et sous domaines lallias.com
"www.lallias.com" valide uniquement sur le domaine lallias.com
(option par défaut)
<?
/* création de la variable cookie date_visiteur */
setcookie("date_visiteur",date("d/m/y"),time()+3600, "/ " );
/* création de la variable cookie langue précisant quelle est la langue du navigateur */
$lang=getenv("HTTP_ACCEPT_LANGUAGE");
setcookie("langue",$lang,time()+3600, "/ " );
//ou encore
//setcookie("langue", getenv("HTTP_ACCEPT_LANGUAGE"),time()+3600, "/ " );
?>
Page 14
Laurent Lallias
Greco Php niv2
Rq : la fonction setcookie doit être appelée en début de script avant toutes
instructions HTML.
Avec Internet Explorer :
•
Si le script générateur du cookie est stocké dans la racine du site visité, le
nom du cookie généré sur la machine du client contiendra le nom du
domaine visité.
Si un script du site www.lallias.com crée un cookie sur votre machine
celui ci s'appellera : nomutilsateur@lallias[1].txt
•
Si le script générateur est stocké dans un sous dossier du site, le nom du
cookie généré sur la machine du client contiendra le nom du dossier
Si un script du site www.lallias.com/dossier crée un cookie sur votre
machine celui ci s'appellera : [email protected]
sauf s'il a été précisé dans le paramètre path la valeur "/".
Chez certains hébergeurs le fait de stocker les scripts de traitement de cookies
dans des sous dossiers peut entrainer des disfonctionnements.
setcookie("date_visiteur",date("d/m/y"),time()+600,"/")
Les cookies sont stockés dans un sous dossier nommé cookies. Il y a un fichier par
cookie.
Avec FireFox :
Il n'y a qu'un seul fichier qui rassemble tous les cookies. Il s'appelle cookies.txt
et se trouve dans un sous-dossier de Application Data…
Sur Firefox, on peut visualiser le fichier des coolkies par :
Outils>Options>Vie Privée>Cookies
Page 15
Laurent Lallias
Greco Php niv2
Afficher le contenu d'un cookie
Les cookies sont stockés dans un tableau associatif nommé $ _COOKIE.
Deux possibilités nous sont offertes pour consulter l’ensemble des cookies :
<?php
/* On peut utiliser une boucle WHILE */
while($valeur=each($_COOKIE)) {
echo "$valeur[0] $valeur[1]<br>";
}
$ _COOKIE
?>
Ou
<?php
/* On peut utiliser un FOREACH */
foreach($_COOKIE as $cle=>$valeur) {
echo "$cle $valeur<br>";
}
?>
Pour afficher un cookie particulier on peut aussi utiliser la notation suivante :
echo $_COOKIE["nomducookie"];
Détruire un cookie
Le principe de destruction d’un cookie est très simple. C'est à la charge du
navigateur de supprimer un cookie dont la date est expirée.
Pour le détruire, il suffit donc de le redéfinir avec une date révolue.
setcookie("nomducookie")
ou encore
setcookie("nomducookie","", time() - 3600)
Ici, on récupère le tampon horaire auquel on retire une heure.
Attention : si lors de la création vous avez spécifiez /, il faut le remettre lors de
la destruction
Savoir si le navigateur client accepte les cookies
A partir d'un premier script (script1.php), vous envoyez un cookie au client et
vous redirigez le client vers un second script (script2.php). Dans ce second
Page 16
Laurent Lallias
Greco Php niv2
script, vous tentez de relire votre cookie. S'il existe, c'est que le navigateur du
client accepte les cookies.
Code de script1.php
<?php
setcookie("test", "1");
Header("Location: script2.php");
?>
Code de script2.php
<?php
if(isset($_COOKIE["test"]))
echo "Le client accepte les cookies :)";
else
echo "Le client n'accepte pas les cookies :(";
?>
Rappel : isset($test) est une fonction qui Détermine si une variable (ici $test)
est affectée
Exemple de gestion de cookie
en
http://www.lallias.com/cookies/cookie_form.htm
ou
http://www.cabare.org/formation/php/cookies/cookie_form.htm
Dans un premier temps nous allons créer un formulaire demandant son nom à
l'internaute se connectant à notre site.
<html><body>
<form action="cookie_ecriture.php" method="post">
Nom du client <input type = "text" name="nom" />
<input type = "submit" />
</form>
</body></html>
Page 17
Laurent Lallias
Greco Php niv2
Ce formulaire appelle un script nommé cookie_ecriture.php qui :
-
mémorise ce nom dans un cookie (internaute)
-
mémorise la date et l'heure de connexion dans un autre cookie (date)
<?php
$nom=$_POST["nom"];
/*création d'un cookie nommé "internaute" qui conserve le nom de l'internaute */
setcookie("internaute",$nom,time()+3600,"/");
/*création d'un cookie nommé date qui conserve la date de connexion*/
setcookie("date",date( "d/m/y à H:i:s"),time()+3600,"/");
echo "<a href=\"cookie_lecture.php\">Lire le cookie</a>";
?>
Sur ce script existe un lien vers un fichier nommé cookie_lecture.php qui
affiche à l'écran l'ensemble des cookies
<?php
echo "Bonjour,<br> ". $_COOKIE["internaute"];
echo " comment allez vous depuis le ". $_COOKIE["date"];
echo ". <br>Au revoir ". $_COOKIE["internaute"];
echo ". <br><a href=\"cookie_suppression.php\">Effacer les cookies</A>";
?>
Sur ce script existe un lien vers un fichier nommé cookie_suppression.php qui
efface les cookies :
<?php
/*Suppression d'un cookie nommé internaute qui conserve le nom*/
setcookie("internaute","",time()-3600,"/");
/*Suppression d'un cookie nommé date qui conserve la date de connexion*/
setcookie("date","",time()-3600,"/");
echo "<br><a href=\" cookie_lecture.php\">Lire un cookie</A>";
echo "<br><a href=\" cookie_form.htm \">Ecrire un nouveau cookie</A>";
?>
Page 18
Laurent Lallias
Greco Php niv2
SESSIONS (PHP 4)
Principe
•
•
•
Lorsque l'on démarre une session php, le serveur lui affecte un identifiant de session
nommé PHPSESSID (abréviation : SID).
A partir de ce moment toutes les variables de session que vous allez créer dans vos
scripts seront :
Ou stockées sur le serveur dans un fichier ressemblant à un cookie (mais coté
serveur!!). C'est l'option par défaut.
Ou stockées dans une table de base de données que vous aurez créée à cet effet.
Ou stockées dans les mémoires des processeurs du serveur.
Les variables enregistrées comme variables de session sont utilisables dans d'autres
scripts. Les sessions vont donc servir au passage de paramètres entre scripts.
Exemple 1 : une gestion de client (hyper simplifiée)
On veut demander par le biais d'un formulaire html :
•
le nom d'un client
•
le choix d'un type de matériel
Le nom et le produit seront transmis à un script php (ident.php) qui affichera
ces informations et les définira comme variables de session.
http://www.lallias.com/session_client_niv1/index.htm
<html><body>
<form action="ident.php" method="post">
Nom du client <input type="text" name="client" /><br/>
Choix du produit <select name="produit">
<option >Imprimante</option>
<option >Micro ordinateur</option>
<option >Souris</option>
<option >Tapis</option>
</select>
<input type="submit" value="Commander" />
</form>
</body></html>
le formulaire appelle un script nommé ident.php
Page 19
Laurent Lallias
Greco Php niv2
Remarques
Une session est activée par une instruction session_start(). Attention l'instruction
activant une session doit être la première du script.
Création d'une session : session_start( )
Permet de créer une session ou de continuer la session courante.
Création d'une variable de session : $_SESSION["nomdelavariable"]
Enregistre une variable avec le nom nomdelavariable dans la session
courante.
Suppression du cookie de session : session_destroy( )
Détruit toutes les données associées à la session courante.
Connaître le nom du fichier de session : session_id( )
Le script (ident.php)
<?php
/*on démarre une session*/
session_start();
echo "Bonjour, une session a été créée.
Permet de créer une session ou
continue la session courante.
Ici va servir à créer une sesssion
<br/>Elle se nomme ".session_id().
" <br/>Cet identificateur de session sera valable tant que vous n'aurez
pas quitté notre site et votre navigateur<br/>";
echo "<hr>";
/*on récupére la date et l'heure dans une variable date*/
$date=date("d/m/y à H:i:s");
/*on affecte la variable pommade */
/*la portée de cette variable ne dépassera pas ce script*/
$pommade="vous êtes l'un de nos meilleurs clients ";
/*on crée une variable de session nommée client*/
$_SESSION["client"]=$_POST["client"];
/*on crée une variable de session nommée produit*/
$_SESSION["produit"]=$_POST["produit"];
/*on crée une variable de session nommée date*/
$_SESSION["date"]=$date;
echo "Bienvenue ".$_POST["client"]." $pommade <br/>";
echo "Nous sommes le ".$date ;
echo " et vous désirez commander le produit suivant : ".$_POST["produit"]." <br/>";
Page 20
Laurent Lallias
Greco Php niv2
/*appel d'un autre script dans lequel
on pourra utiliser les variables client, produit et date mais pas pommade*/
echo "<a href=suite.php> Suite</a>";
?>
Le script suite.php
Les variables de session sont accessibles on peut donc continuer à dialoguer
avec l'internaute client.
<?php
session_start();
Ici session_start va permettre de continuer à utiliser les
variables de session existantes
echo "vous utilisez le fichier de session nommé :".session_id();
/*on peut utiliser la variable de session $client*/
echo "<br />Vous êtes : ".$_SESSION["client"]." <br/>";
/*on ne peut pas utiliser la variable $pommade*/
echo " $pommade <br/>";
/*on peut utiliser la variable de session $date*/
echo "Vous vous êtes connectés le : ".$_SESSION["date"]." <br/>";
/*on peut utiliser la variable de session $produit*/
echo " et vous nous avez commandé le produit
suivant : ".$_SESSION["produit"]." <br/>";
echo "Nous allons mettre fin à la session... à bientôt <br/>";
session_destroy();
/*appel d'un autre script dans lequel on ne pourra utiliser aucune variable*/
echo "<a href=suite_et_fin.php> Suite et fin</a>";
?>
Suppression du
cookie
contenant les
variables de
session
Le script suite_et_fin.php
Les variables de session ont été détruites, elles ne sont plus accessibles.
<?php
session_start();
/*aucune des variables n'est accessible*/
echo "Vous êtes : ".$_SESSION["client"]." <br/>";
echo "Produit commandé : ".$_SESSION["produit"]." <br/>";
echo "A la date du : ".$_SESSION["date"]." <br/>";
Page 21
Laurent Lallias
Greco Php niv2
?>
Attention :
Si vous ne fermez pas le navigateur et que vous vous reconnectez au site, le
précédent cookie est réactivé.
Page 22
Laurent Lallias
Greco Php niv2
CONNECTION /DECONNECTION
Arborescence
Fichier des paramètres de connection
Fichier s'affichant lorsque l'utilisateur s'est identifié. La
vérification se fait par le test de la variable de session
créée et initialisée lors de la connection (index.php)
Permet la saisie du login, du mot de passe et vérifie leur validité
dans une table nommée admin. Si tout se passe bien on
accède au fichier réussite sinon on reste sur index.php
Base de données et table
Le fichier connect.php
<?php
$hostname = "localhost";
$database = "login_logout";
$username = "root";
$password = "";
$NumId = mysql_connect($hostname, $username, $password) or die("Impossible");
mysql_select_db($database, $NumId);
?>
Page 23
Laurent Lallias
Greco Php niv2
Le fichier index.php
<?php
if (!isset($_SESSION)) {
session_start();
}
if (isset($_POST['login']))
{
$login=$_POST['login'];
$password=$_POST['password'];
$redirectSucces = "pages/reussite.php";
$redirectEchec = "index.php";
require_once('pages/connections/connect.php');
$query="SELECT login, mdp FROM admin WHERE login='$login' AND mdp='$password'";
$Login = mysql_query($query, $NumId) or die("impossible");
$User = mysql_num_rows($Login);
if ($User)
{
$_SESSION['Username'] = $login;
header("Location: $redirectSucces" );
}
else
{ header("Location: $redirectEchec" );
}
}
?>
<html>
<body>
<form action="index.php" method="post">
Utilisateur : <input name="login" type="text" /><br/>
Mot de passe : <input name="password" type="text" /><br/>
<input type="submit" name="Submit" value="Envoyer" />
</form>
</body>
</html>
Page 24
Laurent Lallias
Greco Php niv2
Le fichier reussite.php
<?php
if (!isset($_SESSION)) {
session_start();
}
/********************* Restriction d'accès **********************/
/* Définition de la page vers laquelle on sera envoyé si on tente d'ouvrir cette page
sans être loggé*/
$restrictGoTo = "../index.php";
/* on teste l'existence d'une variable de session*/
if (!isset($_SESSION['Username'])){
/* Si la variable n'existe pas, on redirige vers la page définie dans $restrictGoTo */
header("Location: ". $restrictGoTo);
exit;
}
/********************* Déconnexion **********************/
if (isset($_GET['Logout'])and $_GET['Logout']=="true"){
/*session_destroy()*/
unset($_SESSION['Username']);
header("Location:../index.php ");
}
?>
<html>
<body>
REUSSITE<br/>
<a href="<?php echo $_SERVER['PHP_SELF']."?Logout=true" ?>">Déconnecter</a>
</body>
</html>
Page 25
Laurent Lallias
Greco Php niv2
Header
Si vous voulez rediriger le visiteur vers une autre page
Syntaxe :
header('Location: mapage.php');
mapage.php est l'adresse de la page vers laquelle vous voulez rediriger (qui
peut aussi être de la forme mapage.php?param1=val1&m2=val2)
Important
Cette fonction doit être utilisée avant d'envoyer des données html, sous peine
de produire une erreur.
unset
Si vous voulez détruire une variable
Syntaxe :
unset(nom_de_la variable)
exemple avec une variable de session : unset($_SESSION['Username'])
$_SERVER["PHP_SELF"]
Cette variable très utile vous permet de récupérer le nom du fichier courant.
Syntaxe :
$_SERVER["PHP_SELF"]
Exemple :
<a href="<?php echo $_SERVER['PHP_SELF']."? Logout=true" ?>">Déconnecter</a>
Require_once
Equivalent à include mais vous êtes assurés que ce code ne sera ajouté
qu'une seule fois
Syntaxe :
Require_once("nomfichier.ext") ;
Page 26
Laurent Lallias
Greco Php niv2
REDIRECTION SIMPLE
Fichier .htaccess
#Dans le cas ci dessous le lien est fait vers formation-conseil.php et en fait on
appelle test.php
#Pour indiquer à apache qu'il doit utiliser le module RewriteEngine :
RewriteEngine on
#RewriteRule : Déclare une règle de réécriture.
#RewriteRule URL_affichée URL_réelle
RewriteRule ^formation-conseil\.php$ test.php
#Suivant les hébergeurs on doit ou pas préciser le chemin absolu
#RewriteRule ^formation-conseil\.php$ /Rewriting-Url-niv1/test.html
#ou
#RewriteRule ^formation-conseil\.php$ test.html
#Remarque
# ^ : début de la chaîne
# $ : fin de la chaîne
# \ : caractère d’échappement
#Pour que cela fonctionne il faut que :
#Le module mod_rewrite soit actif :
#(fichier de configuration d'Apache (httpd.conf) doit contenir cette ligne
#LoadModule rewrite_module libexec/mod_rewrite.so
#ou
#LoadModule rewrite_module modules/mod_rewrite.so (easyphp)
#ainsi que celle-ci : AddModule mod_rewrite.c
Page 27
Laurent Lallias
Greco Php niv2
Fichier index.php
<?php
echo " <a href=\"formation-conseil.php\">
Appel du fichier test.php mais en le faisant passer pour le fichier formationconseil.php
</a>"; ?>
Fichier test.php
<html>
<head><title>Test</title></head>
<body>
<?php
echo "OK ! Vous êtes dans le fichier test.php";
?>
</body>
</html>
Page 28
Laurent Lallias
Greco Php niv2
REDIRECTION ET PASSAGE DE
PARAMETRES
Fichier .htaccess
RewriteEngine on
RewriteRule ^formation-photoshop\.php$
test.php?id=1&rubrique=2&article=5
Fichier index.php
<?php
echo "<a href=\"formation-photoshop.php\">Formation Photoshop</a>";
echo "<br/>On appelle test.php?id=1&rubrique=2&article=5";
?>
Fichier test.php
<html><head><title>Test</title></head><body>
<?php
echo "Le fichier appelé s'appelle en fait article.php. ";
echo "On lui a passé 3 arguments : un id, un numéro de rubrique et un numéro
d'article<br/>";
echo "- Le id vaut ".$_GET['id']."<br/>";
echo "- La rubrique vaut ".$_GET['rubrique']."<br/>";
echo "- L'article vaut ".$_GET['article']."<br/>";
?>
</body></html>
Page 29
Laurent Lallias
Greco Php niv2
REDIRECTION ET PASSAGE DE
PARAMETRES
Fichier .htaccess
RewriteEngine on
RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ test.php?id=$1&num=$2 [L]
Fichier index.php
<?php
echo "<a href=\"article-1-1.html\">Article 1 </a><br/>";
echo "<a href=\"article-1-2.html\">Article 1 bis </a><br/>";
echo "<a href=\"article-2-1.html\">Article 2 </a><br/>";
echo "<a href=\"article-2-2.html\">Article 2 bis </a><br/>";
?>
Fichier test.php
<html><head><title>Test</title></head><body>
<?php
if (!isset($_GET['id']) OR !isset($_GET['num'])) { echo "Pas de Valeur";}
else {
echo "id vaut ".$_GET['id'];
echo "et num vaut ".$_GET['num'];
} ?>
</body></html>
Page 30
Laurent Lallias
Greco Php niv2
REDIRECTION ET PASSAGE DE
PARAMETRES
Fichier .htaccess
RewriteEngine on
RewriteRule ^article-(.+)-(.+)\.html$ test.php?titre=$1&soustitre=$2 [L]
Fichier index.php
<?php
echo"<a href=\"article-Photoshop-Masque_de_fusion.html\">Article
Photoshop et Masque de fusion </a><br/>"; ?>
Fichier test.php
<html> <head>
<title>Test<?php echo $_GET['titre']." ".$_GET['soustitre']; ?></title>
</head>
<body>
<?php
if (!isset($_GET['titre']) OR !isset($_GET['soustitre'])) { echo "Pas de Valeur";}
else
{
echo "Le titre est ".$_GET['titre']." et sous titre est ".$_GET['soustitre'];
}
?>
</body>
</html>
Page 31
Laurent Lallias
Greco Php niv2
Quelques expressions régulières et paramètres à connaître :
.
N’importe quel caractère
*
Zéro ou N occurrence(s) de l’expression qui précède (N>0)
.*
Une suite de 0 à l'infini caractère(s)
+
Une ou N occurrence(s) de l’expression qui précède (N > 1)
[abcd]
n’importe quel caractère de cette liste
[a-z]+
Une ou plusieurs lettres
[0-9]+
Un ou plusieurs chiffres
[^abcd]
blanc|noir
tout caractère non compris dans la liste (tout sauf a, b, c ou d)
alternative, soit « blanc », soit « noir »
^
ancre de début de ligne
$
ancre de fin de ligne
\
[L]
( )
permet d’échapper tout caractère qui suit et lui ôter sa signification
particulière, par exemple \.
Indique au serveur Apache d'arrêter ces recherches lorsqu'il a trouvé une
correspondance
Permet de capturer ce qui se trouve à l'intérieur afin de le réutiliser dans la
suite de la règle.
$1 correspond au premier couple de parenthèses
$2 correspond au deuxième couple de parenthèses
Page 32
Laurent Lallias
Greco Php niv2
JOINTURE
Base de données et tables
•
Créez une base de données nommée biblio
•
Créez une première table nommée auteurs : Avec id clé primaire
•
Créez une deuxième table nommée livres : Avec id clé primaire
•
Insérez des enregistrements dans les tables
Fichier de connexion jointure.php du dossier Connections
<?php
$hostname_jointure = "localhost";
$database_jointure = "biblio";
$username_jointure = "root";
$password_jointure = "";
$table1="auteurs";
$table2="livres";
/********** connection au serveur **********/
$jointure = mysql_connect($hostname_jointure,
$username_jointure, $password_jointure)
or die("Erreur Connexion au serveur");
/********** connection à la base de données **********/
$select=@mysql_select_db($database_jointure,$jointure)
or die("erreur connection base de données"); ?>
Page 33
Laurent Lallias
Greco Php niv2
Insertion d'un auteur dans la table. inscription_auteur.php
<?php
require_once('Connections/jointure.php');
if(isset($_GET["message"])) echo $_GET["message"];
if (!isset($_POST["nom"])){
echo "<br/>Inscription d'un auteur <br/>";
?>
<form method="post" action="inscription_auteur.php">
<p>Nom de l'auteur
<input name="nom" type="text" />
</p>
<p>Prénom de l'auteur
<input name="prenom" type="text" />
</p>
<p>
<input type="submit" name="Submit" value="Ajouter">
</p>
</form>
<?
} else {
$message="Bonjour, ";
if (empty($_POST['nom']) OR empty($_POST['prenom']))
{
$message.="Prob de nom ou de prénom";
}
else
{
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$query_auteur="INSERT INTO $table1(nom,prenom) VALUES ('$nom','$prenom')";
$resultat=mysql_query($query_auteur);
if ($resultat) $message.="Auteur inscrit "; else $message.="Problème d'inscription ";
}
header("location:inscription_auteur.php?message=$message");
}
?>
Insertion d'un livre dans la table. inscription_livre.php
<?php
require_once('Connections/jointure.php');
$query_auteur = "SELECT id, nom, prenom FROM $table1";
Page 34
Laurent Lallias
Greco Php niv2
$auteur = mysql_query($query_auteur) or die(mysql_error());
$totalRows_auteur = mysql_num_rows($auteur);
if(isset($_GET["message"])) echo $_GET["message"];
if (!isset($_POST["nom"])){
echo "<br/>Inscription d'un ouvrage <br/>";
?>
<form method="post" action="inscription_livre.php">
<p>Nom du livre <input name="nom" type="text"> </p>
<p>Auteur du livre <select name="auteur">
<?php
while ($row_auteur = mysql_fetch_assoc($auteur))
{ ?>
<option value="<?php echo $row_auteur['id'];?>">
<?php echo $row_auteur['nom']; ?>
</option>
<?php
} ;?>
</select>
<p><input type="submit" name="Submit" value="Ajouter"></p>
</form>
<? } else {
$message="Bonjour, ";
if (empty($_POST['nom']))
{
$message.="Prob de nom ";
}
else
{
$nom=$_POST['nom'];
$idauteur=$_POST['auteur'];
$query_livre="INSERT INTO $table2(nom,idauteur) VALUES ('$nom','$idauteur')";
$resultat=mysql_query($query_livre);
if ($resultat) $message.="Livre inscrit "; else $message.="Problème d'inscription ";
}
header("location:inscription_livre.php?message=$message");
}?>
Affichage avec jointure. affiche.php
<?
require_once('Connections/jointure.php');
Page 35
Laurent Lallias
Greco Php niv2
$query="SELECT livres.nom, auteurs.nom, auteurs.prenom
FROM livres, auteurs
WHERE auteurs.id=livres.idauteur";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo "
<b>$row[0]</b> $row[1] $row[2]<br>
";
}
?>
Recherche
<?
require_once('Connections/jointure.php');
if(!empty($_POST["nomauteur"]))
{
$nomauteur=$_POST["nomauteur"];
$query="SELECT livres.nom, auteurs.nom, auteurs.prenom
FROM livres, auteurs
WHERE auteurs.id=livres.idauteur AND auteurs.nom LIKE '%$nomauteur%'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo "<b>$row[0]</b> $row[1] $row[2]<br>";
}
}
?>
<form method="post" action="recherche.php">
<p>Nom de l'auteur <input name="nomauteur" type="text" /> </p>
<p> <input type="submit" name="Submit" value="Recherche"> </p>
</form>
Page 36
Laurent Lallias
Greco Php niv2
Page 37
Laurent Lallias
Greco Php niv2
INITIATION AUX CLASSES - LA POO
Classe Propriété et Méthode
Déclaration de la classe
class nom_de_la_classe
{
}
Définition de la classe - Les propriétés
Les propriétés correspondent à des variables dont la visibilité s'étend sur
l'ensemble du code qui compose la classe. On appelle cela aussi variables
membres. Elles se définissent en début de classe.
class nomdelaclasse
{
var $nom_de_la_variable_membre;// en php4
public $nom_de_la_variable_membre;// en php5
}
Exemple
class compactdisc
// déclaration de la classe compactdisc
{
var $titrecd; //public $titrecd;
// déclaration d’une variable membre
var $date;
// déclaration d’une variable membre
//public $date;
}
Instanciation de classe
En programmation orientée classe, l'instanciation est la création d'un objet à
partir d'une classe. Revient à créer une variable
Pour déclarer l'instance d'une classe on utilise le mot clé : new
$nom_de_la_nouvelle_variable =new nom_de_la_classe();
Les parenthèses sont optionnelles. Elles ne
seront utilisées que lorsqu'il y aura des
paramètres à passer
Exemple : la variable $cd est une instance de la classe compactdisc
$cd =new compactdisc();
Pour invoquer une propriété de la classe lorsque l’on est en dehors de la
classe (pour affecter une variable membre) on utilise un accesseur ->
$nom_de_l’instance->nom_de_la_variable_membre…
Vocabulaire
On dit que $cd est un objet de type "compactdisc".
On dit que $cd est une instance de la classe "compactdisc".
"variable membre" et "propriété" sont synonymes.
Page 38
Laurent Lallias
Greco Php niv2
Exemple 1 : Affectation des variables membres réalisée dans la classe
<?php
class exemple1
// déclaration de la classe exemple1
{
var $titrecd="Ms Office"; //public $titrecd; déclaration et affectation d’une variable membre
var $date="02/01/2003"; //public $date; déclaration et affectation d’une variable membre
}
/* instanciation de la classe exemple1 */
$cd =new exemple1;
echo "Le Cd de $cd->titrecd a été acheté le $cd->date ";
?>
Exemple 2 : Affectation des variables membres réalisée hors de la classe
<?php
class exemple2
// déclaration de la classe exemple2
{
var $titrecd; //public $titrecd;
déclaration d’une variable membre
var $date;
déclaration d’une variable membre
//public $date;
}
/* instanciation de la classe exemple2 */
$cd =new exemple2;
$cd->titrecd="Open Office"; // affectation de la propriété (de la variable membre) titrecd
$cd->date="01/01/2009";
// affectation de la propriété (de la variable membre) date
echo "Le Cd de $cd->titrecd a été acheté le $cd->date ";
?>
Exemple complet : soit le formulaire permettant la saisie du titre et de la date
d'achat cd_niveau1.html
<html><body>
<form method="post" action="cd_niveau1.php">
Titre du cd : <input type="text" name="titre"/><br/>
Date d'achat : <input type="text" name="date_achat"/>
<input type="submit"></form>
</body></html>
Script php cd_niveau1.php
<?php
class compactdisc
// déclaration de la classe compactdisc
{
var $titrecd; //public…
// déclaration d'une variable membre, d'une propriété
var $date;
// déclaration d'une variable membre, d'une propriété
//public…
}
/* instanciation de la classe compactdisc */
$cd =new compactdisc();
/* $_POST["titre"] est une variable renseignée par le biais du formulaire */
Page 39
Laurent Lallias
Greco Php niv2
$cd->titrecd=$_POST["titre"];
/* $_POST["datacha"] est une variable renseignée par le biais du formulaire */
$cd->date=$_POST["date_achat "];
echo "Le Cd de $cd->titrecd a été acheté le $cd->date ";
?>
Déclaration de classe - Les méthodes (fonctions membres)
On les appelle aussi fonctions membres. Il s'agit de fonctions qui ont pour but
de réaliser un traitement et peuvent par conséquent utiliser les variables
membres de la classe.
Dans une fonction membre, le mot clé $this désigne la classe courante. Pour
invoquer une propriété de la classe ou une méthode de la classe on utilise un
accesseur ->
Pour une propriété
$this->nom_de_la_variable_membre
Pour une méthode
$nom_de_la_nouvelle_variable->nom_de_la_fonction_membre()
Exemple 1 : la fonction membre affiche les variables affectées localement
<?php
class exemple1
// déclaration de la classe exemple1
{
var $titrecd="Adobe"; //public $titrecd; déclaration et affectation d’une variable membre
var $date="12/01/2008"; //public $date; déclaration et affectation d’une variable membre
function affiche()
{
echo $this->titrecd."<br/>";
echo $this->date."<br/>";
}
}
/* instanciation de la classe exemple1 */
$cd =new exemple1;
$cd->affiche();
?>
Exemple 2 : Affectation des variables membres réalisée hors de la classe.
Appel de la fonction membre sans passage de paramètres.
<?php
class exemple2
// déclaration de la classe exemple2
{
var $titrecd; //public $titrecd;
déclaration d’une variable membre
var $date;
déclaration d’une variable membre
//public $date;
function affiche()
{
echo $this->titrecd."<br/>";
Page 40
Laurent Lallias
Greco Php niv2
echo $this->date."<br/>";
}
}
/* instanciation de la classe exemple2 */
$cd =new exemple2;
$cd->titrecd="Open Office"; // affectation de la propriété (de la variable membre) titrecd
$cd->date="01/01/2009";
// affectation de la propriété (de la variable membre) date
$cd->affiche();
?>
Exemple 3 : Appel de la fonction membre avec passage de paramètres.
<?php
class exemple3
// déclaration de la classe exemple3
{
var $titrecd; //public $titrecd;
déclaration d’une variable membre
var $date;
déclaration d’une variable membre
//public $date;
function affiche($a,$b)
{
echo $this->titrecd=$a."<br/>";
echo $this->date=$b."<br/>";
}
}
/* instanciation de la classe exemple3 */
$cd =new exemple3;
$cd->affiche("Open Office","01/01/09");
?>
Exemple : cd_niveau2.html
<html><body>
<form method="post" action="cd_niveau2.php">
Titre du cd : <input type="text" name="titre"/><br/>
Date d'achat : <input type="text" name="date_achat"/>
<input type="submit"></form>
</body></html>
cd_niveau2.php
<?php
class compactdisc
// déclaration de la classe compactdisc
{
var $titrecd; //public…
// déclaration d'une variable membre (propriété)
var $date;
// déclaration d'une variable membre (propriété)
//public…
Affichage et affectation
de la variable membre
/* déclaration de la méthode affichetitre */
function affichetitre($titr,$datach){
echo "Titre du cd : ".$this->titrecd=$titr;
echo "<br/>" ;
Appel de
membre
la
fonction
$this-> affichedate($datach);
Page 41
Laurent Lallias
Greco Php niv2
}
Affichage et affectation
de la variable membre
/* déclaration de la méthode */
function affichedate($dat){
echo "Date d'achat : ".$this->date=$dat;
echo "<br/>" ;
}
}
/* instanciation de la classe compactdisc */
$cd =new compactdisc;
/* appel de la fonction membre (méthode) avec paramètres */
$cd->affichetitre($_POST["titre"],$_POST["date_achat"]);
?>
Le constructeur de classe
Le constructeur est en fait une fonction membre :
En php4 : qui porte impérativement le même nom que la classe
En php5 : qui s'appelle __construct() Attention avec 2 _
Cette fonction est appelée automatiquement lors de la création d'un objet
(lors de l'instanciation de la classe).
C'est donc le moment privilégié pour réaliser les initialisations que l'on désire.
Le constructeur permet d'initialiser les variables membres et d'effectuer divers
traitements initiaux.
Exemple : cd_niveau3.html
<html><body>
<form method="post" action="cd_niveau3.php">
Titre du cd :
<input type="text" name="titre"/><br/>
Date d'achat :
<input type="text" name="date_achat"/>
<input type="submit"/></form>
</body></html>
cd_niveau3.php
<?php
class compactdisc
// déclaration de la classe compactdisc
{
var $titrecd; //public…
// déclaration d'une variable membre
var $date;
// déclaration d'une variable membre
//public…
/* constructeur de classe ici reçoit 2 paramètres */
function compactdisc($titr,$datach){
// en php5 : function __construct($titr,$datach){
if (empty($titr))
{
echo "Titre du cd : ".$this->titrecd="Aucun titre tapé";
echo "<br/>" ;
Page 42
Laurent Lallias
Greco Php niv2
Affichage et affectation
de la variable membre
}
else {
echo "Titre du cd : ".$this->titrecd=$titr;
echo "<br/>" ;
}
if (empty($datach))
{
echo "Date d'achat : ".$this->date="Aucune date tapée";
echo "<br/>" ;
}
else {
echo "Date d'achat : ".$this->date=$datach;
}
}
}
/* instanciation avec passage de 2 paramètres */
$cd =new compactdisc($_POST["titre"],$_POST["date_achat"]);
?>
Remarques
Il ne peut exister qu'un seul constructeur par classe.
Il est conseillé de placer chaque classe dans un fichier portant le nom de
cette classe (ex: compactdisc.class.php) et d'utiliser des include() ou des
require().
<?php
include("compactdisc.class.php");
/* instanciation avec passage de 2 paramètres */
$cd =new compactdisc($_POST["titre"],$_POST["datacha"]);
?>
L'héritage
L'héritage permet de réutiliser du code déjà existant pour l'adapter à ses
besoins. En d'autres termes, il permet, à partir d'une classe déjà existante, d'en
créer une nouvelle qui reprendra ses caractéristiques ce qui nous permettra
de les adapter à d'autres besoins sans modifier la classe de base.
Syntaxe
class nouvelle_classe_heritiere extends classe_dont_on_herite {
.
}
Le mot clé "parent" permet quant à lui d'accéder à partir d'une classe aux
fonctions membres de la classe de base ainsi qu'aux variables membres.
parent::nom_de_la_fonction_membre();
parent::$this->nom_de_la variable_membre;
L'opérateur :: est nommé ORP (Opérateur de Résolution de Portée).
Exemple :
Page 43
Laurent Lallias
Greco Php niv2
<?php
class exemple1
{
public $titre="Ceci est le titre de la classe parent";
public $prix;
public $nbre;
public $totalht;
public $taux_tva;
public $tva;
public $totalttc;
function cout($p,$c)
{
$this->prix=$p;
$this->nbre=$c;
$this->totalht=$this->prix*$this->nbre;
$this->tva=$this->totalht*$this->taux_tva;
$this->totalttc=$this->totalht+$this->tva;
echo "HT : ".$this->totalht."<br/>";
echo "Taux TVA : ".$this->taux_tva."<br/>";
echo "TVA : ".$this->tva."<br/>";
echo "TTC : ".$this->totalttc."<br/>";
}
}
class fils extends exemple1
On demande l'affichage de la variable
membre titre (définie dans la classe
parent exemple1)
{
function fils()
{
echo parent::$this->titre."<br/>";
On affecte la variable membre taux_tva
(définie dans la classe parent exemple1)
parent::$this->taux_tva="0.10";
parent::cout(10,12);
}
}
$enfant=new fils;
On appelle la fonction membre cout
(définie dans la classe parent exemple1)
?>
Exemple 2
Ce script correspond à la classe compactdisc.
compactdisc.class.php dans le dossier heritage
Fichier
nommé
<?php
class compactdisc
// déclaration de la classe compactdisc
{
var $titrecd;
// en php5 public $titrecd; déclaration d'une variable membre
var $date;
// en php5 public $date; déclaration d'une variable membre
function compactdisc($titr,$datach){ // en php5 function __construct($titr,$datach) {
Page 44
Laurent Lallias
Greco Php niv2
echo "Titre du cd : ".$this->titrecd=$titr;
echo "<br/>" ;
echo "Date d'achat : ".$this->date=$datach;
echo "<br/>" ;
}
}
?>
Ce script correspond à la classe cdaudio (héritière de la classe compactdisc).
Fichier nommé cdaudio.class.php dans le dossier heritage
<?php
class cdaudio extends compactdisc {
var $artiste ;//en php5 public $artiste;
/* constructeur de la classe cdaudio */
function cdaudio($titre,$datachat,$art) { // en php5 function
__construct($titre,$datachat,$art) {
echo "<br/>Le nom de l'artiste est : ".$this->artiste=$art;
echo "<br/>" ;
/* appel du constructeur de classe compactdisc avec passage de paramètres */
/* ce constructeur appartient à la classe de base compactdisc qui est le parent */
/* de la classe cdaudio */
parent::compactdisc($titre,$datachat); //en php5 parent::__construct
}
}
?>
Ce script correspond à la classe dvd (héritière de la classe compactdisc).
Fichier nommé dvd.class.php dans le dossier heritage
<?php
class dvd extends compactdisc {
var $réalisateur; //public…
var $acteur_princ; //public…
var $actrice_princ; //public…
/* constructeur de la classe dvd */
function dvd($titre,$datachat,$act1,$act2) {
echo "<br/>L'acteur principal est : ".$this->acteur_princ=$act1;
echo "<br/>L'actrice principale est : ".$this->actrice_princ=$act2;
echo "<br/>" ;
/* appel du constructeur de classe compactdisc avec passage de paramètres */
/* ce constructeur appartient à la classe de base compactdisc qui est le parent */
/* de la classe dvd */
parent::compactdisc($titre,$datachat); //en php5 parent::__construct
}
}
?>
Fichier nommé index.php dans le dossier heritage
Page 45
Laurent Lallias
Greco Php niv2
<?php
include("compactdisc.class.php");
include("cdaudio.class.php");
include("dvd.class.php");
if(!empty ($_POST["titre"])){$titre=$_POST["titre"];}else { $titre="No title";}
if(!empty ($_POST["date_achat"])){$date_achat=$_POST["date_achat"];}else {
$date_achat="No date";}
if(!empty ($_POST["artiste"])){$artiste=$_POST["artiste"];}else { $artiste="No artiste";}
if(!empty ($_POST["acteur"])){$acteur=$_POST["acteur"];}else { $acteur="No acteur";}
if(!empty ($_POST["actrice"])){$actrice=$_POST["actrice"];}else { $actrice="No actrice";}
if(isset($_POST["typ"])){$typ=$_POST["typ"];}else { $typ="autre";}
switch ($typ){
case "cdaudio" :
echo "Il s'agit d'un cd audio";$cd =new cdaudio($titre,$date_achat,$artiste);
break;
case "dvd" :
echo "Il s'agit d'un dvd";$cd =new dvd($titre,$date_achat,$acteur,$actrice);
break;
default :
echo"
<form method=\"post\" action=\"index.php\">
Titre du cd :<br/>
<input type=\"text\" name=\"titre\" value=\"$titre\"/><br/>
Date d'achat : <br/>
<input type=\"text\" name=\"date_achat\" value=\"$date_achat\"/><br/>
Type de CD<br/>
<input type=\"radio\" name=\"typ\" value=\"dvd\" /> DVD
<input type=\"radio\" name=\"typ\" value=\"cdaudio\"/> Cd audio<br/> <br/>
Nom artiste : Uniquement si CD audio<br/>
<input type=\"text\" name=\"artiste\" value=\"$artiste\"/><br/>
Nom acteur: Uniquement si DVD<br/>
<input type=\"text\" name=\"acteur\" value=\"$acteur\"/><br/>
Nom actrice: Uniquement si DVD<br/>
<input type=\"text\" name=\"actrice\" value=\"$actrice\"/><br/>
<input type=\"submit\"/></form>
";
break;}?>
Page 46
Laurent Lallias
Greco Php niv2
Classe et connexion à une bdd
Créons la bdd mabase et la table suivante :
CREATE TABLE `articles` (
`id` TINYINT NOT NULL AUTO_INCREMENT ,
`titre` VARCHAR( 255 ) NOT NULL ,
`contenu` VARCHAR( 255 ) NOT NULL ,
`auteur` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
Fichier global.inc.php
<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "mabase";
$table = "articles";
$connexion = @mysql_connect($db_host, $db_user, $db_pass) or die ("Erreur de
connexion");
$db = mysql_select_db($db_name, $connexion) or die("Erreur de connexion");
Class article
{
var $id;
// En php5 public à la place de var
var $titre;
// En php5 public à la place de var
var $contenu;
// En php5 public à la place de var
var $auteur;
// En php5 public à la place de var
// en php5 function __construct()
function article() // en php4
{
$this->id=-1; // on initialise id à -1 si l'insertion fonctionne id sera modifié
}
function insert_article()
{
global $table;
$sql = "INSERT INTO $table (titre, contenu, auteur) ";
$sql .= "VALUES ('$this->titre', '$this->contenu', '$this->auteur');";
if (mysql_query($sql))
{
/* mysql_insert_id() retourne l'identifiant */
/* AUTO_INCREMENTE par la dernière requête. */
Page 47
Laurent Lallias
Greco Php niv2
$this->id = mysql_insert_id();
}
}
function lire_article($id)
{
global $table;
$sql = "SELECT id, titre, contenu, auteur ";
$sql .= "FROM $table ";
$sql .= "WHERE id = '$id'";
$rsql = mysql_query($sql);
if (mysql_num_rows($rsql) != 0)
{
/*mysql_result retourne les infos de la 1° ligne du tableau de réponses*/
/*la première ligne est numérotée 0 */
$this->id = mysql_result($rsql, 0, "id");
$this->titre = mysql_result($rsql, 0, "titre");
$this->contenu = mysql_result($rsql, 0, "contenu");
$this->auteur = mysql_result($rsql, 0, "auteur");
}
}
}
?>
Fichier affiche.php
<?php
include ("global.inc.php");
$monArticle = new article();
$monArticle->lire_article($_POST["id"]);
echo "Titre : ".$monArticle->titre."<br/>";
echo "Contenu : ".$monArticle->contenu."<br/>";
echo "Auteur : ".$monArticle->auteur."<br/>";
?>
Fichie insert.php
<?php
include ("global.inc.php");
$newarticle = new article();
$newarticle->titre = $_POST["titre"];
Page 48
Laurent Lallias
Greco Php niv2
$newarticle->contenu = $_POST["contenu"];
$newarticle->auteur = $_POST["auteur"];
$newarticle->insert_article();
if ($newarticle->id <> -1)
{
echo "Le nouvel article a bien été créé. ";
}
else
{
echo "Un problème est survenu lors de la création de l'article. ";
}
echo ";
?>
Fichier index.htm
<html>
<body>
<form name="form1" method="post" action="insert.php">
<h2 align="center">Fiche &agrave; remplir </h2>
<table width="400" border="0" align="center">
<tr>
<td width="50%"><div align="right">Titre de l'ouvrage</div></td>
<td width="50%"><input name="titre" type="text" ></td>
</tr>
<tr>
<td><div align="right">Contenu</div></td>
<td><input name="contenu" type="text" /></td>
</tr>
<tr>
<td><div align="right">Auteur</div></td>
<td><input name="auteur" type="text" /></td>
</tr>
<tr>
<td><div align="right">
<input type="submit" name="Submit" value="Envoyer"/>
</div></td>
<td><input type="reset" value="Réinitialiser"/></td>
</tr>
</table>
</form>
</body>
</html>
Page 49
Laurent Lallias
Greco Php niv2
Fichier affiche.htm
<html>
<body>
<form name="form1" method="post" action="affiche.php">
<h2 align="center">Fiche &agrave; chercher </h2>
<table width="400" border="0" align="center">
<tr>
<td width="50%"><div align="right">Num&eacute;ro Id </div></td>
<td width="50%"><input name="id" type="text"/></td>
</tr>
<tr>
<td><div align="right">
<input type="submit" value="Envoyer"/>
</div></td>
<td><input type="reset" value="R&eacute;initialiser"/></td>
</tr>
</table>
</form>
</body>
</html>
Page 50
Laurent Lallias
Greco Php niv2
Linéariser un objet - Sérialisation d'un objet
Linéariser un objet c'est le transformer en une chaîne de caractères. Celle-ci
peut alors être stockée, comme n'importe quelle autre chaîne de caractères,
dans un fichier ou transmise comme une variable à une autre page. L'objet
initial est récupéré intact en soumettant cette chaîne à la fonction de dé
sérialisation (délinéarisation).
Pour cela on dispose de deux fonctions :
$chaine = serialise ($objet);
$objet = unserialise ($chaine);
La fonction serialize() permet de stocker dans une variable l'objet traité puis
de le "récupérer" grâce à une autre fonction unserialize().
La fonction serialise ne sauvegarde pas les fonctions membres d'un objet.
Ainsi, lors de l'appel à la fonction unserialise, la classe correspondante doit
être déclarée. On voit ici l'intérêt de mettre les classes dans des fichiers
séparés.
get_class() - Retourne la classe d'un objet
string get_class ( object obj )
get_class retourne la classe de l'objet obj . get_class retourne FALSE si obj n'est
pas un objet.
urlencode() - Encode une chaîne en URL
string urlencode ( string str )
urlencode retourne une chaîne dont les caractères non alpha-numériques
(hormis -_. ) sont remplacés par des séquences commençant par un
caractère pourcentage ( % ), suivi de deux chiffres hexadécimaux. Les
espaces sont remplacés par des signes plus ( + ). Ce codage est celui qui est
utilisé pour poster des informations dans les formulaires HTML. urlencode est
pratique pour transmettre des informations via une URL.
Utilisation de variables d'URL
Fichier index.php dans le dossier serialize (les fichiers cdrom.class.php
cdaudio.class.php compactdisc.class.php sont inchangés).
Dans cet exemple nous allons simplement passer la chaine de caractères par
l'URL à un fichier nommé affiche.php les informations concernant l'objet créé.
On commence par remplir le formulaire :
Après avoir soumis le formulaire on
obtient :
Page 51
Laurent Lallias
Greco Php niv2
Remarque :
Nom de la classe
Objet
Après avoir cliqué sur le lien Afficher la suite, on
obtient :
Le fichier index.php
<?php
include("compactdisc.class.php");
include("cdaudio.class.php");
include("dvd.class.php");
if(!empty($_POST["titre"])){$titre=$_POST["titre"];}else { $titre="No titre";}
if(!empty($_POST["datacha"])){$datacha=$_POST["datacha"];}else { $datacha="No date";}
if(!empty($_POST["genre"])){$genre=$_POST["genre"];}else { $genre="No genre";}
if(isset($_POST["typ"])){$typ=$_POST["typ"];}else { $typ="autre";}
switch ($typ){
case "cdaudio" :
$cd =new cdaudio($_POST["titre"],$_POST["datacha"],$_POST["genre"]);
$cdserial=urlencode(serialize($cd)); /* on serialize l'objet cd */
echo "Voici les paramètres passés en arguments<br/>".serialize($cd);
echo "<br/><a href=\"affiche.php?var=$cdserial\">Afficher la suite</a>";
break;
case "dvd" :
$cd =new dvd($_POST["titre"],$_POST["datacha"],$_POST["genre"]);
$cdserial=urlencode(serialize($cd)); /* on serialize l'objet cd */
echo "Voici les paramètres passés en arguments<br/>".serialize($cd);
echo "<br/><a href=\"affiche.php?var=$cdserial\">Afficher la suite</a>";
break;
default :
echo"
<form method=\"post\" action=\"index.php\">
Titre du cd :<br/>
<input type=\"text\" name=\"titre\" value=\"$titre\"/><br/>
Date d'achat : <br/>
<input type=\"text\" name=\"datacha\" value=\"$datacha\"/><br/>
Genre musical ou Catégorie logicielle : <br/>
<input type=\"text\" name=\"genre\" value=\"$genre\"/><br/>
Type de CD<br/>
<input type=\"radio\" name=\"typ\" value=\"dvd\"/> DVD
<input type=\"radio\" name=\"typ\" value=\"cdaudio\"/> Cd audio<br/> <br/>
<input type=\"submit\"/>
Page 52
Laurent Lallias
Greco Php niv2
";
break;
}?>
</body>
</html>
fichier affiche.php
<?php
include("compactdisc.class.php");
include("cdaudio.class.php");
include("cdrom.class.php");
$cdserialize = unserialize ($_GET["var"]);
echo "Titre du cd : ".$cdserialize->titrecd."<br/>";
echo "Date d'achat du cd : ".$cdserialize->date."<br/>";
/* on teste de quelle classe est l'objet : l'objet est-il de classe dvd ? */
if (get_class ($cdserialize)=="dvd") echo "Catégorie du film : ".$cdserialize->categorie."<br/>";
/* on teste de quelle classe est l'objet : l'objet est-il de classe cdaudio ? */
if (get_class ($cdserialize)=="cdaudio") echo "Genre musical : ".$cdserialize->genremusical.
"<br/>"; ?>
Utilisation des variables de session
Fichier index.php dans le dossier serialize2 (les fichiers cdrom.class.php
cdaudio.class.php compactdisc.class.php sont inchangés).
Dans cet exemple nous allons simplement passer (par variable de session) à
un fichier nommé affiche.php les informations concernant l'objet créé.
Fichier index.php
<?php
session_start();
include("compactdisc.class.php");
include("cdaudio.class.php");
include("dvd.class.php");
if(!empty($_POST["titre"])){$titre=$_POST["titre"];}else { $titre="No titre";}
if(!empty($_POST["datacha"])){$datacha=$_POST["datacha"];}else { $datacha="No date";}
if(!empty($_POST["genre"])){$genre=$_POST["genre"];}else { $genre="No genre";}
if(isset($_POST["typ"])){$typ=$_POST["typ"];}else { $typ="autre";}
switch ($typ){
case "cdaudio" :
$cd =new cdaudio($_POST["titre"],$_POST["datacha"],$_POST["genre"]);
/* on serialize l'objet cd */
$_SESSION["cdserial"]=serialize($cd);
echo "<br/><a href=\"affiche.php\">Afficher la suite</a>";
break;
Page 53
Laurent Lallias
Greco Php niv2
case "dvd" :
$cd =new dvd($_POST["titre"],$_POST["datacha"],$_POST["genre"]);
/* on serialize l'objet cd */
$_SESSION["cdserial"]=serialize($cd);
echo "<br/><a href=\"affiche.php\">Afficher la suite</a>";
break;
default :
echo"
<form method=\"post\" action=\"index.php\">
Titre du cd :<br/>
<input type=\"text\" name=\"titre\" value=\"$titre\"/><br/>
Date d'achat : <br/>
<input type=\"text\" name=\"datacha\" value=\"$datacha\"/><br/>
Genre musical ou Catégorie du film : <br/>
<input type=\"text\" name=\"genre\" value=\"$genre\"/><br/>
Type de CD<br/>
<input type=\"radio\" name=\"typ\" value=\"dvd\"/> dvd
<input type=\"radio\" name=\"typ\" value=\"cdaudio\"/> Cd audio<br/> <br/>
<input type=\"submit\"/>
";
break;
}
?>
Fichier affiche.php dans dossier serialize2
<?php
session_start();
include("compactdisc.class.php");
include("cdaudio.class.php");
include("dvd.class.php");
$cdserialize = unserialize ($_SESSION["cdserial"]);
echo "Titre du cd : ".$cdserialize->titrecd."<br/>";
echo "Date d'achat du cd : ".$cdserialize->date."<br/>";
/* on teste de quelle classe est l'objet : l'objet est-il de classe dvd ? */
if (get_class ($cdserialize)=="dvd")
echo "Catégorie du film : ".$cdserialize->categorie."<br/>";
/* on teste de quelle classe est l'objet : l'objet est-il de classe cdaudio ? */
if (get_class ($cdserialize)=="cdaudio")
echo "Genre musical : ".$cdserialize->genremusical."<br/>";
session_destroy();
?>
Page 54
Laurent Lallias
Greco Php niv2
MAROC....................................................................................................................................1
Créez l’arborescence suivante :............................................................................................................... 1
Créez une base de données maroc et une table pagetype ........................................................................ 1
Les enregistrements............................................................................................................................. 1
Créez commun.php le fichier de connexion ............................................................................................ 2
Créez index.php la page d'accueil ........................................................................................................... 2
Créez index.php la page d'accueil administration ................................................................................... 4
Créez ajout.htm le formulaire d'ajout d'enregistrement........................................................................... 5
<P>TAPEZ ICI VOTRE TITRE :<BR> .....................................................................................5
Créez ajout_page.php le script d'ajout d'enregistrement ......................................................................... 6
Quelques types MIME......................................................................................................................... 8
Le traitement d'erreurs......................................................................................................................... 8
Créez suppression.php............................................................................................................................. 9
Créez conf_suppr.php............................................................................................................................ 10
Créez modification.php le formulaire de modification ......................................................................... 10
Créez modif_page.php........................................................................................................................... 12
/******** COPIE DU FICHIER DANS LE DOSSIER ADEQUATE*****/ ..................................12
$NOMFICHIERCOPY="../".$NOMFICHIER; .........................................................................12
ELSE ......................................................................................................................................12
Protection .............................................................................................................................................. 13
Fichier .htaccess du dossier admin .................................................................................................... 13
Fichier .htaccess du dossier connexions............................................................................................ 13
Fichier .htpasswd du dossier connexions .......................................................................................... 13
Quelques remarques .......................................................................................................................... 13
LES COOKIES.......................................................................................................................14
Objectif :................................................................................................................................................ 14
Création de Cookies et php ................................................................................................................... 14
Afficher le contenu d'un cookie............................................................................................................. 16
Détruire un cookie ................................................................................................................................. 16
Savoir si le navigateur client accepte les cookies.................................................................................. 16
Code de script1.php........................................................................................................................... 17
Code de script2.php........................................................................................................................... 17
Exemple de gestion de cookie ............................................................................................................... 17
SESSIONS (PHP 4) ...............................................................................................................19
Principe.................................................................................................................................................. 19
Exemple 1 : une gestion de client (hyper simplifiée) ............................................................................ 19
Le script (ident.php) ......................................................................................................................... 20
Le script suite.php ............................................................................................................................. 21
Le script suite_et_fin.php .................................................................................................................. 21
CONNECTION /DECONNECTION ........................................................................................23
Arborescence ......................................................................................................................................... 23
Base de données et table........................................................................................................................ 23
Le fichier connect.php........................................................................................................................... 23
Le fichier index.php .............................................................................................................................. 24
Le fichier reussite.php ........................................................................................................................... 25
Header ................................................................................................................................................... 26
Syntaxe :............................................................................................................................................ 26
Important ........................................................................................................................................... 26
Page 55
Laurent Lallias
Greco Php niv2
unset ...................................................................................................................................................... 26
Syntaxe :............................................................................................................................................ 26
$_SERVER["PHP_SELF"] ................................................................................................................... 26
Syntaxe :............................................................................................................................................ 26
Require_once......................................................................................................................................... 26
Syntaxe :............................................................................................................................................ 26
REDIRECTION SIMPLE ........................................................................................................27
Fichier .htaccess .................................................................................................................................... 27
Fichier index.php................................................................................................................................... 28
Fichier test.php ...................................................................................................................................... 28
REDIRECTION ET PASSAGE DE PARAMETRES ..............................................................29
Fichier .htaccess .................................................................................................................................... 29
Fichier index.php................................................................................................................................... 29
Fichier test.php ...................................................................................................................................... 29
REDIRECTION ET PASSAGE DE PARAMETRES ..............................................................30
Fichier .htaccess .................................................................................................................................... 30
Fichier index.php................................................................................................................................... 30
Fichier test.php ...................................................................................................................................... 30
REDIRECTION ET PASSAGE DE PARAMETRES ..............................................................31
Fichier .htaccess .................................................................................................................................... 31
Fichier index.php................................................................................................................................... 31
Fichier test.php ...................................................................................................................................... 31
JOINTURE .............................................................................................................................33
Base de données et tables ...................................................................................................................... 33
Fichier de connexion jointure.php du dossier Connections................................................................... 33
Insertion d'un auteur dans la table. inscription_auteur.php ................................................................... 34
Insertion d'un livre dans la table. inscription_livre.php ........................................................................ 34
Affichage avec jointure. affiche.php ..................................................................................................... 35
Recherche .............................................................................................................................................. 36
INITIATION AUX CLASSES - LA POO.................................................................................38
Classe Propriété et Méthode.................................................................................................................. 38
Déclaration de la classe ..................................................................................................................... 38
Définition de la classe - Les propriétés ............................................................................................. 38
Instanciation de classe ....................................................................................................................... 38
Vocabulaire ....................................................................................................................................... 38
Déclaration de classe - Les méthodes (fonctions membres).............................................................. 40
Le constructeur de classe....................................................................................................................... 42
Remarques ......................................................................................................................................... 43
L'héritage............................................................................................................................................... 43
Syntaxe .............................................................................................................................................. 43
Classe et connexion à une bdd .............................................................................................................. 47
Linéariser un objet - Sérialisation d'un objet......................................................................................... 51
get_class() - Retourne la classe d'un objet......................................................................................... 51
urlencode() - Encode une chaîne en URL ......................................................................................... 51
Utilisation de variables d'URL .......................................................................................................... 51
Utilisation des variables de session ................................................................................................... 53
Page 56
Laurent Lallias
Greco Php niv2