WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Modèle Client Serveur
■ Le modèle client serveur est tripartite, c.à.d.
constitué en trois parties:
1. Le Client Web visualise le contenu des pages HTML,
CSS et JavaScript importées du serveur Web
2. Le Serveur Web stocke l'intégralité des pages d'un
site : HTML, PHP, JSP, ASP, CGI, JavaScript, CSS
3. Le Serveur d'application et de base de données
stocke et traite la partie dynamique d'un site.
Développement Web Dynamique IvMad 2018 2PHP: Introduction
■ Le PHP permet de réaliser dynamiquement des sites à
partir d'un Serveur Web.
■ HTML est un script de marquage statique et permet
un dynamisme limité avec JavaScript.
■ PHP est disponible sur plusieurs plates-formes: Linux,
Windows et Mac OS.
■ PHP est un langage de programmation orientée objet
spécialisé dans la génération de code HTML.
■ PHP possède des outils pour manipuler des images, le
traitement de fichiers, accès aux bases de données,
etc.
Développement Web Dynamique IvMad 2018 3Histoire
■ Le langage fut créé en 1994 par Rasmus Lerdorf pour
son site avec à l'origine une bibliothèque en Perl pour
conserver une trace des visiteurs.
■ Par la suite la bibliothèque fut transformée en une
implémentation du langage C, capable de communiquer
avec les BD et de créer des applications dynamiques.
■ Ainsi en 1995 il rendit public son travail dans l'espace
free et open source. PHP s'appelait alors PHP/FI
(Personal Home Page Tools).
■ En 1997, deux étudiants, Andi Gutmans et Zeev
Suraski, redéveloppèrent le cœur de PHP/FI.
■ Un an plus tard, le résultat donna le Zend Engine
devenu alors PHP: Hypertext Preprocessor en version 3.
■ La version la plus rependue est PHP5, la dernière
version disponible PHP7 fait objet de polémique.
Développement Web Dynamique IvMad 2018 4Fonctionnalités PHP
■ Fonctions mathématiques et expressions régulières
■ Gestion des fichiers et des répertoires
■ Gestion du temps, de calendriers
■ Gestion des formulaires HTML
■ Gestion de protocoles Internet (HTTP, FTP, SMTP)
■ Analyse des documents XML
■ Gestion des cookies, des sessions, des sockets
■ Authentification HTTP, manipulation des en-têtes HTTP
■ Accès non natif à des bases de données (MySQL, etc...)
■ Exécution de programmes externes et de shell
■ Encryptage, compression (gzip)
■ Création de documents PDF
■ Création et manipulation d'images GIF, JPEG et PNG
Développement Web Dynamique IvMad 2018 5Définition et règle
■ Le PHP est un langage interprété, écrit en C.
■ Le moteur d'interprétation lit un fichier source PHP, puis
génère un flux de sortie en respectant les définitions et
règles suivantes :
– Un bloc PHP est un groupe continu de lignes, encadré par
deux balises : ou
– Toute ligne située à l'extérieur de ces balises n'est pas
interprétée et est envoyée telle quelle dans le flux de
sortie.
– Toute ligne située à l'intérieur de ces balises est
considérée comme une instruction PHP et est donc
interprétée par le moteur.
– Lorsqu'une erreur survient, un message est intégré dans le
flux de sortie, et la génération du script est interrompue.
Développement Web Dynamique IvMad 2018 6Fonctionnement
Développement Web Dynamique IvMad 2018 7Premier programme
■ Le script PHP est réalisé avec un éditeur de
texte (Notepad++ ou autre).
Premier programme PHP
■ L'extension du fichier doit être .php afin d’être
interprété par le moteur Zen installé côté
serveur Web (Apache, IIS, ou autre).
Développement Web Dynamique IvMad 2018 8Premier programme
■ L'exécution du fichier ca_marche.php du
côté serveur affiche le résultat suivant du
côté client:
Développement Web Dynamique IvMad 2018 9Premier programme
■ Du côté client, la page contient
uniquement du code HTML.
■ Les lignes PHP ont été converties:
Un premier programme php
ça marche !
Développement Web Dynamique IvMad 2018 10Les variables
■ Comme tout langage interprété PHP ne
contient pas de partie déclarative. Pour
déclarer une variable, il suffit de l'initialiser
et cela détermine le type de la variable.
■ Les variables sont toutes dotés du préfixe $
$ma_variable = 1;
■ Il existe 5 types de données :
– Entier, (int, integer)
– Décimal, (real, double, float)
– Chaîne de caractères, (string)
– Tableau, (array)
– Objet (object)
Développement Web Dynamique IvMad 2018 11Portée des variables
■ Il existe trois niveaux de définition de
variables :
1. Le niveau global. Il définit des variables dans
l'intégralité du code d'une page PHP.
2. Le niveau local. Il définit des variables propres
à une fonction, dont la durée de vie ne dépasse
pas le temps de cette fonction.
3. Le niveau static. Il définit des variables propres
à une fonction, qui persistent pendant
l'intégralité du code de la page PHP.
Développement Web Dynamique IvMad 2018 12Tests : if... then... else
■ Test de base, si une condition est vrai alors on
exécute des instructions sinon (facultatif) on
en exécute d'autre.
if ( condition1 ) {
Action 1
} elseif ( condition2 ) {
Action 2
}
} else {
Action 3
}
Développement Web Dynamique IvMad 2018 13Tests : if... then... else
Exemple :
Développement Web Dynamique IvMad 2018 14Exemple
Développement Web Dynamique IvMad 2018 15Tests : switch... case... default
■ Le choix multiple est présenté par un 'switch'. La
condition est associée à une variable, de plus
l'instruction 'break' est primordiale à la fin de chaque
bloc de conditions, sinon toutes les conditions seront
vérifiées et exécutées.
switch ($a) {
case $b:
echo "A est égal à B";
break;
case >$b:
echo "A est supérieur à B";
break;
default:
echo "A est inférieur à B";
break;
}
Développement Web Dynamique IvMad 2018 16Boucles
Boucle avec précondition
while ( condition ) {
Action;
}
Boucle avec post-condition
do {
Action;
} while (condition);
Boucle automatique
for (expr1; expr2; expr3) {
Action;
}
Développement Web Dynamique IvMad 2018 17Boucles $i=1; while ($i
Break; Continue;
■ Break : Cette instruction permet de sortir de n'importe
quelle boucle, à n'importe quel moment.
■ Continue : Cette instruction permet de ne pas exécuter
le code contenu dans la boucle et de passer à l'itération
suivante.
for ($i=1; $iLes tableaux
■ $tableau[0] = 1; // un tableau avec sa première valeur -> 1
■ Pour un tableau à deux dimensions, il suffit de mettre un
second indice au moment de l'affectation.
exemple :
■ $tableau[0][0] = 1; // un tableau, et sa première valeur est 1
■ Il n'est pas obligatoire de préciser l'indice pour affecter une
valeur.
exemple :
■ $tableau[] = 1; // équivaut à $tableau[0] = 1;
■ $tableau[] = 45; // équivaut à $tableau[1] = 45;
■ $tableau[] = 6; // équivaut à $tableau[2] = 6;
■ La déclaration et l’initialisation d'un tableau peuvent
également se faire par l'intermédiaire de la fonction 'array()'.
Cette fonction permet de préciser les indices ainsi que les
valeurs du tableau (à l'aide de l'opérateur =>).
Développement Web Dynamique IvMad 2018 20Tableaux associatifs
Les tableaux
■ Un traitement classique des éléments d'un
tableau avec parcours en boucle:
Développement Web Dynamique IvMad 2018 22Variables d'environnement
■ L'un des aspects fondamentaux d'une
application construite sur une architecture de
type client-serveur est l'utilisation des
variables d'environnement du serveur, et
notamment celles du serveur HTTP.
■ Avec PHP toutes les variables d'environnement
du serveur sont automatiquement reprises
dans les scripts PHP en tant que variables
globales. Ainsi, il suffit de les utiliser
directement dans le code.
Développement Web Dynamique IvMad 2018 23Variables d'environnement
■ Ces variables sont en fait une variable
$_SERVER[] de type tableau contenant
autant d'entrées qu'il y a de valeurs
récupérées.
■ Exemple :
/* IP du client et son navigateur */
Développement Web Dynamique IvMad 2018 24Variables d'environnement
Variables d'environnement
p { font-family: sans-serif; color: blue; font-size: 10pt; font-style:
italic; margin-left: 50px; margin-right: 50px; margin-top: 20px}
Développement Web Dynamique IvMad 2018 25Variables d’environnement
Les variables sont accessibles en directe.
■ $SERVER_NAME : Le nom du serveur hôte qui exécute le script.
Si le script est exécuté sur un hôte virtuel, ce sera la valeur
définie pour cet hôte virtuel.
■ $PHP_SELF : Le nom du fichier du script en cour d'exécution,
par rapport au document root.
■ $DOCUMENT_ROOT : La racine sous laquelle le script courant
est exécuté, comme défini dans la configuration du serveur.
■ $REMOTE_ADDR : L'adresse IP du client.
■ $REMOTE_PORT : Le port utilisé par la machine cliente pour
communiquer avec le serveur web.
■ $SCRIPT_FILENAME : Le chemin absolu jusqu'au script courant.
■ $SERVER_PORT : Le port de la machine serveur utilisé pour les
communications. Par défaut, c'est '80'. En utilisant SSL, par
exemple, il sera remplacé par le numéro de port HTTP sécurisé.
■ $REQUEST_URI : L'URI qui a été fourni pour accéder à cette
page. Par exemple : '/index.html'.
Développement Web Dynamique IvMad 2018 26Variables du formulaire
■ Les variables sont issues des différents
champs positionnés dans le formulaire.
■ La page qui reçoit ces variables est désignée
par l'attribut ACTION de la balise .
Nom :
Développement Web Dynamique IvMad 2018 27Variables de formulaires
Affichage du nom
Le nom de l'utilisateur est: Didier
28
Développement Web Dynamique IvMad 2018Variables de formulaires
■ Les variables récupérées des méthodes GET et
POST sont accessibles comme des éléments de
tableaux associatifs :
$HTTP_GET_VARS / $_GET
$HTTP_POST_VARS / $_POST
■ Exemple avec la forme "nom"Exemple de formulaire
Nom
Prénom
Précisez votre sexe
Homme
Femme
Ville de naissance
Paris
Marseille
Lyon
Développement Web Dynamique IvMad 2018 30Exemple de formulaire
Développement Web Dynamique IvMad 2018 31Les checkbox
Développement Web Dynamique IvMad 2018 32Les checkbox en chaîne
bleu
blanc
rouge
Développement Web Dynamique IvMad 2018 33Les Fonctions
Exemple 1:
function bonjour() {
echo "Bonjour!";
}
La fonction affichera 'bonjour' et ne retourne
aucun résultat, on l’utilisera de la manière
suivante :
Bonjour() ; // affiche 'bonjour' à l’écran
Exemple 2:
function somme( $a, $b) {
return $a + $b ; }
La fonction retourne la somme de deux
paramètres.
Développement Web Dynamique IvMad 2018 34Les Fonctions
Un exemple complet
La fonction est exécutée uniquement après
son appel et passage des paramètres.
Développement Web Dynamique IvMad 2018 35Les Fonctions
Passage par valeur ou par référence :
Le passage des paramètres déjà présenté est le
passage par valeur.
Il existe aussi le passage par référence. On passe à la
fonction la référence (adresse mémoire) d’une
variable existante, et la fonction modifie directement
en mémoire la valeur de cette variable.
function bonjour(&$phrase) {
$phrase= "bonjour Toto";
}
$chaine = "Phrase qui va disparaître";
bonjour($chaine) ;
echo $chaine ; // affiche 'bonjour Toto'
Développement Web Dynamique IvMad 2018 36Gestion de la date
■ Fonction Date et ses paramètres :
echo date("d-m-Y"); // affiche : "03-03-2008"
echo date("d/m/y"); // affiche : 02/03/09
echo date("Y"); // affiche : "2008"
echo date("m/y"); // affiche : "03/08"
echo date("H:i:s"); // affiche 10:16:18
echo date("F j, Y, g:i a");
// March 3, 2009, 10:16 pm
Développement Web Dynamique IvMad 2018 37Mathématique
■ Les fonctions mathématiques y
sont toutes !
– Abs, cos, sin, tan, sqrt, exp, …
– pi( ), …
Développement Web Dynamique IvMad 2018 38Chaînes de caractères
■ strpos(chaîne, sous_chaîne) : retourne la position de la
première occurrence de la sous chaîne dans la chaîne.
■ strstr(chaîne, sous_chaîne) retourne la portion de la
première occurrence de la sous chaîne.
■ foreach (nom tableau) : A chaque appel, cette fonction
retourne la valeur suivante du tableau.
■ strlen (chaîne) : retourne la taille de la chaîne.
■ strtolower|strtoupper (chaîne) : retourne la chaîne passée
en paramètres an minuscules (majuscules).
■ str_replace (car d’origine, car de destination, chaîne) :
remplace le caractère d’origine par le caractère de
destination dans la chaîne.
■ ereg(chaîne à chercher, chaîne) : retourne vrai si la
chaîne à chercher (sous forme de chaîne ou sous forme
d’expression régulière) est contenue dans chaîne.
Développement Web Dynamique IvMad 2018 39PHP et les Images
■ Formats supportés
– JPG, GIF, PNG
■ Fonctionnalités
– Récupération,
– Création,
– Modification,
– Manipulation.
Développement Web Dynamique IvMad 2018 40Fonctions liées aux images
■ Avec la bibliothèque GD
– id = getimagesize (nom de fichier)
– id = imagecreate(largeur, hauteur)
• GIF, JPG, PNG
– imagedestroy(identifiant image)
– imagefill (image, x, y, couleur)
– imagechar($image, police, x, y, "txt",
couleur)
– imagecharup ...
Développement Web Dynamique IvMad 2018 41Mail
■ Envoyer un mail directement, sans appeler
un gestionnaire/serveur de courrier.
■ La fonction mail (ou email) paramètres:
qLe destinataire,
qL’objet du message,
qLe corps du message.
< ?
Mail("dupont@mondomaine.fr", "Objet du mail",
"Le corps de message") ;
?>
■ Pratique pour réponses automatiques d'un
serveur Web
Développement Web Dynamique IvMad 2018 42Gestion des fichiers
La fonction fopen() permet d'ouvrir un fichier
avec un mode d'accès :
Int = fopen(chaine nomdufichier, chaine mode);
Différents modes d'accès :
■ r : ouverture en lecture seulement
■ w : ouverture en écriture seulement (la fonction crée le
fichier s'il n'existe pas)
■ a : ouverture en écriture seulement avec ajout du
contenu à la fin du fichier et le crée s'il n'existe pas
■ r+ : ouverture en lecture et écriture
■ w+ : ouverture en lecture et écriture (la fonction crée le
fichier s'il n'existe pas)
■ a+ : ouverture en lecture et écriture avec ajout du
contenu à la fin du fichier et le crée s'il n'existe pas.
Développement Web Dynamique IvMad 2018 43Gestion des fichiers
Exemples :
// lecture
$fp = fopen("../fichier.txt", "r");
// écriture depuis début du fichier
$fp = fopen("ftp://iut.univ.fr/pub/fichier.txt","w");
// écriture depuis fin du fichier
$fp = fopen(http://www.nexen.com/fichier.txt,"a");
Remarque:
$fp contient l'adresse du buffer d'Entrée/Sortie
Développement Web Dynamique IvMad 2018 44Lecture dans un fichier
$monfichier = fopen("monfichier.txt","r") ;
if ( !($monfichier) ) {
print("Impossible d’ouvrir le fichier") ;
exit ;
}
while ( !feof($monfichier) ) {
$ligne = fgets($monfichier, 255);
// 255 caractères max. ou bien fin de ligne.
print " $ligne ";
}
fclose ($monfichier) ;
Développement Web Dynamique IvMad 2018 45Écriture dans un fichier
Développement Web Dynamique IvMad 2018 46Exemple de script
■ Réaliser un compteur dans un fichier texte.
Développement Web Dynamique IvMad 2018 47Fonction Explode
■ Il est fréquent d’avoir des fichiers
contenant différents champs séparés par
un délimiteur quelconque.
■ Une fonction très utile dans ces cas là:
explode ("caractère délimiteur",
chaîne de donnée)
Roose | Philippe | 27
Goudin | David | 28
Développement Web Dynamique IvMad 2018 48Fonction Explode
Développement Web Dynamique IvMad 2018 49Programmation OO
■ Déclaration de classe
class Personne { // attributs, méthodes
var $nom, $adresse;
function Personne($nom, $adresse, $age) {
$this->nom = $nom;
$this->adresse = $adresse;
}
function toprint() { print $this->nom; }
}
■ Instanciation
$p = new Personne("Jacques","Aubagne");
■ Référenciassions
print $p->nom; $p->print();
Développement Web Dynamique IvMad 2018 50Programmation OO
■ Héritage
class Cadre extends Personne {
var $poste, $salaire;
function Cadre($nom, $adresse, $poste, $salaire) {
$this->Person($nom, $adresse, $age);
$this->poste = $poste;
$this->salaire = $salaire;
}
function toprint() {
print parent::toprint();
print $this->salaire; print $this->poste;
}
}
Développement Web Dynamique IvMad 2018 51Programmation OO
■ Exécution
$p=new Personne("Jacques","Aubagne");
echo "la classe Personne";
print $p->nom;
echo "la classe Cadre";
$c=new Cadre("Ivan", "Marseille", "MCF", "XXX");
$c->toprint();
Développement Web Dynamique IvMad 2018 52MVC : Modèle-Vue-Contrôleur
■ Le principe MVC est de dissocier les données et
la présentation en décomposant l'application en
trois couches:
– Modèle : pour décrire les actions, les traitements
métiers de l'application (connexion aux données,
algorithmique, vérification, sécurité…).
– Vue : pour la partie
restitution des
données aux
utilisateurs de
l'application
HTML, PDF, XML…
– Contrôleur :
interface la Vue
et le Modèle.
Développement Web Dynamique IvMad 2018 53MVC : Modèle-Vue-Contrôleur
■ Architecture des dossiers
– La mise en place d'une structure de dossier permet
d'appréhender plus facilement l'implémentation du
MVC.
Développement Web Dynamique IvMad 2018 54MVC : Modèle-Vue-Contrôleur
■ Contrôleur :
– Le contrôleur reçoit les requêtes de l'utilisateur et fait
l'intermédiaire entre le modèle et la vue pour
répondre aux requêtes.
■ Modèle :
– La partie métier de l'application.
– La partie modèle contient les classes, les fonctions, les
fichiers de paramètres, les scripts d'actions de
l'application sans aucun élément visuel.
■ Vue :
– La vue contient les composants gérant la présentation
• fichiers HTML, fichiers textes, ou d'autres formats XML,
PDF…
– La vue représente un visuel et les données traitées
par le modèle.
Développement Web Dynamique IvMad 2018 55Vous pouvez aussi lire