WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV

 
CONTINUER À LIRE
WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
Web dynamique
     avec
 PHP et MySQL

                                          1
 Développement Web Dynamique IvMad 2018
WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
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       2
WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
PHP: 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       3
WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
Histoire
■   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        4
WEB DYNAMIQUE AVEC PHP ET MYSQL - DÉVELOPPEMENT WEB DYNAMIQUE IVMAD 2018 1 - IVAN MADJAROV
Fonctionnalité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       5
Dé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              6
Fonctionnement

    Développement Web Dynamique IvMad 2018   7
Premier 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        8
Premier 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   9
Premier 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   10
Les 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   11
Porté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      12
Tests :           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   13
Tests :         if... then... else
Exemple :

       Développement Web Dynamique IvMad 2018   14
Exemple

         Développement Web Dynamique IvMad 2018   15
Tests :              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             16
Boucles
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   17
Boucles
$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; $i
Les 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            20
Tableaux associatifs
Les tableaux
■   Un traitement classique des éléments d'un
    tableau avec parcours en boucle:

         Développement Web Dynamique IvMad 2018   22
Variables 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     23
Variables 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   24
Variables 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                25
Variables 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             26
Variables 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    27
Variables de formulaires

Affichage du nom

Le nom de l'utilisateur est: Didier

                                                 28
        Développement Web Dynamique IvMad 2018
Variables 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       30
Exemple de formulaire

         Développement Web Dynamique IvMad 2018   31
Les checkbox

               Développement Web Dynamique IvMad 2018        32
Les checkbox en chaîne
 
bleu
blanc
rouge

          Développement Web Dynamique IvMad 2018              33
Les 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   34
Les 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   35
Les 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            36
Gestion 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           37
Mathématique
■   Les fonctions mathématiques y
    sont toutes !

    – Abs, cos, sin, tan, sqrt, exp, …
    – pi( ), …

        Développement Web Dynamique IvMad 2018   38
Chaî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         39
PHP et les Images
■   Formats supportés
    – JPG, GIF, PNG
■   Fonctionnalités
    –   Récupération,
    –   Création,
    –   Modification,
    –   Manipulation.

           Développement Web Dynamique IvMad 2018   40
Fonctions 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   41
Mail
■   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   42
Gestion 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           43
Gestion 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     44
Lecture 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    46
Exemple de script
■   Réaliser un compteur dans un fichier texte.

           Développement Web Dynamique IvMad 2018   47
Fonction 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   48
Fonction Explode

           Développement Web Dynamique IvMad 2018                     49
Programmation 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       50
Programmation 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       51
Programmation 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   52
MVC : 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          53
MVC : 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          54
MVC : 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              55
Vous pouvez aussi lire