La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

PHP - MySQL ● Animateur – Jean-Marc Vanel – Consultant Logiciels libres, Java & XML – – Site: ●

Présentations similaires


Présentation au sujet: "PHP - MySQL ● Animateur – Jean-Marc Vanel – Consultant Logiciels libres, Java & XML – – Site: ●"— Transcription de la présentation:

1 PHP - MySQL ● Animateur – Jean-Marc Vanel – Consultant Logiciels libres, Java & XML – Email: mailto://jmvanel@free.fr – Site: http://jmvanel.free.fr/ ● Déroulement – Horaires – Déjeuner – Pauses – Questions

2 Les bases PHP : le menu Historique, Points forts, Principe Syntaxe: Variables, tableaux, constantes, Opérateurs Les blocs de contrôle: if, boucles while, for, foreach, switch Les fonctions, PHP Objet Formulaires Base de Données MySql Sessions, Cookies Images Upload de fichier Les templates Configuration PHP: php.ini Resources – Vers la version 5

3 PHP – C'est.... Logiciel libre et gratuit Langage de script coté serveur Développé en C Soutenu par la Apache Fundation Software ("édité" par Zend technologies http://www.zend.com) Site officiel http://www.php.net Version 4.2.3 Ressources en français: - http://www.phpindex.com - http://dev.nexen.net/ Ressources en anglais - http://www.phpbuilder.com - http://www.allhtml.com

4 PHP – Historique De Personnal Home Page Crée en 1994 par Rasmus Lerdorf......réécrit 3 fois A Php Hypertext Preprocessor Un acronyme récursif calqué sur le principe Gnu's not Unix 7 000 000 de noms de domaine aujourd'hui Sources netcraft : http://www.php.net/usage.php

5 PHP – Nouveautés V4 Un nouveau moteur... Performances accrues Des outils supplémentaires Compiler, Caches et Optimiseurs (parfois payants...) Meilleur compatibilité Un module ISAPI pour IIS Nouvelles fonctionnalités Prise en charge native des sessions Nouveaux type de boucles...

6 PHP – Points forts Des solutions alternatives Asp, JSP / Servlets, Cfm, CGI, Perl,... Pourquoi Php ? - Performances élevées. - Multi-base (MySQL, PostgreSQL, mSQL, Oracle, dbm, Filepro, Hyperware, Informix, Interbase, Sybase, ODBC, JDBC, Oracle... ) - Bibliothèques de fonctions, de scripts - conçu pour le Web - Simplicité d'apprentissage - Portabilité - Gratuité, Open Source

7 PHP – Principe Principe de fonctionnement Traitement coté serveur Serveur http Navigateur Page PHP ? PHPBase de données Demande de page Interprète le code PHP (généralement génère une page HTML) Résultat du traitement Schéma simplifié du déroulement d’une requête mettant en jeu une page PHP Requête BD? Page résultante Résultat requête

8 bonjour PHP – Principe, conclusions Visibilité Seul le code HTML est disponible coté utilisateur <? echo ‘ ’; echo ‘bonjour’; echo ‘ ’; ?> Page PHP (sur serveur) Page générée et transmise Résultat dans le navigateur Client

9 PHP –Syntaxe Généralités Très proche du C, C++, Java Directement intégré dans les pages HTML Entre les balises Lignes d’instructions terminées par ‘;’ Simplicité de l’écriture Typage faible Pas de forte structuration du code Allocation / libération de mémoire automatique ! Seul le développeur est garant de la lisibilité du code

10 PHP –Structure type Installer Php et créer la page « hello the world »

11 PHP – Variables, concepts Variables Précédée d’un ‘$’ Affectation avec '=' Pas de « déclaration » (automatique) Faiblement typé Portée Script Locale Globale Super-globale Constantes

12 PHP – Variables, utilisation Utilisation Numériques <? $a = 2; //(a vaut 2) $b = $a + 8; //(b vaut 10) $c = $b + $a; (c vaut 12) ?> Chaînes <? $chaine = ‘Bonjour’; $qui = ‘ Aston’; $text = $chaine.$qui; //text vaut ‘Bonjour Aston’ ?> Tableaux <? $tableau[0] = 10; $tableau[1] = 20; $courses[‘pomme’] = 10; $courses[‘stylo’] = 20; ?> Indices automatiques: <? $tableau[] = « a »; $tableau[] = 4; $tableau[] = 17; ?>

