Vous êtes sur la page 1sur 26

Résumé : PHP Comment

Comment integrer
integrer le
le DIRECTE

script
script PHP
PHP ?? -

C’EST
C’EST QUOI
QUOI PHP
PHP ?? AVEC LE STYLE PHP :
Hyper Text PreProcessor
-
• Langage de script coté serveur ( INDIRECTE
s’exécute coté serveur ) AVEC LE STYLE ASP :
• Langage interprété (Lecture ligne -
par ligne)
• Code intégré au code source de la
page HTML
• Permet de rendre les pages HTML
Dynamique
-
AVEC XMAPP
1. Ouvrir XAMPP puis cliquer sur Open du
Apache
2. Le serveur Apache est maintenant
ouvert -> Ouvrir le navigateur et Taper
AVEC LE TERMINAL
localhost :7882/ -> le Dashboard de
XAMPP sera ouvert

Note : Par défaut le port utilisé par le


serveur est 80 et pour accéder au
Dashboard il suffit de taper localhost/
Cependant , dans ce cas ce port est utilisé
par un autre programme interne/externe ,
Le fichier index.php sera exécuté par c’est ainsi qu’on a changé le port dans
défaut donc si on veut spécifier il suffit
httpd.conf et httpd-ssl.conf ( les deux ports
d’écrire le nom du fichier dans la barre doivent être différents ) et donc il faut
du navigateur préciser le port pour accéder au Dashboard

3. Pour préciser le document il suffit de


l’ajouter dans la barre de navigation
(comme avec la 1ère méthode)
AVEC XMAPP
FONCTIONNALITES
FONCTIONNALITES DE
DE BASE
BASE VARIABLE LOCALE

DE
DE PHP
PHP Visible uniquement à l’intérieur d’un contexte
d’utilisation
COMMENTAIRES :
/* Bloc de commentaire */ VARIABLE GLOBALE
// Ligne de commentaire
Visible dans tout le script
LES VARIALBES :
Accessible localement avec l’instruction
Non typé – Précédé par $ – Sensible à la casse
global ou avec la variable globale $GLOBALS
o Une Variable Dynamique :
Possède un nom dynamique d’une variable et
l’utilise comme nom d’une autre variable – Déclaré
avec $$
LES CONSTANTES :
- Même définition que les autres langages de programmation

Il faut que le dossier des projets se trouve dans le htdocs


de xampp

FONCTIONS DE VERIFICATIONS DE VARIABLES


VARIABLES D’ENVIRONEMENT CLIENT phpinfo(INFO_VARIABLES ); permet d’afficher les variables d’environnement VARIABLES D’ENVIRONEMENT SERVEUR
FONCTIONS PREDIFINIES DES CHAINES DE CARACTERES Most important ones
Examples du cours
Explode / implode INFO SUPPLEMENTAIRES :
HTML Entity :

Htmlentities

Cross-site Scripting :

• $var : pour la variable


• ${ } : pour les tableaux …
Calculer l’occurrence de chaque
caractère figurant dans la chaine
et les mettre dans un tableau
COMMENT
COMMENT TELECHARGER
TELECHARGER
LES
LES LIBRAIRIES
LIBRAIRIES ??
Avec npm : node package manager
le gestionnaire de paquets officiel de Node.js

1. Aller au site officiel de npm : https://www.npmjs.com/


Var d’environnement 2. Chercher le package désiré example : bootswatch
3. Saisir : npm i [nom_package] (npm i bootswatch)
4. Saisir dans le Terminal intégré : npm init --yes
LES VARIABLES D4ENVIRONEMMENT : BONUS

• les variables d’environnement sont des variables dynamiques Si on veut ignorer un dossier ou un fichier bich n7otouh fil git , n7otou
utilisées par les différents processus d’un système d’exploitation /num_dossier si fichier .gitignore
comme php , javac … Package.json modifié : library tzadit
• Les variables d'environnement sont stockées dans le registre Lts : long terme support : désigne une version spécifique
Windows. C'est le processus système smss.exe qui charge les d'un logiciel dont le support est assuré pour une période
variables d'environnement lors du démarrage de Windows de temps plus longue que la normale
• Set : pour afficher les variables d’environnement au niveau du CMD
• PATH est la variable système utilisée par le système d'exploitation
EXAMPLE DE TABLEAU PARCOURS 1
pour localiser les fichiers exécutables indispensables depuis la ligne
de commande ou la fenêtre de terminal.
• Nodejs : run javascript coté serveur aussi (autre que le client) runtime
environement

