CM09 PHP
Télécharger le CM09 PHP en pdf
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
Page 1 : Programmation WebLe Langage PHPMussab ZneikaCY-TechDéveloppement Web – INFO4
Page 2 : 2Introduction à PHP www.php.net
Page 3 : 3Introduction à PHP PHPestunlangagedescriptcôtéserveur.LesscriptsPHPsontexécutéssurleserveur.PHPsupportedenombreusesbasesdedonnéesMySQL,Informix,Oracle,Sybase,Solid,PostgreSQL,GenericODBC,etc..PHPestunlogicielopensource.PHPestgratuitàtéléchargeretàutiliser.
Page 4 : 4Introduction à PHP PHPfonctionnesurdifférentesplateformesWindows, Linux, Unix, etc..PHP est compatible avec presque tous les serveursutilisés aujourd'hui Apache, IIS, etc..PHP est téléchargeable GRATUITEMENT à partir dela ressource PHP officielle : www.php.net.PHPestfacileàapprendreetfonctionneefficacement côté serveur.
Page 5 : 5Introduction à PHP Le code PHP est exécuté sur le serveur, générant duHTML qui est ensuite envoyé au client.Le client recevrait les résultats de l'exécution de cescript, mais ne saurait pas quel était le code sous-jacent.
Page 6 : 6Introduction à PHP 6ClientBase de données MySQLServeurScript PHPinternetrequêteréponseDocument HtmlExtraction des donnéesRéception des donnéesConstitution du document htmlPréparation de la réponseLancement de l’interpretteur php
Page 7 : 7Introduction à PHP Sous Windows, vous pouvez télécharger et installer WAMP. Avec uneseule installation, vous obtenez un serveur Web Apache, un serveur debase de données et php.http://www.wampserver.comSur Mac, vous pouvez télécharger et installer MAMP.http://www.mamp.info/en/index.htmlSur Linux.https://doc.ubuntu-fr.org/phpAu terminal taper php -S localhost:8080 pour lancer le script phpAu navigateur taper localhost:8080/leNomDeLaPage.phpPar exemple : localhost:8080/bonjour.php
Page 8 : 8Intégration d’un script PHP dans une pageLes pages web sont au format html.Les pages web dynamiques générées avec PHP sontau format php et doit enregistrer avec l'extension .phpLe code source php est directement insérer dans lefichier html grâce au conteneur de la norme XML :?php … ?Autres syntaxes d’intégration :? … ?script language=‘’php’’ … /script …
Page 9 : 9Intégration d’un script PHP dans une pageExemple de script, code source côté serveur :htmlbodyh1Mon premier script/h1?php echo ‘’Bonjour le monde \n’’; ?/body/htmlRésultat affiché par le navigateur :Code source côté client
Page 10 : 10Affichage de texte echo : écriture le paramètre dans le navigateurhtmlheadtitle?phpecho “title”;?/title/headbody?phpecho “pBonjour le monde !/p”;?/body/htmlprint : écriture dans le navigateurprintfformat, arg1, arg2 : écriture formatée commeen C, i.e. la chaîne de caractère est constante et contientle format d’affichage des variables passées en argument
Page 11 : 11CommentairesEn PHP, on utilise // pour faire un commentaire sur uneseule ligne ou / et / pour faire un gros bloc decommentaire.Exemple :?php// commentaire de fin de ligne/ commentaire sur plusieurs lignes /… commentaire de fin de ligne comme en Shell?
Page 12 : 12VariablesLes variables sont utilisées pour stocker des valeurs,comme des chaînes de texte, des nombres ou destableaux.Le typage des variables est implicite en php. Il n’estdonc pas nécessaire de déclarer leur type au préalableni même de les initialiser avant leur utilisation.Toutes les variables en PHP commencent par unsymbole .La bonne façon de déclarer une variable en PHP :
Page 13 : 13VariablesUn nom de variable doit commencer par une lettre ou un trait de soulignement ""-- pas un nombre.Un nom de variable ne peut contenir que des caractères alphanumériques, destraits de soulignement a-z, A-Z, 0-9 et .Un nom de variable ne doit pas contenir d'espaces.Les variables peuvent être de type entier integer, réel double, chaîne decaractères string, tableau array, objet object, booléen boolean.Il est possible de convertir une variable en un type primitif grâce au cast commeen C.Exemple :str = ’’12’’;// str vaut la chaîne ‘’12’’nbr = intstr;// nbr vaut le nombre 12Le cast est une conversion de type. L’action de caster consiste en convertir unevariable d’un type à un autre.
Page 14 : 14Gestion des variablesQuelques fonctions :emptyvar : renvoie vrai si la variable est videissetvar : renvoie vrai si la variable existeunsetvar : détruit une variablegettypevar : retourne le type de la variablesettypevar, ’’type’’ : convertit la variable en type type castislong,isdouble,isstring,isarray,isobject,isbool, isfloat, isnumeric, isinteger, isint…intvalval,base:retournelavaleurnumériqueentièreéquivalente d'une variable.Strvalval: retourne la valeur d'une variable, au format chaîne.Boolvaval retourne la valeur booléenne d'une variable.floatval val:Convertit une chaîne en nombre à virgule flottanteet beaucoup plus: : https://www.php.net/manual/fr/ref.var.php
Page 15 : 15Gestion des variablesExemple:var = 5.55;var2 = strvalvar; // '5.55’var3 = intvalvar; // 5var4 = boolvalvar; // truevar5 = floatvalvar;// 5.55echo gettypevar; // doublesettype var, "integer" ;echo var; // 5echo gettypevar;// integer
Page 16 : 16Concaténation PHP L'opérateur de concaténation . est utilisé pour assemblerdeux valeurs de chaîne.Pour concaténer deux variables de chaîne ensemble,utilisez l'opérateur de concaténation :?phpvar1 = "Mussab";var2 = "Zneika";Prenomnom=var1." ".var2;echo Prenomnom; // Mussab Zneika?
Page 17 : 17Les opérateurs Les opérateurs Mode +, -, , /, Actes numériques , &&, !Actes logiques ==, !=, , , =, =Comparaison ++, --Augmentation, diminution .concaténation=, +=, -=, =, /=, =Affectation
Page 18 : 18Les opérateurs codeRésultat 3 + 582 - 9-71 / 20.55 735102 52true falsetrue!truefalsetrue && truetrue3 5true3 != 3false“Hello “ . ‘, world!’Hello, world!
Page 19 : 19Structures de contrôle: if…else Trèssouvent,lorsquevousécrivezducode,voussouhaitez effectuer différentes actions pour différentesdécisions.Vous pouvez utiliser des instructions conditionnelles dansvotre code pour ce faire.En PHP, nous avons les instructions conditionnellessuivantes:if : exécuter du code uniquement si la condition est vraie if...else: exécuter un code si une condition est vraie et un autre code si la condition est fausse if...elseif....else: utilisez cette instruction à envoyer pour élire l'un des plusieurs blocs de code à exécuter .
Page 20 : 20Structures de contrôle: if…else Exemple1 Cet exemple affichera pas passéa = "10";if a 10 echo "passes";else echo "échoué" ;Cet exemple affichera échoué
Page 21 : 21Structures de contrôle: if…else Exemple2if0 echo 1;// fauxif"" echo 2; // fauxif"0" echo 3; // fauxif"00" echo 4;if'0' echo 5; // fauxif'00' echo 6;if" " echo 7;Cet exemple affiche 467. Donc l’espace ou la chaîne ‘’00’’ ne sont pas considérés FALSE.
Page 22 : 22Structures de contrôle: switchUtilisez l'instruction switch pour sélectionner l'un desnombreux blocs de code à exécuter.switch var case valeur1:traitement1break;case valeur2:traitement2 break;...default:….
Page 23 : 23Structures de contrôle: switchExemplea=10;switch a case 5:echo “a is 5”;break;case 10:echo “a is 10”;break;case 15:echo “a is 15”;break;default:echo “a is neither 5, nor 10, nor 15”;Cet exemple affichera a is 10
Page 24 : 24Structures de contrôle: bouclefor, while, do,whileStructures de boucle même syntaxe qu’en langage C :• for … ; … ; … •…• • while … •…• • do •…• while … ;
Page 25 : 25Structures de contrôle : breakSyntaxe comme en C, C++, Java… Peut apparaître dans l'un des contrôles suivants :for, while, do… while, switchIl arrête le flux et continue immédiatement aprèsPlus de répétitions après break?php fori=0;i6;i++ ifi==4 break; echo i."br"; echo "i after the for ". i."br";?phpLe Résultat
Page 26 : 26Structures de contrôle : continueSyntaxe comme en C, C++, Java… Peut apparaître dans l'un des contrôles suivants :for, while, do… whileIl arrête le flux et continue de vérifier la condition.D'autres répétitions peuvent se produire après continue.?php fori=0;i6;i++ ifi==4 continue; echo i."br"; echo "i after the for ". i."br";?phpLe Résultat
Page 27 : 27FonctionsComme tout langage de programmation, php permet l’écriture de fonctions. Les fonctions peuvent prendre des arguments dont il n’est pas besoin de spécifier le type. Elles peuvent de façon optionnelle retourner une valeur.L’appel à une fonction peut ne pas respecter son prototypage nombre de paramètres. Les identificateurs de fonctions sont insensibles à la casse.Exemple :function mafonctiontoto toto += 15;echo ‘’Salut !’’;return toto+10;nbr = MaFonction15.1;/ retourne 15.1+15+10=40.1, les majuscules n’ont pas d’importance /
Page 28 : 28FonctionsExemple 1: Fonction de calcul de la moyenne de deux nombres function avg a, b c = a + b;return c / 2;echo ‘The average of 3, 5: ‘ . avg 3, 5 ;echo “\n”;echo ‘The average of 1, 9: ‘ . avg 1, 9 ;
Page 29 : 29FonctionsExemple 2: Fonction pour tester si le nombre est premier ou non ..function isprime a for i = 2; i a; ++i if a i == 0 return false;return true;if isprime 5 echo “5 is a prime number.”;
Page 30 : 30Fonctionsfunction makeCoffee type = "frappe", milk = true str = "Making a cup Coffe of type ".type;if milk str = str." with milk";str .= ".\n";return str;echo makeCoffee "Arabic" ;Tous les arguments sont optionnels On peut donner une valeur par défaut aux arguments lors de la déclarationde la fonction.Cet exemple affichera Making a cup Coffe of type Arabic with milk.
Page 31 : 31Fonctionsfunction makeCoffee type = "frappe", milk str = "Making a cup Coffe of type ".type;if milk str = str." with milk";str .= ".\n";return str;echo makeCoffee "Arabic" ;Valeurs par défaut uniquement pour les derniers argumentsCet exemple affichera rien.
Page 32 : 32Fonctions: la portée des variables On peut modifier la portée des variables locales à une fonction.globalpermetde travaillersur une variable deportéeglobaleauprogramme.Example 1:a = 5;echo a."br";function tataa=10;echo a."br";tata;echo a;Example 2:a = 5;echo a."br";function tataglobal a;a=10;echo a."br";tata;echo a;
Page 33 : 33Fonctions: la portée des variables static permet de conserver la valeur d’une variable locale à une fonctionExample :function tatastatic a=0;a=a+5;echo a."br";tata;//5tata;//10tata;//15
Page 34 : 34Fonctions:Mathématiques • Quelques fonctions:• absx : valeur absolue• ceilx : arrondi supérieur• floorx : arrondi inférieur• powx,y : x exposant y• roundx,i : arrondi de x à la ième décimale• maxa, b, c … : retourne l’argument de valeur maximum• pi : retourne la valeur de Pi• cos, sin, tan, exp, log, min, pi, sqrt…• randx,y : valeur entière aléatoire entre 0 et RANDMAX si x et y ne sont pas définis, entre x et RANDMAX si seul x est défini, entre x et y si ces deux paramètres sont définis.• srand : initialisation du générateur aléatoire• getrandmax : retourne la valeur du plus grand entier pouvant être généré
Page 35 : 35Fonctions:Mathématiques Exemple 1?phpvar=35.78910897;x=10; y=20; z=10;echo floor1.9 ."br"; // 1echo ceil1.9 ."br"; // 2echo ceil1.3 ."br"; // 2echo round1.9."br";// 2echo floorvar."br";//35echo ceilvar ."br"; // 36echo roundvar,1."br";//35.8echo roundvar,2."br";//35.79echo maxx,y,z."br"; //20echo minx,y,z."br"; //10echo absx."br"; //10echo abs-x."br"; //10?php
Page 36 : 36Fonctions:Mathématiques Exemple 2?phpecho rand . "br";Echo rand10,50."br";echo getrandmax; //2147483647?php
Page 37 : 37Fonctions:String • Quelques fonctions:• strlenstr : retourne le nombre de caractères d’une chaîne• strtolowerstr : conversion en minuscules• strtoupperstr : conversion en majuscules• trimstr : suppression des espaces de début et de fin de chaîne.• strrevstr: Inverser une chaîne • substrstr,i,j : retourne une sous chaîne de str de taille j et débutant à la position i• strnatcmpstr1,str2 : comparaison de 2 chaînes • addslashesstr : déspécialise les caractères spéciaux ‘, ‘’, \• ordchar : retourne la valeur ASCII du caractère char.• strreplacestr1,str2,str3,count: remplacer str 1 par str2 dans str3• explodeséparateur, str: retourne un tableau de chaînes de caractères, chacune d'elle étant une sous-chaîne du paramètre string extraite en utilisant le séparateur séparateur.• Plus : https://www.php.net/manual/fr/ref.strings.php
Page 38 : 38Fonctions:String Exemple 1?phpnom="Mussab Zneika";echo strlennom ."br"; //13nomupper=strtouppernom;echo nom."br"; //Mussab Zneikaecho nomupper."br";//MUSSAB ZNEIKAnomlow=strtolowernom;echo nom."br"; //Mussab Zneikaecho nomlow."br";//mussab zneikaifstrnatcmpnomupper,nomlow//yes echo "yes"; ifnomupper==nomlow//No echo "yes"; else echo "No"; ?php
Page 39 : 39Fonctions : String Exemple 2?phpcount=0;echo strreplace"world","Mussab","Hello world world!",count ."br";//Hello Mussab Mussab!echo count ."br";//2echo strrepeat"cergy ",5."br"; // cergy cergy cergy cergy cergy printr explode" ","CY Cergy Paris Université en chiffres";//Array 0 = CY 1 = Cergy 2 = Paris 3 = Université 4 = en 5 = chiffres echo ord'A' ."br"; // 65echo ord'a' ."br"; // 97echo chr65."br";// A?php
Page 40 : 40Exercise 1Ecrivez une fonction PHP qui vérifie si une chaîne descaractèrespasséenecontientquelescaractèresalphabétiques est palindrome ou non ?Remarque : Un palindrome est un mot, une phrase ou uneséquence qui se lit de la même manière que l'avant, parexemple, radar , rotor ou stats .Fonctions : String
Page 41 : 41Exercise 1: solutionfunction palindromestr1str1=strreplace" ","",str1;str1=strtolowerstr1;str2=strrevstr1;ifstr1==str2echo str1." est un palindromebr";else echo str1.' n\'est pas un palindromebr’;palindrome"radar"; // radar est un palindromepalindrome"a Laval elle lavala"; // alavalellelavala est un palindromePHPFonctions : String
Page 42 : 42Fonctions:header Il est possible d’envoyer des entêtes particuliers du protocole HTTPgrâce à la fonction header.Syntaxe : headerstr;Les entêtes doivent obligatoirement être envoyées avant l’affichagede tout caractère dans la page en cours. Car l’affichage forcel’envoi des entêtes de base.headerssent : Retourne TRUE si les entêtes ont déjà étéenvoyées, FALSE sinon.Exemple:• header"Location: http://www.example.com/"; / Redirectiondu navigateur /• header 'Content-type: text/html; charset=utf-8‘ =metahttp-equiv=“Content-type”content=“text/html; charset=utf-8”/
Page 43 : 43Tableaux Une variable tableau est de type array. Un tableau accepte des éléments de tout type. Les éléments d’un tableau peuvent être de types différents et sont séparés d’une virgule. Un tableau peut être initialisé avec la syntaxe array.• Exemple :• tabcolors = array‘red’, ’yellow’, ’blue’, ‘white’;Mais il peut aussi être initialisé au fur et à mesure.• Exemples :• prenoms = "Mussab"; villes0 = "Paris";• prenoms = "Wassim"; villes1 = "Cergy";• prenoms = "Marc"; villes2 = "Madrid";Redyellowbluewhite0123Valeursindex
Page 44 : 44Tableaux L’appel d’un élément du tableau se fait à partir de son indice dont l’origine est zéro comme en C.Exemple :toto = array 0 = 1, 1 = ‘tata’ ;echo toto 0 ; // 1echo toto 1 ; // tatafoo = array 0 = 1, ‘bar’ ;echo foo 0 ; // 1echo foo 1 ; // bar
Page 45 : 45Tableaux Parcours d’un tableau. : For, while, do.. while• tab = array"Mussab", "Marc", "Juilan";Exemple 1 :i=0;whilei counttab // count retourne le nombre d’élémentsecho tabi."br";i++;Exemple 2 :fori=0;icounttab; i++ echo tabi."br";Parcours d’un tableau. : foreach• tab = array"Mussab", "Marc", "Juilan";Exemple :foreachtab as elem echo elem. "br";
Page 46 : 46Tableaux Quelques fonctions:counttab, sizeof : retournent le nombre d’éléments du tableauinarrayvar,tab : dit si la valeur de var existe dans le tableau tablistvar1,var2… : transforme une liste de variables en tableaurangei,j : retourne un tableau contenant un intervalle de valeursshuffletab : mélange les éléments d’un tableausorttab : trie alphanumérique les éléments du tableaursorttab : trie alphanumérique inverse les éléments du tableauimplodestr,tab, join : retournent une chaîne de caractères contenant les éléments du tableau tab joints par la chaîne de jointure strexplodedelim,str : retourne un tableau dont les éléments résultent du hachage de la chaîne str par le délimiteur delimarraymergetab1,tab2,tab3… : concatène les tableaux passés en argumentsarrayrandtab : retourne un élément du tableau au hasard
Page 47 : 47Tableaux Quelques fonctions:counttab, sizeof : retournent le nombre d’éléments du tableauinarrayvar,tab : dit si la valeur de var existe dans le tableau tablistvar1,var2… : transforme une liste de variables en tableaurangei,j : retourne un tableau contenant un intervalle de valeursshuffletab : mélange les éléments d’un tableausorttab : trie alphanumérique les éléments du tableaursorttab : trie alphanumérique inverse les éléments du tableauimplodestr,tab, join : retournent une chaîne de caractères contenant les éléments du tableau tab joints par la chaîne de jointure strexplodedelim,str : retourne un tableau dont les éléments résultent du hachage de la chaîne str par le délimiteur delimarraymergetab1,tab2,tab3… : concatène les tableaux passés en arguments
Page 48 : 48Tableaux Quelques fonctions:arraypushtab, e1,e1.. : ajoute les éléments e1, e2, ... a la fin du tableau.arraypoptab: retourne le dernier élément du tableau et le supprimer du tableau.arrayshiftab: dépile un élément au début d'un tableau.arrayunshifttab, e1,e1.. empile un ou plusieurs éléments e1, e2,.. au début d'un tableau.arrayfliptab: remplace les clés par les valeurs, et les valeurs par les clés.arrayreversetab, bool: Inverse l'ordre des éléments d'un tableau.slicetab ,begin,length,bool: retourner un nouveau tableau constitue d'une sous-partie d'un tableau existant.arraysplicetab1, begin,length,tab:Supprime des éléments d'un tableau et remplacez-le par de nouveaux éléments :
Page 49 : 49Example 1Ajouter des éléments dans un tableau push,unshift:Tableaux?phpprenoms=array'Mussab', 'Marc','julian','Naya’;//On ajoute les valeurs Sarra et Francia en fin de tableauarraypushprenoms, 'Sarra', ' Francia'; //On ajoute deux éléments en début de tableau arrayunshiftprenoms,'Flora', 'claire’;//On affiche les valeurs de notre tableau p ="";fori = 0; i countprenoms; i++ p .= 'Prénom n' . i . ' : ' . prenomsi .'br'; //On affiche la taille du tableau et les prénomsecho 'Le tableau contient ' .countprenoms.' éléments : br' .p;?PHPLe Résultat
Page 50 : 50Example 2Supprimer des éléments dans un tableaupop,shift:Tableaux?phpprenoms=array'Mussab','Marc','julian','Naya’;//On supprime le premier prénom du tableausupprp = arrayshiftprenoms;// On supprime le dernière prénom du tableau supprd = arraypopprenoms;//On récupère les valeurs de notre tableaup ="";fori = 0; i countprenoms; i++ p .='Prénom n' . i+1 . ' : ' . prenomsi .'br'; //On affiche la taille du tableau et les prénoms echo 'Nouveau tableau :br'. p. 'br Prénom supprimé : br'.supprp . 'br'.supprd ;?PHPLe Résultat
Page 51 : 51Example 3Ajouter des éléments choisis dans un tableauspliceTableaux?phpprenoms=array'Mussab', 'Marc','julian','Naya’;tab2=array'Claire', 'Anne’;//On ajoute les valeurs Claire et Anne à partir de l'index 2 arrayspliceprenoms,2, 0,tab2 ; p ="";//On affiche les valeurs de notre tableau fori = 0; i countprenoms; i++ p .= 'Prénom n' . i+1 . ' : ' . prenomsi .'br'; //On affiche la taille du tableau et les prénoms echo 'Le tableau contient ' .countprenoms.' éléments : br' .p;?PHPLe Résultat
Page 52 : 52Example 4Supprimer des éléments choisis dans un tableauSpliceTableaux?phpprenoms=array'Mussab','Marc','julian','Naya’;//On supprime deux valeurs à partir de l'index 2arrayspliceprenoms,2, 2 ;p ="";//On récupère les valeurs de notre tableau fori = 0; i countprenoms; i++ p .= 'Prénom n' . i+1 . ' : ' .prenomsi . 'br'; //On affiche la taille du tableau et les prénoms echo 'Le tableau contient '.countprenoms.' éléments : br' .p;?phpLe Résultat
Page 53 : 53Example 5 Trier les éléments d’un tableausortTableaux?phpprenoms=array'Mussab', 'Marc','julian','Naya','anne’;//On trie le tableaux dans l'ordre alphabétique sortprenoms ;//On récupère les valeurs de notre tableau p ="";fori = 0; i countprenoms; i++ p .= 'Prénom n' . i+1 . ' : ' . prenomsi. 'br’; //On affiche la taille du tableau et les prénoms echo 'Le tableau contient ' .countprenoms.' éléments : br' .p;?PHPLe Résultat
Page 54 : 54Example 6Trier les éléments d’un tableausortTableaux?phpnums=array10,20,3, 30,4, 1,35,98;sortnums;fori = 0; i countnums; i++ echo numsi." , \t"; ?phpLe Résultat1 , 3 , 4 , 10 , 20 , 30 , 35 , 98 ,?phpnums=array10,20,3, 30,4, 1,35,98;rsortnums;fori = 0; i countnums; i++ echo numsi." , \t"; ?phpLe Résultat98 , 35 , 30 , 20 , 10 , 4 , 3 , 1
Page 55 : 55Exercise 2Ecrire une fonction php qui prend comme paramètres un tableau "tab" et une variable "v" et renvoie true si v dans tab et false sinon Tableaux
Page 56 : 56Exercise 2: solution?phpnums=array10,20,3, 30,4, 1,35,98;function searcheArraytab,v fori=0;icounttab;i++ iftabi==vreturn true; return false;echo searcheArraynums,100;// echo inarray1,nums?PHPTableaux
Page 57 : 57Exercise 3Ecrivez une fonction PHP totostr qui prend une chaîne des caractères en paramètre ne contient que les caractères alphabétiques et convertir la première lettre de chaque mot en majuscule et les autres lettres en minuscule. Testez cela avec : toto "wELCome mUssAB ZneIKA ";Doit afficher : Welcome Mussab ZneikaTableaux
Page 58 : 58Exercise 3: solution?phpfunction totostr1 str1=trimstr1;str2= strtolowerstr1;res="";s=explode" ",str2;foreach s as elmres=res.strtoupperelm0;res=res.substrelm,1, strlenelm;res=res. " ";return res;echo toto"wELCome mUssAB ZneIKA"; ?PHPTableaux
Page 59 : 59Tableaux AssociatifUn tableau associatif est appelé aussi dictionnaire ou hashtable. On associe à chacun de ses éléments une clé dont la valeur est de type chaîne de caractères.L’initialisation d’un tableau associatif est similaire à celle d’un tableau normal.Exemple 1 : personne = array‘’Nom’’ = ‘Zneika’’, ‘’Prénom’’ = ‘Mussab’’;Exemple 2 :personne‘’Nom’’ = ‘Zneika’’;personne‘’Prénom’’ = ‘Mussab’’;
Page 60 : 60Tableaux AssociatifParcours d’un tableau associatif.• personne = array‘’Nom’’ = ‘Zneika’’, ‘’Prénom’’ = ‘Mussab’’;Exemple 1 :foreachpersonne as elem echo elem;Exemple 2 :foreachpersonne as key = elem echo ‘’key : elem’’;• Quelques fonctions alternatives pour le parcours de tableaux normaux ou associatifs :• resettab : place le pointeur sur le premier élément• currenttab : retourne la valeur de l’élément courant• nexttab : place le pointeur sur l’élément suivant• prevtab : place le pointeur sur l’élément précédant• eachtab : retourne la paire clé/valeur courante et avance le pointeur
Page 61 : 61Tableaux AssociatifExemple ?phpfamille = array"pere" ='robisson', "mere"='gilda',"soeur"='Laurence', "frere" = 'Ludovic', "cousin1" ='Guillaume',0=50 ;foreach famille as elm echo elm."br"; foreach famille as key =elm echo "key = elm.br"; ?php
Page 62 : 62Tableaux multidimensionnels Aussi simple qu'un tableau dans un tableau pour créer une matrice de 33 on peut écrire toto = arrayarray 1, 2, 3 ,array 4, 5, 6 ,array 7, 8, 9 ;Accéder aux éléments de Matrix echo toto 1 2 ; // 6echo toto 2 0 ; // 7Parcours d’un tableauforeach toto as row foreach row as element echo "element ";echo "br";
Page 63 : 63Les FormulairesPour obtenir des données à partir de HTTP GET :Variable GET GET "nomparamètre"Pour obtenir des données à partir de HTTP POST :Variable POST POST "nomparamètre"Défini automatiquement par PHP
Page 64 : 64Les Formulaires: Exemple1center h1 Login Form /h1 /centerform action="Page1.php" method="GET" divclass="container"labelUsername : /label input type="text"placeholder="Enter Username" name="username"requiredlabelPassword : /label inputtype="password" placeholder="Enter Password"name="password" requiredbutton type="submit"Login/button /div/formHtmlPage1.htmlLe Résultat?phpx=GET "username"; ifx=="Mussab"echo "Welcom x";elseheader"Location:HtmlPage1.html";?page1.php
Page 65 : 65Les Formulaires: Exemple2center h1 Login Form /h1 /centerform action="Page1.php" method="POST" divclass="container"labelUsername : /label input type="text"placeholder="Enter Username" name="username"requiredlabelPassword : /label inputtype="password" placeholder="Enter Password"name="password" requiredbutton type="submit"Login/button /div/formHtmlPage1.htmlLe Résultat?phpx=POST "username"; ifx=="Mussab"echo "Welcom x";elseheader"Location:HtmlPage1.html";?page1.php
Page 66 : 66Les Formulaires: Exemple 3form action="Page1.php" method="POST" divclass="container"h2Que signifie HTML ?/h2input type="radio" name="ans" value="ans1" a. Et hyperliens texte Markup Languagebr input type="radio" name="ans" value="ans2"b. Hyper Text Markup Language brinput type="radio" name="ans" value="ans3"c. Langage de manipulation hypertextebrinput type="radio" name="ans" value="ans4"d. Langage de balisage de l' outil d'accueilbrbutton type="submit"Login/button /div/formHtmlPage1.htmlLe Résultat?phpx=POST"ans";ifx=="ans2"echo "Bravo";elseecho "no";?page1.php
Page 67 : 67Les Formulaires: Exemple 4?phpx="mussab";header"Location: page1.php?id=5&name=x" ;?HtmlPage1.phpLe Résultat?phpid=GET"id";name=GET"name";echo "id: name";?page1.php
Page 68 : 68Inclusions des fichiersOn peut inclure dans un script php le contenu d’un autre fichier.require insert dans le code le contenu du fichier spécifié même si ce n’est pas du code php. Est équivalent au préprocesseur includedu C.Exemple :require"fichier.php";include évalue et insert à chaque appel même dans une boucle le contenu du fichier passé en argument.Exemple : include"fichier.php";Les instructions include et require sont identiques, sauf en cas d'échec : require produira une erreur fatale ECOMPILEERROR et arrêtera le script include ne produira qu'un avertissement EWARNING et le script continuera • includeonce, requireonce
Page 69 : 69Inclusions des fichiers?phpinclude"page1.php";?HtmlPage1.phpLe Résultat?phpecho "Welcome to our page www.example.com, date : ". date"Y-m-d H:i:s";?page1.php
Page 70 : 70Inclusions des fichiers : Exemple 2 ?phprequire"page1.php";?HtmlPage1.phpLe Résultat?phpecho "Welcome to our page www.example.com, date : ". date"Y-m-d H:i:s";?page1.php
Page 71 : 71Cookies Un cookie est un fichier que le serveur envoi sur la machine de l'utilisateurIls sont principalement utilisés pour distinguer les utilisateursIl s'agit d'une liste de correspondances clé valeurIls ont une date d'expirationIls sont stockés sur l'ordinateur de l'utilisateurIls sont envoyés à chaque demandeDifférents cookies pour différents domainesIls sont précieux ! Si quelqu'un te les vole alors ça devient toi
Page 72 : 72Cookies Salut! Pour, rappelez-vous que vous êtes un administrateur je suis un administrateurD'accord, fais ce que tu veux admin72
Page 73 : 73Cookies Ils sont transférés dans les en-têtes de requêtePour définir un cookie pour un utilisateur, nous faisons :setcookie nom , valeur, expirerLa fonction setcookie doit être placé avant tout code HTML, car lecache du navigateur doit être vide pour que cette fonctionfonctionne convenablementExemple:setcookie"nomcookie", "mussab", time+36000;time : renvoie l'heure au format d'horodatage UnixExpire apres 3600 secondes à partir de maintenant
Page 74 : 74Cookies Ils sont situés dans la variable COOKIEIl a les clés des noms des cookiesIl a les valeurs des cookiesPour supprimer les cookies il suffit de définir le cookie avec expirerdans le passé: Exemple:setcookie"nomcookie", "mussab", time-36000;Afficher un cookie: echo COOKIE" nomcookie ";Afficher tous les cookies: printrCOOKIE;
Page 75 : 75Cookies Exemple ?phpsetcookie"user","mussab", time+6060;?html head /head body?phpifissetCOOKIE"user" echo "Welcome". COOKIE"user"; ?/body /htmlPage1.php
Page 76 : 76Sessions Les sessions sont un moyen de sauvegarder et de modifier des variablestout au cours de la visite d’un internaute sans qu’elles ne soient visiblesdans l’URL et quelque soient leurs types tableau, objet….Cette méthode permet de sécuriser un site, d’espionner le visiteur, desauvegarder son panier e-commerce, etc.Les informations de sessions sont conservées en local sur le serveurtandis qu’un identifiant de session est posté sous la forme d’un cookiechez le client ou via l’URL si le client refuse les cookies.
Page 77 : 77Sessions Fonction sessionstart Démarre une session ou restaure la précédente si l'utilisateur aenvoyé un ID de session valideParce qu'il définit un cookie, nous l'appelons avant toute sortieVariable SESSIONNous l'utilisons après avoir appelé sessionstartLes variables sont stockées et seront disponibles dans les demandesfutures avec le même ID de session
Page 78 : 78Sessions Quelques fonctions :sessionstart : démarre une session.sessiondestroy : détruit les données de session et ferme la session. Cette fonction ne détruit pas les variables globales associées à la session, de même, elle ne détruit pas le cookie de session.sessionunset : détruit toutes les variables de la session courante.sessionid: récupérer ou définir l'identifiant de session pour la session courante. sessionstatus: pour connaître l'état de la session courante.PHPSESSIONDISABLED si les sessions sont désactivées.PHPSESSIONNONE si les sessions sont activées, mais qu'aucune n'existe.PHPSESSIONACTIVE si les sessions sont activées, et qu'une existe.
Page 79 : 79Sessions Sauvegarder des variables de type objet dans une session est la méthode de sécurisation maximum des données : elles n’apparaîtront pas dans l’URL et ne pourront pas être forcées par un passage manuel d’arguments au script dans la barre d’adresse du navigateur.Les données de session étant sauvegardées sur le serveur, l’accès aux pages n’est pas ralenti même si des données volumineuses sont stockées.Une session est automatiquement fermée si aucune requête n’a été envoyée au serveur par le client durant un certain temps 2 heures par défaut dans les fichiers de configuration Apache.Une session est un moyen simple de suivre un internaute de page en page sans qu’il s‘en rende compte. On peut ainsi sauvegarder son parcours, établir son profil et établir des statistiques précises sur la fréquentation du site, la visibilité de certaines pages, l’efficacité du système de navigation…
Page 80 : 80Sessions Exemple ?phpsessionstart;if isset SESSION"pageviews" ?pVous avez vu la page ?php echo SESSION "pageviews"; ?fois /p?php ++SESSION"pageviews" ; else SESSION"pageviews" = 1; ?Page1.php
Page 81 : 81Arrêt prématuré • Pour stopper prématurément un script, il existe deux fonctions.• die arrête un script et affiche un message d’erreur dans le navigateur.• Exemple :• ifmysqlqueryrequette == false• die‘’Erreur de base de données à la requête : br /requet’’;• exit l’arrête aussi mais sans afficher de message d’erreur.• Exemple :• function foobar •exit;• • Ces fonctions stoppent tout le script, pas seulement le bloc en cours.
Page 82 : 82Gestion de Fichiers De nombreuses applications travaillent avec des fichiers. Que ce soit pour les lire, les remplir, les supprimer ou même changer leurs attributs.L’accès aux fichiers locaux est très rapide. Si vous avez peu de traitements et de tris à faire sur le contenu, il est généralement plus performant d’utiliser des fichiers qu’une base de données.Gestion des fichiers Stockage de donnéesBien que plus lent qu'une base de données Manipulation des fichiers uploadés À partir de formulaires Création de fichiers à télécharger
Page 83 : 83Gestion de Fichiers Lecture et écriture: Ouvrir/fermer un fichier fopen : ouvre un fichier en tant que « flux », et PHP renvoie un « gestionnaire » vers le fichier qui peut être utilisé pour référencer le fichier ouvert dans d'autres fonctions.Chaque fichier est ouvert dans un mode particulier.fclose : ferme le fichier. ‘r’Ouvert en lecture seulement. Commencer au début du fichier.‘r+’Ouvert à la lecture et à l'écriture.Commencer au début du fichier.‘w’Ouvert à l'écriture uniquement. Supprimez tout le contenu précédent, si le fichier n'existe pas, créez-le. ‘a’Ouvrir l'écriture, mais commencer à la FIN du contenu actuel. ‘a+’Ouvrez pour la lecture et l'écriture, commencez à FIN et créez un fichier si nécessaire.
Page 84 : 84Gestion de Fichiers Lecture et écriture: Ouvrir/fermer un fichier Exemple?php// ouvrir le fichier à lire inp = fopen‘some/file.ext’,’r’;// ouvrir le fichier à écrire out = fopen‘some/file.ext’,’w’;// fermer les deux fichiers fcloseinp;fcloseout;?
Page 85 : 85Gestion de Fichiers Lecture et écriture: Lecture de données Il existe deux fonctions principales pour lire les données :fgetsfp,bytes : lit jusqu'à bytes de données, s'arrête à la nouvelle ligne ou à la fin du fichierfreadfp,octets: lit jusqu'à octets de données, s'arrête à la fin du fichierfeoffp : renvoie true si nous avons atteint la fin du fichier Exemple:fp = fopen'test.txt', 'r’;while !feoffp echo fgetsfp, 1024;echo 'br /';fclosefp;
Page 86 : 86Gestion de Fichiers Lecture et écriture: Lecture de données Il existe deux fonctions « rapides » qui ne nécessitent pas l'ouverture d'un fichier :filenom de fichier: lit le fichier entier dans un tableau avec chaque ligne une entrée distincte dans le tableau.filegetcontentsfilename: lit le fichier entier en une seule chaîneExemple:?phptab = file'test.txt';fori=0 ; tabi ; i++echo tabi.'br';?Exemple:?phpcontenufichier = filegetcontents'test.txt';echo contenufichier;?
Page 87 : 87Gestion de Fichiers Lecture et écriture: Écriture de donnéesfwritefp,data : écrire des données dans un fichier Exemple:// Ouvre le fichierfp = fopen"test.txt", "w";//Insère le texte « PHP » dans le fichierfwrite fp , "PHP" ;fclosefp;
Page 88 : 88Gestion de Fichiers Lecture et écriture: Écriture de donnéesfileputcontents: une fonction d’accès rapide pour écrire dans un fichier.La fonction fileputcontents prend en paramètre une adresse de fichier et une chaîne de caractères.La chaîne est alors écrite dans le fichier. Si le fichier existait déjà, son contenu est écrasé.Il est toutefois possible de demander à ce que la chaîne en argument soit ajoutée au fichier au lieu de remplacer le contenu actuel. Il suffit alors de spécifier la constante FILEAPPEND comme troisième paramètre.Exemple:?phpfichier = 'test.txt’;contenu = 'Contenu du fichier';fileputcontentsfichier, contenu, FILEAPPEND ;?
Page 89 : 89Gestion de Fichiers Quelques fonctions:fileexistsfile : indique si le fichier file existefilesizefile : retourne la taille du fichier filefiletypefile : retourne le type du fichier fileunlinkfile : détruit le fichier filecopysource, dest : copie le fichier source vers destreadfilefile : affiche le fichier filerenameold, new : renomme le fichier old en newPlus: https://www.php.net/manual/fr/ref.filesystem.php
Page 90 : 90Gestion de Fichiers Exercise 1Ecrire une script en PHP pour lire le contenu d'un fichier texte"test.txt" ligne par ligne et afficher à l'écran le nombre de motsde ce fichier.Exemple : Si le fichier "test.txt" contient les lignes suivantes :Il y a une aire de jeuxUn avion est dans le cielLe ciel est bleuLa fonction doit afficher la sortie 17
Page 91 : 91Gestion de Fichiers Exercise 1: solution1?php// ouvrir le fichier pour lecture fp=fopen"test.txt","r";nbmots=0;//lire le fichier ligne par ligne while !feoffp line=fgetsfp; // lire une ligne line=trimline;mots=explode" ",line; //diviser le texte par un séparateur d'espace nbmots=nbmots+countmots;fclosefp;echo nbmots;?PHPCette solution est bonne s'il n'y a qu'un seul espace entre les mots
Page 92 : 92Gestion de Fichiers Exercise 1: solution2?php// ouvrir le fichier pour lecture fp=fopen"test.txt","r";nbmots=0;//lire ligne par ligne while !feoffp line=fgetsfp; // lire une ligne line=trimline;mots=explode" ",line; //diviser le texte par un séparateur d'espace foreachmots as em ifem!="" nbmots=nbmots+1;fclosefp;echo nbmots;?PHP
Page 93 : 93Gestion de Fichiers Exercise 1: solution 3?php nbmots=0;//ire le contenu complet du fichier contenufichier = filegetcontents'test.txt’;contenufichier=trimcontenufichier;//"\n" est le saut de ligne dans le fichier donc nous le remplaçons par " "contenufichier=strireplace"\n"," ",contenufichier;mots=explode" ",contenufichier;foreachmots as em //echo em."br";ifem!="" nbmots=nbmots+1;echo nbmots;?PHP
Page 94 : 94Gestion de Fichiers Exercise 2Le fichier "étudiants.txt" contient les notes des élèves du coursde programmation Web au format prénom, nom, note.Écrivez un script en PHP qui lirait le contenu du fichier"étudiants.txt" et écrirait dans un autre fichier les détails desétudiants dont la note est supérieure à 10.Exemple : étudiants.txtMussab,Zneika,20Naya, AL, 15Marc, Zet, 13Lois, Anab, 5Résultats attendus : étudiants1.txtMussab,Zneika,20Naya, AL, 15Marc, Zet, 13
Page 95 : 95Gestion de Fichiers Exercise 2: solution?php// ouvrir le fichier pour lecture fp=fopen"students.txt","r";// ouvrir le fichier pour l'écriturefpout=fopen"students1.txt","w";nb=0;//lire le fichier ligne par ligne while !feoffp student=fgetsfp; // lire une ligne tab=explode",",student;ifissettab2 iffloatvaltab2=10 fwritefpout,student;nb=nb+1; fclosefp;fclosefpout;echo nb;?PHP
Page 96 : 96Gestion de Fichiers Accès aux dossiers Il est possible de parcourir les répertoires grâce à ces quelques fonctions :chdirstr : Change le dossier courant en str. Retourne TRUE si succès, sinon FALSE.getcwd : Retourne le nom du dossier courant en format chaîne de caractères.opendirstr : Ouvre le dossier str, et récupère un pointeur d dessus si succès, FALSE sinon et génère alors une erreur PHPclosedird : Ferme le pointeur de dossier d.readdird : Renvoie le nom du fichier suivant dans le répertoire Les fichiers sont triés comme sur le système de fichierrewinddird : Retourne à la première entrée du dossier identifié par d
Page 97 : 97Gestion de Fichiers Accès aux dossiers Exemple: pour afficher les fichiers et dossiers dans le dossier actuel ?phphandle = opendir'./’;file=readdirhandle;whilefalse !== file file=readdirhandle;echo "filebr /";closedirhandle;?
Page 98 : 98Gestion de Fichiers Accès aux dossiers Il existe un autre moyen d’accéder aux dossiers : l’utilisation de la classe dir.la classe dir a les attributs :handle : valeur du pointeurpath : nom du dossierla classe dir a les méthodes :read : équivalent à readdirdclose : équivalent à closedirdConstructeur : dirstr : retourne un objet dir et ouvre le dossier str
Page 99 : 99Gestion de Fichiers Accès aux dossiers Exemple: pour afficher les fichiers et dossiers dans le dossier actuel ?phpd = dir'.'; // ouverture du dossier courantecho "Pointeur: ".d-handle."br";echo "Chemin: ".d-path."br";whilefp = d-read // lecture d’une entréeecho fp."br";d-close;?
Page 100 : 100Gestion de Fichiers Manipulation des fichiers uploadésIls sont envoyés au serveur avec une requête POSTIls sont stockés temporairement pendant l'exécution de notre programmeSi nous ne les sauvegardons pas, ils sont perdus après la fin de l'exécution
Page 101 : 101Gestion de Fichiers Manipulation des fichiers uploadés• Variable FILES: contient tous les fichiers téléchargés par l'utilisateur • userfile est le nom du champ de fichier des formulaires FILES ‘userfile’ ‘name’: contient le nom réel du fichier FILES ‘userfile’ ‘tmpname’: contient la localisation du fichier temporaire FILES ‘userfile’ ‘size’: contient la taille du fichier en octets moveuploadedfile nomdefichier, destination: vérifie si le nomdefichier a bien été téléchargé et enregistré
Page 102 : 102Gestion de Fichiers form enctype="multipart/form-data"method="post" action= "page1.php " input name="file1" type="file" /input type="submit" value="envoyer" //formHtmlPage1.html?phpdestination = ".\Uploads\\";if !empty FILES destination .= FILES 'file1' 'name' ;filename = FILES 'file1' 'tmpname' ;moveuploadedfile filename, destination ;?page1.php
Page 103 : 103Les exceptions en PHP Les exceptions sont utilisées pour modifier le flux normal d'un script si une erreur spécifiée se produit. Historiquement, les erreurs PHP sont gérées via le système error reporting, c'est à dire l'affichage de messages d'erreur directement dans la page. Depuis PHP 5, les exceptions ont fait leur apparition. Ce système de gestion des erreurs est radicalement différent, c'est un mécanisme utilisé dans de nombreux langages comme, C, Python ou Java.try catch:try…… catchException eprintre;
Page 104 : 104Les exceptions en PHP Comme tous les mots-clés de programmation, ces trois mots proviennent de l'anglais et signifient :Try : une fonction utilisant une exception doit se trouver dans un bloc "try". Si l'exception ne se déclenche pas, le code continuera normalement. Cependant, si l'exception se déclenche, une exception est « levée ».Throw : C'est ainsi que vous déclenchez une exception. Chaque « throw » doit avoir au moins une « prise ».Catch : Un bloc "catch" récupère une exception et crée un objet contenant les informations sur l'exception.
Page 105 : 105Les exceptions en PHP Le Résultat?phpfunction divisernb1, nb2 ifnb2==0 throw new Exception"diviser sur 0 pas possible ";return nb1/nb2;trydiviser20,0;catchException eecho 'Message:' .e-getMessage;?page1.phpMessage: diviser sur 0 pas possible
Page 106 : 106https://www.php.net/manual/fr/function.file.phpCours de Ahmed Jebali : Le Langage PHPSOURCES D'INFORMATIONS
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106