13 Une variable peut contenir une liste de valeur, qui sont alors stockées sous forme de tableau. Une variable devient tableau dès lors que l'on utilise le mot clé array pour définir son contenu: ou en initialisant directement l'un de ses éléments : Les éléments d'un tableau peuvent contenir n'importe quelle valeur de n'importe quel type (y compris un tableau : la variable devient alors un tableau à n dimensions) et possèdent une clé (ou indice), qui peut être une valeur numérique ou alpha numérique. On parle alors de tableau associatif. PHP - Les variables tableaux $tab=array( 45, 'toto'); $tab[2]=680.98;

14 PHP - les variables tableaux (2) $tab2=array( 45, 'toto'); echo $tab2[0]; // affiche 45 echo $tab2[1]; // affiche toto $tab2[]=78; // indice automatique -> 2 echo $tab2[2]; // affiche 78 $tab=array('paul'=>'renault', 54=>'ford', 'mercedes'); $tab['jean']='opel'; echo $tab['paul']; // affiche renault echo $tab[0];// Attention ! : n'affiche pas 'renault' !! echo $tab[55]; // affiche mercedes Quand on n'indique pas de clé à l'élément lors de l'initialisation, celle-ci prend alors automatiquement une valeur numérique (celle immédiatement après la plus élevée). On peut spécifier la clé (numérique ou pas) à l'initialisation :

15 PHP - Manipulation de tableaux Pour toutes variables tableau, PHP gère un "curseur" en interne, qui pointe sur l'un des éléments du tableau. Par défaut, le curseur pointe sur le premier élément. Toute une série de fonctions PHP (prés de 60!) permet de manipuler ce curseur et de parcourir un tableau facilement (voir chapitre sur les boucles) : reset($tab); // remet le curseur au début $nombre=count($tab); // donne le nombre d'élément $valeur=next($tab); /* avance le curseur et renvoi la valeur de l'élément courant */ $valeur=prev($tab); /* recule le curseur et renvoi la valeur de l'élément courant */ $elt=each($tab); /* renvoi l'element courant (sous forme de tableau array(cle, valeur) et avance le curseur */ ksort($tab); // trie le tableau en fonction des clés sort($tab); // trie le tableau en fonction des valeurs

16 PHP - Les constantes Elles se définissent avec le mot clé define et s'utilisent avec leur nom sans $ devant. <? define('TAUX_EURO', 6.55957); $prix_euro= $prix_franc / TAUX_EURO; ?> Exemple : La portée d'une constante est 'superglobale' (PHP >= v3) et les valeurs peuvent être de tout type. Ne pas confondre variable et constante. On ne peut modifier la valeur d'une constante.

17 PHP – Variable de variable Concept Utiliser une variable dont le nom est le contenu d’une variable <? $NomVariable = ‘Prenom’; $$NomVariable = ‘Pierre’; echo ‘bonjour ’.$Prenom; // affiche ‘Bonjour Pierre’ ?> ! Attention à la lisibilité du code lors de l'emploi de cette méthode

18 PHP – Opérateurs Arithmétiques +Addition -Soustraction *Multiplication /Division %Modulo Affectation combinée +=$a+=$b$a = $a+$b -=$a-=$b$a=$a-$b *=$a*=$b$a=$a*$b /=$a/=$b$a=$a/$b %=$a%=$b$a=$a%$b.=$a.=$b$a=$a.$bConcaténation

19 PHP – Opérateurs (2) Incrémentation / décrémentation ++$a$a++ --$a$a-- Négation $a = true; $b = !$a; ($b == false) Référence $a = &$b; $a = 5; $b a pour valeur 5

20 PHP – Opérateurs (3) Comparaison ==Egal !=Différent <>Différent <Inférieur <=Inférieur ou égal >Supérieur >=Supérieur ou égal Logiques && et ||ou andet (priorité inférieure) orou (priorité inférieure) ! Les opérateurs sont court circuit à gauche