LES TABLEAUX ASSOCIATIFS

PARCOURS 2
L’indice de chaque élément est une chaine de caractère
$tableau = array_count_values($variable) codes ASCII, mais en préservant les clés pour les tableaux
Retourne un tableau comptant le nombre d'occurrences des associatifs
valeurs d'un tableau.
arsort ($var) la même action mais en ordre inverse des
$tableau = array_diff($var1, $var2, ...,$varN)
codes ASCII
Retourne dans un tableau contenant les valeurs différentes entre
deux ou plusieurs tableaux. natcasesort ($var) effectue un tri dans l’ordre
alphabétique non ASCII (« a » est avant « z » et « 10 » est après «
$tableau = array_intersect($var1, $var2,
9 »)
..., $var_N)
Retourne un tableau contenant les enregistrements communs aux
tableaux entrés en argument. Tri personnalisé des tableaux associatif
$tableau = array_merge($var1, $var2, ..., $var_N) • Sachant que le trie utilise le code ASCII pour comparé les
Enchaîne des tableaux entrés en argument afin d'en retourner un éléments, on peut personnaliser la fonction de comparaison de
unique. la manière suivante.

$tableau = array_merge_recursive($var1, function compare($a, $b) {


$var2, ..., $var_N) if ($a == $b) {return 0;}
Enchaîne des tableaux en conservant l'ordre des éléments dans le return ($a < $b) ? -1 : 1;}
tableau résultant.
// Tableau à trier
sort($var) : tri les valeurs du tableau selon le code ASCII $array = array('a' => 4, 'b' => 8, 'c' =>
Le tableau initial est modifié et non récupérables dans son -1,
ordre original. Pour les tableaux associatifs les clés seront 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3,
perdues et remplacées par un indice créé après le tri. 'h' => -4);
print_r($array);
// Trie et affiche le tableau résultant
rsort ($var) tri en ordre inverse des codes ASCII.
uasort($array, 'compare');

asort ($var) trie également les valeurs selon le critère des


codes ASCII,
DATES LES STRUTURES CONDITIONNELLES

getdate() : Retourne un tableau associatif contenant L’INSTRUCTION IF … ELSE L’INSTRUCTION IF


les informations de date et if (condition réalisée) if (condition réalisée)
d'heure du timestamp lorsqu'il est fourni, sinon, le {liste d'instructions} { liste
timestamp de la date/heure else {autre série d'instructions }
courante locale d'instructions}
OPERATEUR TERNAIRE
date() : Retourne une date sous forme d'une chaîne, au
format donné par le paramètre format, fournie par le L’INSTRUCTION IF … ELSEIF … ELSE (condition) ?
paramètre timestamp ou la date et l'heure courantes si instruction si vrai :
aucun timestamp n'est fourni. En d'autres termes, le instruction si faux
if (cond réalisée)
paramètre timestamp est optionnel et vaut par défaut la {liste d'instructions} L’INSTRUCTION SWITCH
valeur de la fonction time() elseif (autre cond)
{série d'instructions} switch (Var) {
FONCTIONS else (dernière cond case Val1: Liste d'instr
réalisée) break; ...
{ série d'instructions} default: Liste d'instr
Déclaration et appel d’une fonction : break;}
Function nom_fonction($arg1, $arg2,
…$argn) LES STRUTURES ITERATIVES
{ déclaration des variables ;
bloc d’instructions ; LA BOUCLE FOR LA BOUCLE WHILE
// en cas de retour de valeur
return $resultat ;} for ($i=1; $i<6; $i++) While(condition) {bloc
{ echo "$i<br>"; } d’instructions ;}
Fonction avec nombre d’arguments inconnu :
func_num_args() : fournit le nombre d’arguments LA BOUCLE DO … WHILE LA BOUCLE FOREACH
qui ont été passés lors de l’appel de la fonction
func_get_arg($i) : retourne la valeur de la Foreach ($tableau as
do{bloc d’instr;}
$valeur) {insts
variable située à la position $i dans la liste des while(condition) ;
utilisant $valeur ;}
arguments passés en paramètres. Ces arguments sont
numérotés à partir de 0
NOTES

Appel dynamique de Exécution


fonctions :
Exécuter une fonction dont le nom
n’est pas forcément connu à
l’avance par le programmeur du
script
L’appel dynamique d’une fonction
NOTES
s’effectue en suivant le nom d’une
variable contenant le nom de la
fonction par des parenthèses

$salut contient le nom de la


fonction à exécuter (bonjour
ou bonsoir)
LES SESSIONS
NOTES
• le web est statless : sans etat (maya3rafchi chkoun)
• pour chaque utilisateur , il ya un espace mémoire alloué
• Mécanisme permettant de mettre en relation les différentes
(session)
requêtes du même client sur une période de temps donnée.
• sessionID msajil 3and el serveur
• Stocké côté serveur
• kol session 3andou durée de vie
• Les sessions permettent de conserver des informations relatives à
• kif tit5la9 esession , el session ID tit5abba fi cookie 3and el
un utilisateur lors de son parcours sur un site web
utilisateur
• Des données spécifiques à un visiteur pourront être transmises de
• w kif y3awid yconnecti ychouf serveur heki session ID
page en page afin d'adapter personnellement les réponses d'une
application PHP
• Chaque session est identifiée par un numéro d'identification Fonctionnement :
dénommé identifiant de session (SID) 1. Un répertoire est créé sur le serveur à l'emplacement
désigné par le fichier de configuration php.ini, afin de
recueillir les données de la nouvelle session.
session.save_path = "c:/wamp/tmp";
2. Le fichier php.ini peut également préciser la durée de vie
SERVEUR
d’une session en seconde par session.gc_maxlifetime
UTILISATEUR 1
session.gc_maxlifetime = 1800
Espace réservé pour Session ID
Session ID : 1001 Utilities :
la Session ID : 1001
• Sécuriser l’accès à vos pages
- Conserver le user authentifié
Espace réservé pour - Restreindre certaines fonctionnalités à des rôles
la Session ID : 1002 Session ID particulier
UTILISATEUR 2 - Passer un « token » pour vérifier qu’on suit un même
process.
Session•ID Conserver
: 1002 des données le long de la visite d’un utilisateur
- Ces coordonnées
- Le contenu d’un panier pour un site de e-commerce
COMMENT
COMMENT Creer
Creer une
une
session
session ??
Avec session_start()

Session existant Session


déjà : Lire les inexistante :
informations créer une
correspondantes nouvelle session

Cette fonction doit être appelée à chaque début


de page avant le code HTML.

• Pour fermer une session :


session_destroy()
• Pour ajouter une variable de session on
peut :
- utiliser session_register(nomVariable)
(Déconseillé)
- directement en utilisant la variable
superglobale $_SESSION
• Pour récupérer une variable de session :
on utilise le nom de la variable.
Exemple : $_SESSION['maVarSession']
➔ récupére lavariable maVarSession*
• Pour supprimer les variables de
sessions : session_unset()
LES COOKIES
ECRIRE UN COOKIE
• Un cookie est un fichier texte enregistré côté client.
• Il permet d’enregistrer des informations utiles sur et pour le bool setcookie (string
client qui sont généralement utilisées pour ses prochaines $name, string $value, int $expire = , string $path , string $domain
visites , bool $secure = false , bool $httponly = false )
• Pour des raisons de sécurité, les cookies ne peuvent être lus
que par les pages du serveur créateur du cookie en question. • Tout les arguments sauf $name ne sont pas obligatoire
• La date d’expiration des cookies est définie par le serveur web - $name : nom du cookie
qui les a créés. - $value : contenu du cookie, n’y stocker pas de mot de passes
• Les cookies disponibles sont importés par PHP sous forme de ou des propriétés critiques ou importantes
variables identifiées sous les noms utilisés par ces cookies - $expire : Le temps après lequel le cookie expire. C'est un
• La variable globale du serveur $_COOKIES enregistre tous les timestamp Unix, donc, ce sera un nombre de secondes depuis
cookies qui ont été définis l'époque Unix (1 Janvier 1970). Il faut donc fixer cette valeur à
l'aide de la fonction time() qui permet d’avoir le timestamp
actuel en y ajoutant le nombre de secondes après lequel on
Example d’utilisation : veut que le cookie expire.
• Mémorisation des paniers Exemple : time()+60*60*24*365 fera expirer le cookie dans 1 an.
dans les applications d’e-
commerce pour une
ACCEDER A UN COOKIE
prochaine visite
• Identification des utilisateurs
• Des pages web Pour accéder à un cookie, il faut se souvenir qu’il est stocké dans la
individualisées cookies variable super globale $_COOKIES ce qui fait qu’on lui accède comme
• Afficher des menus n’importe quelle variable dans un tableau associatif via son nom.
personnalisés inspect > Application > Cookies Exemple $_COOKIES[‘nom’] permet d’accéder au cookie nom.
• Afficher des pages adaptées Cookies : les info to93od 3and el
aux utilisateurs en fonction client
de leurs précédentes visites Google : t5abi les mots clès mta3 el
utilisateur w tjib des pubs
selon ces cookies
SUPPRIMER UN COOKIE LES FONCTIONNALITES DE BASE DE PHP

Il n’existe pas une fonction dédiée à la suppression d’un


cookie. Afin de récupérer une variable envoyée à travers un formulaire,
Deux solutions peuvent être utilisées : nous utilisons les deux variables globaux $_POST et $_GET selon la
* Renvoyer le cookie grâce à la fonction setcookie() en méthode utilisée lors de l’envoi et le nom de la variable envoyée (le
spécifiant uniquement le nom du cookie à supprimer. continu de l’attribut name)
* Envoyer un cookie dont la date d'expiration est passée en • Ces deux variables sont des tableaux associatifs
spécifiant par exemple time()-1 Exemple :
• Pour récupérer la variable de name « nom » et envoyé par
LES EXCEPTIONS post on utilise : $_POST[‘nom’]

• Une exception est une exception à la règle une erreur à gérer.


• En PHP la classe de base des exceptions est la classe Exception.
• Une exception peut être lancée (throw) et attrapée (catch)
dans PHP.
• Le code devra être entouré d'un bloc try permettant de
faciliter la saisie d'une exception potentielle.
• Chaque try doit avoir au moins un bloc catch ou finally
correspondant.
GET

GET is used to request data from a specified resource.


GET is one of the most common HTTP methods.
Note that the query string (name/value pairs) is sent in the URL of a
GET request:
/test/demo_form.php?name1=value1&name2=value2
Some other notes on GET requests:
• GET requests can be cached
• GET requests remain in the browser history
• GET requests can be bookmarked
• GET requests should never be used when dealing with sensitive
data
• GET requests have length restrictions
Versus
• GET requests are only used to request data (not modify)

POST

POST is used to send data to a server to create/update a resource.


The data sent to the server with POST is stored in the request body of
the HTTP request:
NOTES POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
• POST : nitfa9dou el Network name1=value1&name2=value2
• isset : nista3mlouha bich na3rfou el variable POST is one of the most common HTTP methods.
mawjouda wela le Some other notes on POST requests:
• session_destroy : feha mouchkla w Lezim dima • POST requests are never cached
session_start() ; • POST requests do not remain in the browser history
• fil 3ada nista3mlou el POST to be secure • POST requests cannot be bookmarked
• POST w GET : pour les formulaires • POST requests have no restrictions on data length
• fil action = "Fichier.php"
• il faut ajouter les names sinon des arrays fer8in mta3
GET w POST
POO PHP5
• Itérer dans un objet : on utilise foreach
Opèrent sur Variables / Constantes

Traitements Données

Fonctions influencent
Clé : attribut | Valeur : valeur de l’attribut
Arguments
• Méthodes et attributs statiques : même def que l’OO ( partagé ,
pas de this , une seule copie , accessible via la classe )
Même concept que la POO
Classe :: AttributSattic | Classe :: MethodeSattic()
• This : self

Variable
Constructeur en
PHP :
__construct()
Au lieu du nom
Methode de la classe

• Visibilité : 3 niveaux : public , private et Protected ( héritage )


• Instanciation : avec new qui retourne l’identifiant de l’objet crée Generate getters
• Clonage : afin de cloner un objet on utilise le mot clé clone ( and setters :
$MonNouvelObjet = $MonObjet : MonNouvelObjet ne contient pas alt + insert
une copie de MonObjet mais une référence sur la même instance
de MonObjet ) avec clone on a deux objets différents
• Les constante de classe : attributs constantes et qui appartiennent
à la classe et non pas à l’objet / définit avec const
Classe :: ConstanteDeClasse
Permet d’éviter des données muettes (ma3andhomchi des noms)

This ->Mehtode () | this -> Attribut

• Héritage : avec extends / les classes filles ne peuvent accéder


qu’aux attributs public et protected
Pour accéder à une méthode redéfinie de la classe mère on utilise
l’objet parent et l’opérateur de portée parent ::
• Les classes Abstraites : non instanciable / peut contenir des
méthodes implémentées et des méthodes abstraites ( non définie ) /
les classes héritant d’une classe abstraite doivent redéfinir les
méthodes abstraites
• Les méthodes finaux : ne peut pas être redéfinie par une classe fille

POO PHP5

interface NomInterface

• Classe permettant de spécifier quelles méthodes les classes


implémentant cette interface doivent implémenter
• Ensemble de prototype de méthodes publiques

ClasseImpl implements NomInterface

• La classe implémentant l’interface doit obligatoirement respecter la


totalité du contrat
• Convention de nommage :
- Nom de la classe : LikeThis NOTES
- Nom composé : Mot1_Mot2 Pas de possibilité de
- Méthodes et attributs : camelCase surcharge des méthodes
- privé : _privateAttribute pour les classes : car
- Constante : CONSTANTE_1 non typé

NOTES
echo $classe ; ( ça crache ) ( could not be converted to string )
solution :
• définir une fonction permettant d'afficher la classe
• redéfinir la méthode __toString (retourner une chaine)
Magic Methods : s'exécute implicitement
NOTES : on va pouvoir inclure plusieurs fois un même
fichier avec include et require tandis qu’en utilisant
Avec require | include include_once et require_once cela ne sera pas
require « ConnectionBD.php » possible : un même fichier ne pourra être inclus qu’une
seule fois dans un autre fichier.

MEILLEUR SOLUTION ? spl_autoload_register(...‘NomFonction’)

Utiliser le concept
d’autoload
PHP possède une pile
si la fonction ne
d’autoloads qui permet de Fonction 3 fonctionne pas ,
lister les on utilise la
fonctions à utiliser pour gérer Avec l’extension
Fonction 2 suivante Avec l’extension
le chargement automatique mysql_
des Fonction 1 Ensemble de fonction
mysqli_
classes instanciées et non commençons ce sont des fonctions
déclarées. par mysql_ et permettant de améliorées
Pile d’autoload
communiquer avec mysql. d'accès à MySQL
Elle sont devenue obsolete
NOTES : Différence entre require et include : en cas
d’erreur l’include revoit un simple avertissement et le Avec l’extension PDO
reste du script sera exécuté alors qu’avec require ça Outil complet qui permettant une abstraction du type de la
déclenche une erreur fatale et l’exécution du script base de données traitée permettant ainsi de se connecter
s’arrête aussi bien à MySQL que PostgreSQL ou Oracle.
PDO : PHP Data Objects Gestion des erreurs liées à la connexion
• Extension fournissant des services d’accès aux bases
de données. A LA BD
• Fournie avec plusieurs drivers (MySQL, sqlite,
PostgreSQL Capturer les erreurs de type PDOException :
• Disponible par défaut à partir des serveurs PHP 5.1.0
try {
$db_connexion = new
Comment peut on se connecter à une base de données ? PDO('mysql:host=localhost;dbname=user
1', 'user1',
'motdepass');
Il suffit d’instancier un objet PDO de la façon suivante : }
$maDb_connexion = new catch (PDOException $e)
PDO('mysql:host=localhost;dbName=n {
omDeLaBase', 'userName', print "Erreur : " . $e->getMessage();
'motDePasse'); die();
}

• Le driver utilisé : l'adresse du serveur Pattern Design Singleton


driver:hot=serveur
• La base de donnée :
dbName=nomDeLaBase
• Nom d’utilisateur à utiliser pour la connexion
au serveur
• Le mot de passe de l’utilisateur

Ces informations diffèrent un peu selon le pilote


Afin d’afficher les détails des erreurs liées à la BD, il faut activer
le suivi de ces erreurs lors de la connexion à la BD.

Afin d’interroger une BD via PDO, nous utilisons la méthode


• Pour exploiter ces données nous utilisons la méthode query qui prend en paramètre la requête à exécuter
fetch qui retourne une ligne ou fetchAll qui
retourne un tableau
contenant toutes les lignes du jeu d'enregistrements

• L’un des paramètres des méthodes fetch et fetchAll est


l’attribut fetch_style qui permet de spécifier le type de
la valeur de retour de fetch et fetchAll La variable $reponse contiendra un objet contenant la réponse
de MySQL qui n’est pas directement exploitable
Fetch_style Requete paramétrable

• Exemple de parcours en utilisant des objets :

• une requête préparé est une requête dont les paramètres


sont insérés dans la fonction lors de l’exécution
• Elle est effectuée en 2 étapes :
L’ordre des paramètres n’a plus d’importance vu que nous
utilisons des tableaux associatifs
GESTION DES FICHIERS
//Fatal error: Uncaught TypeError:
Argument 1 passed to prodOfInteger() must be
of the type integer, string given //int(22)
HELALI HADIL

Vous aimerez peut-être aussi