21 PHP – Opérateurs (4) &et binaire |ou binaire ~non binaire ^ou exclusif binaire <<décalage à gauche >>décalage à droite I Il est très rare d'avoir recours à ces opérateurs dans un contexte classique

22 PHP – Les blocs (if) Test if If ($condition){...Traitement si vrai }else{...Traitement si faux } Exemple If ($UtilisateurConnu){ echo «Bienvenue $Utilisateur »;...Contenu de la page... }else{ header ("location: http://monsite.fr/login.php"); exit; }

23 PHP – Boucle (while) Boucle while while ($condition){...Traitement } Exemple $i = 0; $NotFinished = true; while ($NotFinished){ if (!isset ($Tableau[$i])){ $NotFinished = false; }else{ $Tableau[$i] = $Tableau[$i]*2; $i++; } ! Attention aux conditions de boucle (boucles infinies) I Php aborde les pages trop longue à exécuter (paramétrage du fichier ini)

24 PHP – Boucle (for) Boucle for for (départ; condition; passage){ Traitement unitaire } Exemple function TableMulti ($TableDe){ for ($i=0; $i<=10; $i++){ echo 'TableDe ['. $i. ']='. $TableDe[$i]. "\n"; }

25 PHP – Boucle (foreach) Boucle foreach Idéal pour parcourir des éléments de type tableau. foreach ($Tableau as $Clef=>$ElementUnitaire){ // $Clef référence l'indice du tableau // $ElementUnitaire référence la valeur de $Tableau[$Clef] } $Clef=> est facultatif Exemple function ShowTableau ($MonTableau){ foreach ($MonTableau as $Key=>$Elem){ echo 'Clef: '.$Key.' - Valeur: '.$Elem." \n"; }

26 PHP - Structure de contrôle (switch) Le mot-clé switch permet d'effectuer un traitement selon la valeur d'une variable. switch( ) { case : break; case : break; default : } switch($var){ case 'toto': echo "c'est toto !"; break; case 'marc': echo "marc est là"; break; default: echo "connais pas"; } Exemple :

27 PHP – Les fonctions Fonctions Mot clef « function » Ne spécifie ni le type de retour, ni les types en entrée <? function Carre ($nombre=10) { return $nombre*$nombre; } echo "Le carré de 2 est : ".Carre(2); ?> Possibilité de donner un Paramètre par défaut De la droite vers la gauche Cet exemple affiche « le carré de 2 est :4 »

28 PHP – « Php Objet » Déclaration Mot clef « class » Pas de niveau d’accès, tout est « public ». Les variables de classes (propriétés) sont déclarées par « var » Mot clef « $this » Constructeur: méthode du même nom que la classe <? class Carre { var $nombre; function Execute () { echo « ».$this->nombre*$this->nombre; } ?> ! Il est obligatoire de faire référence aux méthodes et propriétés de classe via '$this'

29 PHP – Objets (2) Utilisation Mot clef « new » Pas de « delete » ! Référence aux propriétés / méthodes par « -> » <? $ObjCarre = new Carre(); $ObjCarre->nombre = 10; $ObjCarre->Execute (); // affiche 100. $AutreCarre = $ObjCarre; // ici copie $AutreCarre->nombre = 2; $AutreCarre->Execute (); // affiche 4. $ObjCarre->Execute (); // Affiche 100. ?> ! Les objets sont implicitements passés en copie. Il faut forcer un passage par référence si besoin.

30 PHP – Objets Héritage Héritage Mot clef « extends » Pas d’héritage multiple Possibilité de surcharge <? class Chef extends Personne { var $secretaire; // Personne function maFonction () { Personne::maFonction(); echo "prérogatives en plus"; } ?> Personne Chef maFonction() secretaire

31 PHP – Formulaires Permettre à l'utilisateur de saisir des données libres Mise en oeuvre facile Avantages Interactivité Développement Compatibilité

32 PHP – Formulaires (2) Formulaire HTML classique Les variables reçues porteront le nom des champs Page « interface » Exemple <form name="saisie" action="traitement.php" method="GET"> Nom : Prénom :

33 PHP – Formulaires (3) Variables automatiquement globales si register_globals = true; (php.ini) Dans les variables spécifiques Php HTTP_GET_VARS, HTTP_POST_VARS ( _GET, _POST depuis Php 4.1.0 ) Page « réception » I Le « Php group » recommande aujourd'hui l'emploi de _GET et _POST, puis de définir register_globals à false

34 PHP – Formulaires (4) <? if (!isset ($_POST['nom'])){ echo "Le formulaire n'a pas été reçu correctement"; }else{ echo 'Bonjour '.$_POST['nom']; } ?> Page « réception », exemple I Il est souvent préférable de tester l'ensemble des valeurs attendues pour des raisons de sécurité. (utilisateurs mal intentionnés)

35 PHP - Les formulaires exercice 1 Objectifs : Ecrire une page HTML reprenant le formulaire de l'exemple précédent et la page php01_b.php qui va récupérer les informations saisies et les afficher. Vous essaierez avec les méthodes GET, POST.

36 Objectifs : Ecrire une page PHP affichant un formulaire demandant un login / mot de passe. Apres envoi du formulaire, cette page devra vérifier la saisie et rediriger vers php02_b.php si le login est bon. Cette dernière affichera le login saisie. Si le login est faux, le formulaire sera afficher à nouveau avec un message d'erreur. php02_b.php php02_a.php PHP – Formulaires, exercice

37 PHP – Dialogue application serveur web Le dialogue peut se faire dans le sens serveur web => navigateur: en générant du code HTML : echo() ou print() en modifiant l'en tête HTTP de la page générée pour par exemple forcer le download de fichier ou effectuer des redirections. En envoyant des cookies. (fonction setcookie ; cf chapitre sur les cookies) <? // redirection vers la page autrepage.php header("location: autrepage.php"); ?> La modification de l'en-tête HTTP et l'envoi de cookie doit se faire avant tout code HTML, echo() ou print()

38 PHP – Base de Données Pourquoi ? Stockage permanent des saisies formulaire piocher dans de gros volumes de données intégration avec systèmes existants Adabas, Dbase, DBM, ICAP, Informix, SQL serveur, MSQL, MySQL, ODBC, Oracle, PostgreSQL, Sybase. Support natif de MySQL Support SGBD Php ● structuration ● persistence ● intégrité ● sécurité ● requêtes

39 PHP – BD, Utilisation <? $IdConnexion = mysql_connect (« host », « user », « password »); ?> Connexion $IdConnexion pourra être réutilisé par la suite lors des requêtes, c'est un identifiant de connexion I En règle générale, les fonctions de connexion aux bases de données sont de la forme BD_connect ();

40 PHP – BD, Utilisation (2) Interrogation <? $IdRequete = mysql_db_query (‘test’, ‘select * from employe’); // Cette fonction est obsolète // --- ou mieux: --- mysql_select_db (‘test’); $IdRequete = mysql_query (‘select * from employe’); ?> $IdRequete est un identifiant de requête, il poura être utilisé pour le parcours des résultats. ! Les « select * », bien que pratiques, sont dangereux à utiliser. (casse et ordre des champs, performances)

41 PHP – BD, Utilisation (3) Parcours mysql_fetch_assoc (); Un tableau associatif avec le nom des champs mysql_fetch_row (); Un tableau indicé dans l'ordre des champs mysql_fetch_object(); Un objet dont les prop. sont les noms des champs while ($row = mysql_fetch_object ($IdRequete)) { echo $row->champ1; } while ($row = mysql_fetch_row ($IdRequete)) { echo $row[0]; } while ($row = mysql_fetch_assoc ($IdRequete)) { echo $row["champ1"]; } Exemple - Lecture et retour de l'enregistrement - Pointe sur l'enregistrement suivant - Retourne false en fin de parcours

42 PHP – MySql Restrictions Non respect des clefs étrangères Requêtes imbriquées impossibles Gestion des droits limité DATE_FORMAT – formatage de la date SELECT DATE_FORMAT("%d-%m-%Y") la_date FROM maBase; Cryptage d'une information (e.g. : pour stocker les mots de passe) PASSWORD ("chaîne à crypter"); Fonctions utiles

43 PHP – Sessions Avantages Conserver des données d’une page à l’autre Très simple d’utilisation Fonctions... session_start () démarrage de la session session_register () enregistrement d'une variable en session session_unregister () déréférencement d'une variable de session session_destroy () détruit la session de l'utilisateur actuel Pour placer un objet en session, il doit être déclaré avant son démarrage Les modifications aux variables de session sont enregistrées automatiquement

44 PHP – Sessions, exemple Page1.php <? session_start (); // crée la session si inexistante $valeur = 10; session_register ("valeur"); // stocke $valeur dans la session $valeur = 20; ?> Page2.php <? session_start (); echo $valeur; //affiche 20. ?>

45 PHP – Cookie Avantages Placer des données (non sensibles) côté client Cibler les attentes de l'internaute Fonctions... Setcookie («nom_cookie », valeur_cookie); Définition du cookie et de sa valeur $HTTP_COOKIE_VARS[«nom_cookie »] Permet de tester la valeur du cookie. Pour supprimer un cookie, faire un setcookie ("nom_cookie") en ne spécifiant aucune valeur.

46 PHP – Cookies, exemple <? $Last = false; if (isset ($HTTP_COOKIE_VARS['date_connexion'])){ $Last = $HTTP_COOKIE_VARS['date_connexion']; } setcookie ('date_connexion', date ("d-m-Y H:m:s")); if ($Last) echo "Votre dernière connexion: ".$Last; ?>

47 PHP - Les cookies La fonction setcookie : int setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) Name : nom du cookie value : valeur stockée (vide : le cookie est détruit) expire : date d'expiration du cookie (sans date : cookie de session) la date est au format "Unix timestamp" ( nombre de secondes depuis le 01/01/1970 ) que l'on peut obtenir avec mktime() ou time(). path : chemin du répertoire où est valide le cookie ( par defaut: le chemin de la page qui fait le setcookie) domaine : nom du domaine où est valide le cookie secure : indique si le cookie est sécurisé La création d’un cookie doit se réaliser avant tout envoi HTML au poste client, l’en-tête de la réponse HTTP étant modifié...

48 PHP - Les cookies Pour récupérer les valeurs de cookie, cela se passe comme toutes variables prédéfinies. Soit PHP crée des variables individuelles automatiquement en début de page soit on retrouve les valeurs dans les tableaux $HTTP_COOKIE_VARS[] ou $_COOKIE[] (version > 4.1.0) Pour modifier le contenu d'un cookie, il faut réutiliser la fonction setcookie() <? /* crée un cookie ayant pour nom "societe" et pour valeur "aston" il est valide 15 jours et est accessible sur toutes les pages du site */ setcookie("societe","aston",time()+60*60*24*15,"/"); ?>

49 PHP - Les cookies Objectifs : Ecrire une page PHP de saisie de login/mot de passe, qui vérifie la validité de la saisie. Si le login est bon, créer un cookie contenant un nombre indiquant que l'utilisateur est bien identifié et une autre contenant le login. Faire une deuxième page qui vérifie la présence des cookies : elle affichera alors un message avec le login si c'est ok, ou redirigera vers la page d'identification le cas échéant. Essayer avec des cookies de session (sans date de validité) et des cookies normaux. php03_b.php php03_a.php

50 PHP – Images, rappels Les formats... JPEG – Idéal pour les images complexes (photographie) GIF – Idéal pour les images simples (graphes, texte,...) Le format gif est payant. (les logiciels qui génèrent du gif doivent payer une licence) PNG – « Amélioration » du format gif, gratuit. Pas de perte de données.

51 PHP – Images, génération Génération en 4 étapes 1 – Création d'une zone de dessin ImageCreate ($largeur_px, $hauteur_px) ImageCreateFromPNG/JPEG/GIF ($FileName) 2 – Dessin (textes / formes) dans la zone. Allocation des couleurs : ImageColorAllocate ($img, $R, $V, $B) ImageLine ($img, $startx, $starty, $width, $height, $color) ImageString ($img, $police /*entier*/, $startx, $starty, $txt, $color) ImageRectangle ($img, $x, $y, $long, $haut, $color) ImageFilledRectangle ($img, $x, $y, $long, $haut, $color) 3 – Génération de l'image ImagePNG/JPEG/GIF($img, [$filename]) 4 – Libération des ressources. ImageDestroy ($img)

52 PHP – Upload de fichier Coté client Une zone fichier dans le formulaire. Un formulaire « enctype/multipart » Coté serveur if (is_uploaded_file ($fichier)){//réussite de l'upload ? move_uploaded_file ($fichier,'./destination/'.$nom_fichier); //déplacement de l'upload } I Il est nécessaire de donner à Php les droits d'écriture à « destination ».

53 PHP – Les templates Objectif Dissocier les traitements de la présentation. Principe Objet template Page Php Fichier template Traitement préparation des données Code HTML Résultat Rapprochement des donneés

54 Solutions évoluées PHP – Les templates (2) Avantages Travail avec des graphistes Possibilité de modifier l'aspect de l'application sans l'endommager Possibilité de profiter des outils de présentation Quelques noms PhpLib Xtemplate FastTemplate Phtemplate Modelixe (modelixe.phpedit.com) Smarty (smarty.php.net)

55 PHP – Les templates (3) Solutions évoluées Cache de templates Cache de données « Language » de programmation (conditions, boucles,...) Traçage des données, déboggage

56 PHP – Les templates (4) Exemple standard {$Variable} Fichier_tpl.tpl <?php $tplObj = new Template(); $tplObj->assign («Variable », « Test » ); $tplObj->display («fichier_tpl.tpl » ); ?> Page.php Test Page résultante

57 PHP – Php.ini Role Il est possible de paramétrer de nombreux aspect de Php au travers du fichier php.ini Paramètres Magic_quotes_gpc (on) Ajout automatique de slashes devant les caractères spéciaux Sql short_open_tag (on) Permet l'emploi de <? au même titre que <?php output_buffering (4096) Permet de bufferiser la sortie Php. Une sortie bufferisée permet de définir des informations d'en tête après avoir écrit des informations dans le corps.

58 PHP – Php.ini (2) Paramètres... suite max_execution_time (30) Temps maximum d'exécution autorisé pour une page. Passé ce délais, le script est abordé. memory_limit (8M) Ressource mémoire maximale pour un script donné. error_reporting Les types d'erreurs a signaler. display_errors Faut il afficher les messages d'erreur ? register_globals (off >= 4.2.0 on <= 4.1.0) s'il faut déclarer automatiquement les variables globales GPC

59 PHP – Php.ini (3) Paramètres... et fin include_path les chemins d'inclusion à parcourir. file_uploads (on) Permission d'uploader des fichiers. upload_max_filesize (2M) Taille macimale des fichiers uploadés. session.save_path Chemin où sauvegarder les fichiers de session. session.autostart (off) démarrage automatique des sessions mysql.allow_persistent (1) Autorisation de créer des connexions persistentes.

60 PHP – >= 4.1.0 La version 4.1.0 de Php intègre plusieurs variables implicitement globales (destinées à remplacer les variables désormais obsolètes $HTTP_X_VARS) _SESSION (variables de session) _GET (variables get) _POST (variables post) _REQUEST (rassemblement de post + get + cookie) _COOKIE (données provenant des cookies) _SERVER (contient les variables serveur (ex: REMOTE_ADDR)) _ENV (variables d'environnement)

61 Sites sur PHP www.php.net : le site officiel de php. Très utile pour la documentation en ligne (en anglais, français…) www.zend.com : le site de la société à l'origine de la refonte du moteur de PHP4. www.phpinfo.net : site d'information avec de nombreux tutoriaux/scripts et un forum très actif (français) www.phpindex.com : autre site d'information (français) www.phpbuilder.com : site d'information avec de nombreux tutoriaux et scripts (anglais) www.allhtml.com: portail dédié aux webmasters traitant tout les langages : HTML, PHP, javascript etc… (français) dev.nexen.net : manuels en français PHP et MySQL

62 PHP – Vers la version 5 La version 5 de Php, en cours d'élaboration, sera basé sur la ZendEngine 2 et verra naitre nombres d'évolutions. Support plus avancé de l'objet. Constructeurs / Destructeur Passage par référence automatique des objets Différentiation de la casse (systématique) Gestion des exceptions


Télécharger ppt "PHP - MySQL ● Animateur – Jean-Marc Vanel – Consultant Logiciels libres, Java & XML – – Site: ●"

Présentations similaires


Annonces Google