php s Éance 2 php avancé 03:32:44 pwb l3 mioage 1
TRANSCRIPT
PHP SÉANCE 2PHP SÉANCE 2PHP avancé PHP avancé
03:21:5003:21:50 PWB L3 MioagePWB L3 Mioage 11
DÉFINITION DE FONCTIONS FRÉQUEMMENT UTILISÉES
Certaines fonctions sont utilisées dans plusieurs scripts PHP
Comment faire pour ne pas les définir dans chacune des pages ?
Utilisation de : include(include("fichier")) ; require(require("fichier")) ; include_once(include_once("fichier")) ; require_once(require_once("fichier")) ;
Permet d’inclure le contenu de fichier dans le script courant
22
PWB L3 Miage
PWB L3 Miage
INCLUDE ET REQUIRE03:21:50
03:21:50
33
Programmation Web 2011-2012
Programmation Web 2011-2012
Fichier mafonction.phpFichier mafonction.phpFichier mafonction.phpFichier mafonction.php<?<?functionfunction mafonction mafonction(($$argarg)){{ ifif ((issetisset(($$argarg)))) {{ echoecho ((""VraiVrai"")) ; ; }} elseelse {{ echoecho ((""FauxFaux"")) ; ; }}}}?>?>
Fichier utilisation1.phpFichier utilisation1.phpFichier utilisation1.phpFichier utilisation1.php……requirerequire("mafonction.php")("mafonction.php")mafonction(true) ;mafonction(true) ;……Fichier utilisation2.phpFichier utilisation2.phpFichier utilisation2.phpFichier utilisation2.php……includeinclude("mafonction.php")("mafonction.php")……$var=false ;$var=false ;mafonction($var) ;mafonction($var) ;……Fichier utilisation3.phpFichier utilisation3.phpFichier utilisation3.phpFichier utilisation3.php……requirerequire("mafonction.php")("mafonction.php")……
DÉFINITION DE CONSTANTES
<?php
define("ma_constante", "Bonjour à tous") ;
echo ma_constante ;
?>44
PWB L3 Miage
PWB L3 Miage
Définition d'une constanteDéfinition d'une constanteDéfinition d'une constanteDéfinition d'une constante
Utilisation de la constanteUtilisation de la constanteUtilisation de la constanteUtilisation de la constante
nomnomnomnom valeurvaleurvaleurvaleur
GESTION DES ERREURS
Dans certains cas, il n’est ni possible ni utile de poursuivre l’exécution du code PHP (variables non définies, valeurs erronées, échec de connexion, …)
Arrêt brutal de l’exécution du code: die(message) exit(message)
Envoie message au navigateur et termine l’exécution du script courant
03:21:50
03:21:50
55
PWB L3 Miage
PWB L3 Miage
03:21:50
03:21:50
66
PWB L3 Miage
PWB L3 Miage
Gestion des erreurs – (Mauvais) ExempleGestion des erreurs – (Mauvais) Exemple
<?php<?php$$html html = = <<<<<<HTMLHTML<<htmlhtml>><<headhead>><<titletitle>>die-exitdie-exit</</titletitle>></</headhead>><<bodybody>>HTMLHTML;;ifif ((!!issetisset(($$valval)) {)) { diedie(($$htmlhtml..""problème valproblème val"")) ; ; /* Au delà de ce point,/* Au delà de ce point, fin du script */fin du script */}}$$html html .=.= <<<<<<HTMLHTMLChoix: Choix: $$valval</</bodybody>></</htmlhtml>>
<<htmlhtml>><<headhead>><<titletitle>>die-exitdie-exit</</titletitle>></</headhead>><<bodybody>>problème valproblème val
PHPPHP HTMLHTML
NavigateurNavigateur
problème valproblème val
HTML non HTML non validevalide……HTML non HTML non validevalide……
GESTION DE L'AFFICHAGE DES ERREURS int error_reporting ( [int level] )
03:21:50
03:21:50
77
PWB L3 Miage
PWB L3 Miage
php.iniphp.iniphp.iniphp.ini
ConstanteConstante
E_ERROR E_ERROR
E_WARNING E_WARNING
E_PARSE E_PARSE
E_NOTICE E_NOTICE
E_CORE_ERROR E_CORE_ERROR
E_CORE_WARNING E_CORE_WARNING
E_COMPILE_ERROR E_COMPILE_ERROR
E_COMPILE_WARNING E_COMPILE_WARNING
E_USER_ERROR E_USER_ERROR
E_USER_WARNING E_USER_WARNING
E_USER_NOTICE E_USER_NOTICE
E_ALL E_ALL
E_STRICT E_STRICT
Ancien niveau d'erreurAncien niveau d'erreurAncien niveau d'erreurAncien niveau d'erreur
Sur un serveur en Sur un serveur en production, production, toute toute erreur affichéeerreur affichée
donne des indices sur donne des indices sur les scripts et les scripts et rend le rend le
site vulnérablesite vulnérable
Sur un serveur en Sur un serveur en production, production, toute toute erreur affichéeerreur affichée
donne des indices sur donne des indices sur les scripts et les scripts et rend le rend le
site vulnérablesite vulnérable
display_errorsdisplay_errors booleandisplay_errorsdisplay_errors boolean
Déb
og
agD
ébo
gag
ee
OPÉRATEUR DE CONTRÔLE D'ERREUR
$v = file("dummy.txt")
or die("Problème de lecture") ;
03:21:50
03:21:50
88
PWB L3 Miage
PWB L3 Miage
WarningWarning: file(dummy.txt): failed to open : file(dummy.txt): failed to open stream: No such file or directory in stream: No such file or directory in dummy.phpdummy.php on line on line 6868Problème de lectureProblème de lecture
WarningWarning: file(dummy.txt): failed to open : file(dummy.txt): failed to open stream: No such file or directory in stream: No such file or directory in dummy.phpdummy.php on line on line 6868Problème de lectureProblème de lecture
Problème de lectureProblème de lectureProblème de lectureProblème de lecture
$$vv == @ @filefile((""dummy.txtdummy.txt""))
oror diedie((""Problème de lectureProblème de lecture"")) ; ;
Fichier absentFichier absentFichier absentFichier absent
UTILISATION DE HTTP/1.0UTILISATION DE HTTP/1.003:21:50
03:21:50
99
Programmation Web 2010-2011
Programmation Web 2010-2011
RéseauRéseauClient WebClient Web
(Navigateur)(Navigateur)Serveur WebServeur Web
(Apache)(Apache)
Connexion TCP (port 80)Connexion TCP (port 80)
Validation de la connexionValidation de la connexion
Requête HTTPRequête HTTP
Réponse HTTPRéponse HTTPFermeture de connexionFermeture de connexion
REMARQUES IMPORTANTESREMARQUES IMPORTANTES Le client ouvre la connexionLe client ouvre la connexion Le serveur ferme la connexionLe serveur ferme la connexion
1 transaction = 1 ressource transférée (v 1.0)1 transaction = 1 ressource transférée (v 1.0) Protocole sans étatProtocole sans état
Aucune information gardée entre deux Aucune information gardée entre deux transactionstransactions
Le serveur "oublie" le client après chaque Le serveur "oublie" le client après chaque transactiontransaction
Problème pour la gestion d'une sessionProblème pour la gestion d'une session
03:21:50
03:21:50
1010
PWB L3 Miage
PWB L3 Miage
AUTRES REMARQUES AUTRES REMARQUES IMPORTANTESIMPORTANTES Le client demande des ressourcesLe client demande des ressources Le serveur répond aux demandes des Le serveur répond aux demandes des
clients :clients : Délivre la ressource demandée si possibleDélivre la ressource demandée si possible Informe de la raison de non remiseInforme de la raison de non remise
Echanges multi-plateformeEchanges multi-plateforme
ASCII 7bits (encodage si non ASCII 7bits)ASCII 7bits (encodage si non ASCII 7bits)
Requêtes émises en clairRequêtes émises en clair Réponses émises en clairRéponses émises en clair
03:21:50
03:21:50
1111
PWB L3 Miage
PWB L3 Miage
COOKIESCOOKIES But :But :
Éviter que le serveur « oublie le client »Éviter que le serveur « oublie le client » Maintenir un « mode connecté » (= session)Maintenir un « mode connecté » (= session) Rendre transparent un échange client / serveurRendre transparent un échange client / serveur Exemple e-commerce : ajouter des articles au Exemple e-commerce : ajouter des articles au
panierpanier
Serveur :Serveur :Set-Cookie: Set-Cookie: varvar==valval[[; expires=; expires=datedate; ; path=path=cheminchemin; domain=; domain=domainedomaine]]
Client :Client :Cookie: Cookie: varvar==valval;;
03:21:50
03:21:50
1212
PWB L3 Miage
PWB L3 Miage
COOKIES, PRINCIPE DES COOKIES, PRINCIPE DES ÉCHANGESÉCHANGES
03:21:50
03:21:50
1313
Programmation Web 2010-2011
Programmation Web 2010-2011
RéseauRéseauClient WebClient Web
(Navigateur)(Navigateur)Serveur WebServeur Web
(Apache)(Apache)
GET / HTTP/1.1GET / HTTP/1.1
HTTP/1.1 200 OKHTTP/1.1 200 OKSet-CookieSet-Cookie: Id=1212; path=/;: Id=1212; path=/;
GET /liste HTTP/1.1GET /liste HTTP/1.1CookieCookie: Id=1212: Id=1212
HTTP/1.1 200 OKHTTP/1.1 200 OK……
Id=1212;Id=1212; path=/;path=/;
COOKIESCOOKIES
Avantages :Avantages : Rappelle au serveur des informations sur le clientRappelle au serveur des informations sur le client L'échangeL'échange de la données dans le sens de la données dans le sens
serveur serveur client client est est limitélimité au dépôt du cookie au dépôt du cookie Ne nécessite Ne nécessite paspas de de modifiermodifier les les pagespages HTMLHTML CompatibleCompatible avec les avec les formulairesformulaires Le Le cookiecookie a une a une durée de validitédurée de validité
Inconvénients :Inconvénients : Les Les données circulent en permanencedonnées circulent en permanence dans le dans le
sens sens client client serveur serveur Les Les données circulent en clairdonnées circulent en clair sur le réseau sur le réseau La La quantitéquantité de données doit être de données doit être limitéelimitée
03:21:50
03:21:50
1414
PWB L3 Miage
PWB L3 Miage
COOKIES EN PHPCOOKIES EN PHP
Placer un cookie sur le client :Placer un cookie sur le client :boolbool setcookiesetcookie( ( stringstring namename [, [, stringstring valuevalue [, [, intint expireexpire [, [, stringstring pathpath [, [, stringstring domaindomain [, [, boolbool securesecure [, [, boolbool httponlyhttponly ]]]]]] ) ]]]]]] )
03:21:50
03:21:50
1515
PWB L3 Miage
PWB L3 Miage
Nom du cookieNom du cookieValeur du cookieValeur du cookieDate d'expiration (timestamp UNIX) :Date d'expiration (timestamp UNIX) :Dans 10 jours : time()+10*24*60*60Dans 10 jours : time()+10*24*60*60Si non précisé, expire à la fermeture du Si non précisé, expire à la fermeture du navigateurnavigateur
Chemin de validité, disponibilité :Chemin de validité, disponibilité :// tout le serveur tout le serveur/prive/prive sous-arborescence "prive" sous-arborescence "prive"Par défaut : répertoire où le cookie est définiPar défaut : répertoire où le cookie est défini
Domaine de validité, disponibilité :Domaine de validité, disponibilité :example.comexample.com le domaine example.comle domaine example.comwww.example.comwww.example.com le sous-domaine www.example.comle sous-domaine www.example.com
Cookie sécurisé ?Cookie sécurisé ?truetrue uniquement si HTTPS uniquement si HTTPSfalsefalse défaut, HTTP et HTTPS défaut, HTTP et HTTPS
Cookie uniquement par HTTP ?Cookie uniquement par HTTP ?truetrue uniquement HTTP uniquement HTTPfalsefalse défaut, HTTP, JavaScript, … défaut, HTTP, JavaScript, …
COOKIES EN PHPCOOKIES EN PHP
Vérifier la présence d'un cookie :Vérifier la présence d'un cookie : tableau associatif superglobal tableau associatif superglobal $_COOKIE$_COOKIE ex : cookie 'passage' ex : cookie 'passage' $_COOKIE['passage']$_COOKIE['passage']
Remarques utiles :Remarques utiles : Le Le cookiecookie doit être doit être placéplacé avant avant echoecho (en-tête (en-tête
HTTP)HTTP) Le Le cookiecookie placé avec placé avec setcookie()setcookie() n'est n'est
accessibleaccessible qu' qu'auau prochainprochain chargementchargement de page : de page :En-tête HTTP Set-Cookie: suivi de l'en-tête HTTP En-tête HTTP Set-Cookie: suivi de l'en-tête HTTP Cookie: à la demande de page suivanteCookie: à la demande de page suivante
EffacerEffacer unun cookiecookie déjà placé : déjà placé :le replacer avec les le replacer avec les mêmesmêmes paramètresparamètres mais mais avec une avec une valeurvaleur videvide ou false ou false
03:21:50
03:21:50
1616
PWB L3 Miage
PWB L3 Miage
SESSIONSSESSIONS
Stockage sur le serveurStockage sur le serveur de de données données associées à un clientassociées à un client particulier particulier
Nécessite une Nécessite une identification unique identification unique pertinente et persistante des clientspertinente et persistante des clients Identifiant de sessionIdentifiant de session (MD5 128bits / SHA-1 (MD5 128bits / SHA-1
160bits)160bits) Persiste par Persiste par paramètre d'URLparamètre d'URL ou ou cookiecookie
Évite l'échange permanent de donnéesÉvite l'échange permanent de données (en (en dehors de l'identifiant)dehors de l'identifiant)
Nécessite la Nécessite la linéarisationlinéarisation desdes variablesvariables pour pour leur stockage (fichier, BD, personnalisé)leur stockage (fichier, BD, personnalisé)
Simule un Simule un mode connectémode connecté
03:21:50
03:21:50
1717
PWB L3 Miage
PWB L3 Miage
SESSIONSSESSIONS03:21:50
03:21:50
1818
PWB L3 Miage
PWB L3 Miage
RéseauRéseau
Client 1Client 1
ServeurServeur
AA
Démarrer sessionDémarrer sessionid : Aid : A
Données deDonnées desession pour Asession pour A
GET /GET /Set-Cookie: …Set-Cookie: …Cookie: …Cookie: …OK: …OK: …
Client 2Client 2
BB
Démarrer sessionDémarrer sessionid : Bid : B
Données deDonnées desession pour Bsession pour B
GET /GET /Set-Cookie: …Set-Cookie: …Cookie: …Cookie: …OK: …OK: …
CookieCookieid : Aid : A
CookieCookieid : Bid : B
SESSIONSSESSIONS
Créer ou restaurer une sessionCréer ou restaurer une session boolbool session_start session_start ( ( voidvoid ) )
Manipuler les Manipuler les données de sessiondonnées de session Tableau associatif superglobal Tableau associatif superglobal $_SESSION$_SESSION
Lire ou définir l'identifiant de sessionLire ou définir l'identifiant de session stringstring session_id session_id ( [( [stringstring idid] )] )
Détruire toutes les variables d'une session Détruire toutes les variables d'une session voidvoid session_unsetsession_unset ( ( voidvoid ) )
Détruire une sessionDétruire une session boolbool session_destroysession_destroy ( ( voidvoid ) )
03:21:50
03:21:50
1919
PWB L3 Miage
PWB L3 Miage
SESSIONSSESSIONS
Modifie les paramètres du cookie de sessionModifie les paramètres du cookie de sessionvoidvoid session_set_cookie_paramssession_set_cookie_params ( (
intint lifetimelifetime[, [, stringstring pathpath[, [, stringstring domaindomain[, [, boolbool securesecure[, [, boolbool httponlyhttponly ]]]] ]]]]
))
03:21:50
03:21:50
2020
PWB L3 Miage
PWB L3 Miage
Date d'expiration (timestamp UNIX) :Date d'expiration (timestamp UNIX) :Dans 10 jours : time()+10*24*60*60Dans 10 jours : time()+10*24*60*60Si non précisé, expire à la fermeture du Si non précisé, expire à la fermeture du navigateurnavigateur
Chemin de validité, disponibilité :Chemin de validité, disponibilité :// tout le serveur tout le serveur/prive/prive sous-arborescence "prive" sous-arborescence "prive"Par défaut : répertoire où le cookie est définiPar défaut : répertoire où le cookie est défini
Domaine de validité, disponibilité :Domaine de validité, disponibilité :example.comexample.com le domaine example.comle domaine example.comwww.example.comwww.example.com le sous-domaine www.example.comle sous-domaine www.example.com
Cookie sécurisé ?Cookie sécurisé ?truetrue uniquement si HTTPS uniquement si HTTPSfalsefalse défaut, HTTP et HTTPS défaut, HTTP et HTTPS
Cookie uniquement par HTTP ?Cookie uniquement par HTTP ?truetrue uniquement HTTP uniquement HTTPfalsefalse défaut, HTTP, JavaScript, … défaut, HTTP, JavaScript, …
PROCÉDURE D'AUTHENTIFICATIONPROCÉDURE D'AUTHENTIFICATION03:21:50
03:21:50
2121
Programmation Web 2010-2011
Programmation Web 2010-2011
RéseauRéseau
ClientClient ServeurServeur
Base deBase dedonnéesdonnées
loginlogin
passpass
??ProblèmeProblème
Le données circulentLe données circulenten clair sur le réseauen clair sur le réseau
ProblèmeProblèmeInjection de code SQLInjection de code SQL requêtes préparéesrequêtes préparées
PROCÉDURE D'AUTHENTIFICATION PROCÉDURE D'AUTHENTIFICATION SÉCURISÉESÉCURISÉE
03:21:50
03:21:50
2222
Programmation Web 2010-2011
Programmation Web 2010-2011
RéseauRéseau
ClientClient ServeurServeur
Base deBase dedonnéesdonnées
CodageCodage??ProblèmeProblèmeInjection de code SQLInjection de code SQL requêtes préparéesrequêtes préparées
challengechallengechallengechallenge
CodageCodagedonnéedonnée
loginlogin
passpassdonnéedonnée
challengechallenge
SécuritéSécuritéLe données qui circulentLe données qui circulent
sont propressont propresà chaque connexionà chaque connexion
DonnéesDonnéesde sessionde session
SÉRIALISATION D'OBJETSSÉRIALISATION D'OBJETS
Les Les objetsobjets peuvent être peuvent être stockésstockés dansdans les les données de données de sessionsession Linéarisation de l'objet Linéarisation de l'objet réduit à une chaîne réduit à une chaîne Impossible pour le type ressourceImpossible pour le type ressource Impossible pour les références croiséesImpossible pour les références croisées Restauration possible (PHP >= 4)Restauration possible (PHP >= 4)
03:21:50
03:21:50
2323
PWB L3 Miage
PWB L3 Miage
session_start() ;session_start() ;$p = new Point(12, 15) ;$p = new Point(12, 15) ;$_SESSION['monpoint'] = $p ;$_SESSION['monpoint'] = $p ;
session_start() ;session_start() ;
$p = $_SESSION['monpoint'] ;$p = $_SESSION['monpoint'] ;
SÉRIALISATION D'OBJETSSÉRIALISATION D'OBJETS
Méthodes magiques Méthodes magiques __sleep__sleep et et __wakeup__wakeup __sleep__sleep
Appelée Appelée avant la linéarisationavant la linéarisation Doit retourner un tableau contenant le nom des Doit retourner un tableau contenant le nom des
attributs à linéariserattributs à linéariser Choix des attributs à sauvegarderChoix des attributs à sauvegarder Terminer correctement l'objet (déconnexion BD, Terminer correctement l'objet (déconnexion BD,
ressource ouverte, requête en cours, …)ressource ouverte, requête en cours, …) __wakeup__wakeup
Appelée Appelée après la délinéarisationaprès la délinéarisation Restaurer des attributs non sauvegardés (BD, …)Restaurer des attributs non sauvegardés (BD, …)
03:21:50
03:21:50
2424
PWB L3 Miage
PWB L3 Miage
SÉRIALISATION : EXEMPLESÉRIALISATION : EXEMPLEclassclass Point Point {{ privateprivate $$coordcoord ;; privateprivate $$infoinfo ;;
publicpublic functionfunction __construct(__construct($$_x_x, , $$_y_y)) {{ ifif ((!!is_numericis_numeric(($$_x_x)) |||| !!is_numericis_numeric(($$_y_y)))) {{ throwthrow newnew ExceptionException(( ""Paramètres non numériques (Paramètres non numériques ($$_x_x, , $$_y_y))"")) ;;
}} $$thisthis->->coordcoord[[''xx'']] == $$_x_x ;; $$thisthis->->coordcoord[[''yy'']] == $$_y_y ;; $$thisthis->->info info == ' 'NouveauNouveau' ' ;; }}……
03:21:50
03:21:50
2525
PWB L3 Miage
PWB L3 Miage
SÉRIALISATION : EXEMPLESÉRIALISATION : EXEMPLE publicpublic functionfunction __get(__get($$_prop_prop)) {{ ifif ((!!array_key_existsarray_key_exists(($$_prop_prop, , $$thisthis->->coordcoord)))) { { throwthrow newnew ExceptionException(( ""Accès à une propriété inconnue (Accès à une propriété inconnue ($$_prop_prop))"")) ;; }} returnreturn $$thisthis->->coordcoord[[$$_prop_prop]] ;; }} publicpublic functionfunction __set(__set($$_prop_prop, , $$_val_val)) {{ ifif ((!!is_numericis_numeric(($$_val_val)))) throwthrow newnew ExceptionException((""Valeur non numérique Valeur non numérique
(($$_val_val))""));; ifif ((!!array_key_existsarray_key_exists(($$_prop_prop, , $$thisthis->->coordcoord)))) throwthrow newnew ExceptionException(( ""Accès à une propriété inconnue (Accès à une propriété inconnue ($$_prop_prop))"")) ;; returnreturn $$thisthis->->coordcoord[[$$_prop_prop]] == $$_val_val ;;}}
03:21:50
03:21:50
2626
PWB L3 Miage
PWB L3 Miage
SÉRIALISATION : EXEMPLESÉRIALISATION : EXEMPLE
publicpublic functionfunction __sleep()__sleep() {{
returnreturn arrayarray((''coordcoord'')) ;;
}}
publicpublic functionfunction __wakeup()__wakeup() {{
$$thisthis->->info info == ' 'RestauréRestauré' ' ;;
}}
publicpublic functionfunction affiche affiche()() {{
echoecho " "<pre><pre>\n\n" " ;;
var_dumpvar_dump(($$thisthis)) ;;
echoecho " "</pre></pre>\n\n" " ;;
}}
}}
03:21:50
03:21:50
2727
PWB L3 Miage
PWB L3 Miage
SÉRIALISATION : EXEMPLESÉRIALISATION : EXEMPLE
<?php<?php
require_oncerequire_once((''point.inc.phppoint.inc.php'')) ;;
session_startsession_start()() ;;
$$pp == newnew Point Point((11, , 1212)) ;;
$$_SESSION[_SESSION[''pointpoint'']] == $$pp ;;
?>?>
<?php<?php
require_oncerequire_once((''point.inc.phppoint.inc.php'')) ;;
session_startsession_start()() ;;
$$pp == $$_SESSION[_SESSION[''pointpoint'']] ;;
$$pp->->afficheaffiche()() ;;
?>?>
03:21:50
03:21:50
2828
PWB L3 Miage
PWB L3 Miage
Linéarisation :Linéarisation :appel de appel de __sleep()__sleep()
Délinéarisation :Délinéarisation :appel de appel de __wakeup()__wakeup()
object(Point)#1 (2) {object(Point)#1 (2) { ["coord:private"["coord:private" => array(2) {=> array(2) { ["x"]=> int(1)["x"]=> int(1) ["y"]=> int(12) }["y"]=> int(12) } ["info:private"]=>["info:private"]=> string(8) "Restauré"string(8) "Restauré"} }
publicpublic functionfunction __wakeup()__wakeup() {{ $$thisthis->->info info == ' 'RestauréRestauré' ' ;; }}
SYSTÈME DE FICHIERSSYSTÈME DE FICHIERS
L'accès au système de fichiers en PHP est réalisé L'accès au système de fichiers en PHP est réalisé par le moteur PHP. Plus précisément, c'est par le moteur PHP. Plus précisément, c'est le le serveur Web qui accède aux fichiersserveur Web qui accède aux fichiers. Ce sont . Ce sont donc les donc les droits d'accès de l'utilisateur "web"droits d'accès de l'utilisateur "web" qui qui sont mis en jeu avec toutes les sont mis en jeu avec toutes les limitationslimitations que que cela comporte !cela comporte !
Les pseudo-types présentés dans les diapositives Les pseudo-types présentés dans les diapositives suivantes sont donnés à titre suivantes sont donnés à titre informatifinformatif..
Toutes les fonctions travaillent à partir du Toutes les fonctions travaillent à partir du répertoire courantrépertoire courant (par défaut, celui du script) (par défaut, celui du script)
Les fonctions présentées retournent souvent Les fonctions présentées retournent souvent falsefalse en cas d'échecen cas d'échec et affichent parfois des et affichent parfois des avertissements dans ce casavertissements dans ce cas
03:21:51
03:21:51
2929
PWB L3 Miage
PWB L3 Miage
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
chmodchmod : : modifier les droits d'accèsmodifier les droits d'accès chownchown : : modifier le propriétairemodifier le propriétaire chgrpchgrp : : modifier le groupemodifier le groupe mkdirmkdir : : créer un répertoirecréer un répertoire rmdirrmdir : : détruire un répertoiredétruire un répertoire copycopy : : copier un fichiercopier un fichier basenamebasename : : donner le nom d'un fichierdonner le nom d'un fichier dirnamedirname : : donner le chemin d'un fichierdonner le chemin d'un fichier linklink : : créer un lien physiquecréer un lien physique symlinksymlink : : créer un lien symboliquecréer un lien symbolique unlinkunlink : : détruire un liendétruire un lien touchtouch : : changer la date de modificationchanger la date de modification
03:21:51
03:21:51
3030
PWB L3 Miage
PWB L3 Miage
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
bool bool chmodchmod ( string ( string filenamefilename, int , int modemode ) )remplace le mode de remplace le mode de filenamefilename par le mode par le mode
modemodeex : chmod("foo.txt", 0644) ;ex : chmod("foo.txt", 0644) ;
bool bool chownchown ( ( stringstring filenamefilename, , mixedmixed useruser ) )change le groupe propriétaire courant du change le groupe propriétaire courant du
fichier fichier filenamefilename en en useruserex : chown("foo.txt", "cutrona") ;ex : chown("foo.txt", "cutrona") ;
bool bool chgrpchgrp ( string ( string filenamefilename, mixed , mixed groupgroup ) )remplace le groupe propriétaire courant du remplace le groupe propriétaire courant du
fichier fichier filenamefilename par par groupgroupex : chgrp("foo.txt", "prof") ;ex : chgrp("foo.txt", "prof") ;
03:21:51
03:21:51
3131
PWB L3 Miage
PWB L3 Miage
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
bool bool mkdirmkdir (string (string pathnamepathname [, int [, int modemode [, bool [, bool recursiverecursive ]]) ]])
crée un répertoire crée un répertoire pathnamepathname avec le mode avec le mode modemode de façonde façon récursiverécursive
ex : mkdir("rep12", 0755) ;ex : mkdir("rep12", 0755) ;
bool bool rmdirrmdir ( string ( string dirnamedirname ) )efface le répertoire dont le chemin est efface le répertoire dont le chemin est dirnamedirname. Le . Le
répertoire doit être viderépertoire doit être videex : rmdir("rep12") ;ex : rmdir("rep12") ;
bool bool copycopy ( string ( string sourcesource, string , string destdest ) )effectue une copie du fichier effectue une copie du fichier sourcesource vers le fichier vers le fichier
destdestex : copy("fic.txt", "copie_fic.txt") ;ex : copy("fic.txt", "copie_fic.txt") ;
03:21:51
03:21:51
3232
PWB L3 Miage
PWB L3 Miage
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
string string basenamebasename ( string ( string pathpath [, string [, string suffixsuffix] )] )
extrait le nom du fichier (au sens large) dans le extrait le nom du fichier (au sens large) dans le chemin chemin pathpath.. Si Si suffixsuffix est fourni, il sera supprimé est fourni, il sera supprimé dans le nom du fichierdans le nom du fichier
ex : basename("/home/prof/cutrona/public_html") ;ex : basename("/home/prof/cutrona/public_html") ;
public_htmlpublic_html
string string dirnamedirname ( string ( string pathpath ) )
donne le chemin du fichier (au sens large) contenu donne le chemin du fichier (au sens large) contenu dans dans pathpath
ex : dirname("/home/prof/cutrona/public_html") ;ex : dirname("/home/prof/cutrona/public_html") ;
/home/prof/cutrona/home/prof/cutrona
03:21:51
03:21:51
3333
PWB L3 Miage
PWB L3 Miage
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
bool bool linklink ( string ( string targettarget, string , string linklink ) )crée un lien de nom crée un lien de nom linklink vers le fichier vers le fichier
destination existant destination existant targettargetex : link("foo.txt", "bob") ;ex : link("foo.txt", "bob") ;
bool bool symlinksymlink ( string ( string targettarget, string , string linklink ) )crée un lien symbolique de nom crée un lien symbolique de nom linklink vers le vers le
fichier destination existant fichier destination existant targettargetex : symlink("foo.txt", "bob") ;ex : symlink("foo.txt", "bob") ;
bool bool unlinkunlink ( string ( string filenamefilename ) )efface le fichier efface le fichier filenamefilename
ex : unlink("foo.txt") ;ex : unlink("foo.txt") ;
03:21:51
03:21:51
3434
PWB L3 Miage
PWB L3 Miage
WindowsWindowsWindowsWindows
WindowsWindowsWindowsWindows
FONCTIONS "COMMANDE SHELL"FONCTIONS "COMMANDE SHELL"
bool bool touchtouch ( string ( string filenamefilename [, int [, int timetime [, int [, int atimeatime]] )]] )
tente de forcer la date de modification du fichier tente de forcer la date de modification du fichier désigné par le paramètre désigné par le paramètre filenamefilename à la date de à la date de spécifiée par le paramètre spécifiée par le paramètre timetime. Le troisième . Le troisième paramètre paramètre atimeatime est utilisé comme date de dernier est utilisé comme date de dernier accès. Si le fichier n'existe pas, PHP tente de le créeraccès. Si le fichier n'existe pas, PHP tente de le créertimetime et et atimeatime sont des timestamp UNIX (nombre de sont des timestamp UNIX (nombre de secondes depuis le 1er Janvier 1970 00:00:00 GMT) secondes depuis le 1er Janvier 1970 00:00:00 GMT)
int int mktimemktime ( [int ( [int hourhour [, int [, int minuteminute [, int [, int secondsecond [, int [, int monthmonth [, int [, int dayday [, int [, int yearyear [, int [, int is_dstis_dst]]]]]]] )]]]]]]] )
crée un timestamp UNIX correspondant aux paramètrescrée un timestamp UNIX correspondant aux paramètres
03:21:51
03:21:51
3535
PWB L3 Miage
PWB L3 Miage
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
file_existsfile_exists : : fichier existe ?fichier existe ? is_diris_dir : : est un répertoire ?est un répertoire ? is_fileis_file : : est un fichier régulier ?est un fichier régulier ? is_linkis_link : : est un lien symbolique ?est un lien symbolique ? filetypefiletype : : type de fichiertype de fichier is_readableis_readable : : est lisible ?est lisible ? is_executableis_executable : : est exécutable ?est exécutable ? is_writ[e]ableis_writ[e]able : : peut être modifié ?peut être modifié ?
03:21:51
03:21:51
3636
PWB L3 Miage
PWB L3 Miage
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
disk_free_spacedisk_free_space : : espace disponibleespace disponible disk_total_spacedisk_total_space : : espace occupéespace occupé filesizefilesize : : taille du fichiertaille du fichier fileatimefileatime : : date d'accèsdate d'accès filectimefilectime : : date de changement date de changement filemtimefilemtime : : date de modificationdate de modification fileownerfileowner : : propriétairepropriétaire filegroupfilegroup : : groupegroupe filepermsfileperms : : droits d'accèsdroits d'accès
03:21:51
03:21:51
3737
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
bool bool file_existsfile_exists ( string ( string filenamefilename ) )
retourne retourne truetrue si le fichier si le fichier filenamefilename existe, et existe, et falsefalse sinon sinon
ex : file_exists("foo.txt") ;ex : file_exists("foo.txt") ;
bool bool is_diris_dir ( string ( string filenamefilename ) )
retourne retourne truetrue si si filenamefilename existe et est un dossier existe et est un dossier
ex : is_dir("progweb1A") ;ex : is_dir("progweb1A") ;
bool bool is_fileis_file ( string ( string filenamefilename ) )
retourne retourne truetrue si si filenamefilename existe et est un fichier existe et est un fichier régulierrégulier
ex : is_file("index.php") ;ex : is_file("index.php") ;
03:21:52
03:21:52
3838
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
bool bool is_linkis_link ( string ( string filenamefilename ) )retourne retourne truetrue si si filenamefilename existe et est un lien existe et est un lien
symboliquesymboliqueex : is_link("progweb1A/Cours") ;ex : is_link("progweb1A/Cours") ;
string string filetypefiletype ( string ( string filenamefilename ) )renvoie le type du fichier renvoie le type du fichier filenamefilename. Réponses . Réponses
possibles :possibles : fifo :fifo : file UNIXfile UNIX char :char : fichier spécial de type caractèrefichier spécial de type caractère dir :dir : répertoirerépertoire block :block : fichier spécial de type blocfichier spécial de type bloc link :link : lien symboliquelien symbolique file :file : fichier régulierfichier régulier unknown :unknown : inconnuinconnu
03:21:52
03:21:52
3939
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
bool bool is_readableis_readable ( string ( string filenamefilename ) )retourne retourne truetrue si le fichier ou le dossier si le fichier ou le dossier filenamefilename
existe et est accessible en lecture. existe et est accessible en lecture. ex : is_readable("foo.txt") ;ex : is_readable("foo.txt") ;
bool bool is_writ[e]ableis_writ[e]able ( string ( string filenamefilename ) )retourne retourne truetrue si si filenamefilename existe et est existe et est
accessible en écriture. accessible en écriture. ex : is_writable("foo.txt") ;ex : is_writable("foo.txt") ;
bool bool is_executableis_executable ( string ( string filenamefilename ) )retourne retourne truetrue si si filenamefilename existe et est existe et est
exécutable.exécutable.ex : is_executable("index.php") ;ex : is_executable("index.php") ;
03:21:52
03:21:52
4040
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
float float disk_free_spacedisk_free_space ( string ( string directorydirectory ) )retourne le nombre d'octets disponibles sur le retourne le nombre d'octets disponibles sur le
disque contenant le dossier disque contenant le dossier directorydirectoryex : ex :
disk_free_space("/home/prof/cutrona/public_html"disk_free_space("/home/prof/cutrona/public_html") ;) ;
float float disk_total_spacedisk_total_space ( string ( string directorydirectory ) )lit récursivement toutes les tailles du dossier lit récursivement toutes les tailles du dossier
directorydirectory et retourne la somme et retourne la sommeex : ex :
disk_total_space("/home/prof/cutrona/public_html"disk_total_space("/home/prof/cutrona/public_html") ;) ;
int int filesizefilesize ( string ( string filenamefilename ) )renvoie la taille du fichier renvoie la taille du fichier filenamefilenameex : filesize("index.php") ;ex : filesize("index.php") ;
03:21:52
03:21:52
4141
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
int int fileatimefileatime ( string ( string filenamefilename ) )
renvoie la date de dernier renvoie la date de dernier accès auaccès au contenucontenu de de filenamefilename
ex : fileatime("index.php") ;ex : fileatime("index.php") ;
int int filectimefilectime ( string ( string filenamefilename ) )
renvoie la date à laquelle les renvoie la date à laquelle les propriétés du fichierpropriétés du fichier filenamefilename ont été ont été changéeschangées pour la dernière fois pour la dernière fois
ex : filectime("index.php") ;ex : filectime("index.php") ;
int int filemtimefilemtime ( string ( string filenamefilename ) )
renvoie la date de dernière renvoie la date de dernière modification dumodification du contenucontenu du fichier du fichier filenamefilename
ex : filemtime("index.php") ;ex : filemtime("index.php") ;
03:21:52
03:21:52
4242
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS INFORMATIVESFONCTIONS INFORMATIVES
int int fileownerfileowner ( string ( string filenamefilename ) )renvoie renvoie l'l'uiduid du propriétaire du fichier du propriétaire du fichier filenamefilename
arrayarray posix_getpwuidposix_getpwuid ( ( intint uiduid ) ) ex : fileowner("index.php") ;ex : fileowner("index.php") ;
int int filegroupfilegroup ( string ( string filenamefilename ) )renvoie le renvoie le gidgid groupe qui possède le fichier groupe qui possède le fichier filenamefilename
array array posix_getgrgidposix_getgrgid ( int ( int gidgid ) ) ex : filegroup("index.php") ;ex : filegroup("index.php") ;
int int filepermsfileperms ( string ( string filenamefilename ) )renvoie les permissions affectées au fichier renvoie les permissions affectées au fichier filenamefilenameex : fileperms("index.php") ;ex : fileperms("index.php") ;
03:21:53
03:21:53
4343
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE
readfilereadfile : : contenu contenu sortie std sortie std file_get_contentsfile_get_contents : : contenu contenu chaîne chaîne filefile : : contenu contenu tableau tableau fopenfopen : : ouvrir un fichierouvrir un fichier freadfread : : lire dans un fichier ouvertlire dans un fichier ouvert fwritefwrite : : écrire dans un fichier ouvertécrire dans un fichier ouvert fseekfseek : : se déplacer dans un fichierse déplacer dans un fichier ftellftell : : position dans un fichierposition dans un fichier fgetcfgetc : : lire un caractèrelire un caractère fgetsfgets : : lire une lignelire une ligne fclosefclose : : fermeture d'un fichierfermeture d'un fichier
03:21:53
03:21:53
4444
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE03:21:53
03:21:53
4545
Programmation Web 2011-2012
Programmation Web 2011-2012
FichierFichier
CurseurCurseur
FichierFichier
CurseurCurseur
LectureLecture
Écriture avecÉcriture avecremplacementremplacement
FichierFichier
CurseurCurseur
Écriture avecÉcriture avecdestructiondestruction
FichierFichier
CurseurCurseur
Écriture avecÉcriture avecajout seulajout seul
FONCTIONS DE LECTUREFONCTIONS DE LECTURE
int int readfilereadfile ( string ( string filenamefilename ) )lit le fichier lit le fichier filenamefilename et l'envoie sur la sortie et l'envoie sur la sortie
standard. standard. retourne le nombre d'octets lus depuis le fichierretourne le nombre d'octets lus depuis le fichierex : readfile("index.html") ;ex : readfile("index.html") ;
string string file_get_contentsfile_get_contents ( string ( string filenamefilename ))lit le fichier lit le fichier filenamefilename et place son contenu dans une et place son contenu dans une
chaînechaîneex : $s = file_get_contents("liste.txt") ;ex : $s = file_get_contents("liste.txt") ;
array array filefile ( string ( string filenamefilename ) )lit le fichier lit le fichier filenamefilename et place son contenu dans un et place son contenu dans un
tableau dont chaque élément contient une ligne tableau dont chaque élément contient une ligne du fichierdu fichier
ex : $t = file("liste.txt") ;ex : $t = file("liste.txt") ;
03:21:53
03:21:53
4646
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE
resource resource fopenfopen ( string ( string filenamefilename, string , string modemode ) )crée une ressource nommée, spécifiée par le crée une ressource nommée, spécifiée par le
paramètre paramètre filenamefilename, sous la forme d'un flux , sous la forme d'un flux ouvert selon le ouvert selon le modemode
ex : $fp = fopen("index.html", 'r+') ;ex : $fp = fopen("index.html", 'r+') ;
03:21:53
03:21:53
4747
Programmation Web 2011-2012
Programmation Web 2011-2012
ModeMode DescriptionDescription'r''r' Lecture, curseur au débutLecture, curseur au début'r+''r+' Lecture/écriture, curseur au débutLecture/écriture, curseur au début'w''w' Écriture, curseur au début, RAZÉcriture, curseur au début, RAZ'w+''w+' Lecture/écriture, curseur au début, RAZLecture/écriture, curseur au début, RAZ'a''a' Écriture, curseur à la fin, fseek HSÉcriture, curseur à la fin, fseek HS'a+''a+' Lecture/écriture, curseur à la fin, fseek HSLecture/écriture, curseur à la fin, fseek HS'x''x' Création, écriture, échec si existeCréation, écriture, échec si existe'x+''x+' Création, lecture/écriture, échec si existeCréation, lecture/écriture, échec si existe
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE
string string freadfread ( resource ( resource handlehandle, int , int lengthlength ) )lit jusqu'à lit jusqu'à lengthlength octets dans le fichier octets dans le fichier
référencé par référencé par handlehandle
int int fwritefwrite ( resource ( resource handlehandle, string , string stringstring [, int [, int lengthlength] )] )
écrit le contenu de la chaîne écrit le contenu de la chaîne stringstring dans le dans le fichier référencé par fichier référencé par handlehandle à concurrence de à concurrence de lengthlength octets, ou de la taille de la chaîne octets, ou de la taille de la chaîne stringstring
boolbool fclosefclose ( ( resourceresource handlehandle ) )ferme le fichierferme le fichier référencé par référencé par handlehandle
03:21:53
03:21:53
4848
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE
int int fseekfseek ( resource ( resource handlehandle, int , int offsetoffset [, int [, int whencewhence] )] )modifie le curseur de position dans le fichier modifie le curseur de position dans le fichier
référencé par référencé par handlehandle. La nouvelle position mesurée . La nouvelle position mesurée en octets à partir du début du fichier, est obtenue en octets à partir du début du fichier, est obtenue en additionnant la distance en additionnant la distance offsetoffset à la position à la position whencewhence : : SEEK_SETSEEK_SET - Position finale = - Position finale = offsetoffset octets. octets. SEEK_CURSEEK_CUR - Position finale = position courante + - Position finale = position courante + offsetoffset
octets.octets. SEEK_ENDSEEK_END - Position finale = position fin du fichier + - Position finale = position fin du fichier +
offsetoffset..
int int ftellftell ( resource ( resource handlehandle ) )retourne la position courante, en octets, du curseur retourne la position courante, en octets, du curseur
dans le fichier référencé par dans le fichier référencé par handlehandle
03:21:53
03:21:53
4949
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE LECTURE/ÉCRITUREFONCTIONS DE LECTURE/ÉCRITURE
string string fgetcfgetc ( resource ( resource handlehandle ) )
retourne une chaîne contenant un seul retourne une chaîne contenant un seul caractère, lu depuis le fichier référencé par caractère, lu depuis le fichier référencé par handlehandle
string string fgetsfgets ( resource ( resource handlehandle [, int [, int lengthlength] )] )
retourne une ligne du fichier référencé par retourne une ligne du fichier référencé par handlehandle jusqu'à la longueur maximale jusqu'à la longueur maximale lengthlength - - 1 octets1 octets
03:21:53
03:21:53
5050
Programmation Web 2011-2012
Programmation Web 2011-2012
EXEMPLE DE BOUCLE DE LECTUREEXEMPLE DE BOUCLE DE LECTURE
// Tentative d'ouverture du fichier// Tentative d'ouverture du fichier
ifif (($$hh == @ @fopenfopen((""dummy.txtdummy.txt", "", "rr"")))) {{
// Lecture du fichier ligne à ligne// Lecture du fichier ligne à ligne
whilewhile (((($$ligneligne == fgetsfgets(($$hh)))) !==!== falsefalse)) {{
// Utilisation de $ligne// Utilisation de $ligne
}}
// Fermeture// Fermeture
fclosefclose(($$hh)) ; ;
}}
03:21:53
03:21:53
5151
Programmation Web 2011-2012
Programmation Web 2011-2012
FONCTIONS DE RECHERCHEFONCTIONS DE RECHERCHE
fnmatchfnmatch : : contrôle de motifcontrôle de motif globglob : : recherche de cheminsrecherche de chemins
03:21:53
03:21:53
5252
Programmation Web 2011-2012
Programmation Web 2011-2012
CONTRÔLE DE MOTIFCONTRÔLE DE MOTIF
bool bool fnmatchfnmatch ( string ( string momo , string , string ch ch [, int [, int flagflag] )] )
vérifie si la chaîne vérifie si la chaîne chch correspond au motif correspond au motif momo..
fnmatchfnmatch utilise une forme simple utilise une forme simple d'expressions régulières équivalentes à celles d'expressions régulières équivalentes à celles utilisés en Shell UNIX.utilisés en Shell UNIX.
ex : fnmatch("*gr[ae]y", $color)ex : fnmatch("*gr[ae]y", $color)
03:21:53
03:21:53
5353
Programmation Web 2011-2012
Programmation Web 2011-2012
RECHERCHE DE CHEMINSRECHERCHE DE CHEMINS
array array globglob ( string ( string momo [, int [, int flagflag] )] )
recherche tous les chemins correspondant au recherche tous les chemins correspondant au motif motif momo..
retourne un tableau contenant les noms des retourne un tableau contenant les noms des chemins trouvéschemins trouvés
valeurs possibles de valeurs possibles de flagflag : : GLOB_NOSORTGLOB_NOSORT – Pas de tri– Pas de tri GLOB_NOESCAPEGLOB_NOESCAPE –– Pas de protection des méta- Pas de protection des méta-
caractère avec un anti-slashcaractère avec un anti-slash GLOB_BRACEGLOB_BRACE –– Remplace {a,b,c} par 'a', 'b' ou Remplace {a,b,c} par 'a', 'b' ou
'c''c' GLOB_ONLYDIRGLOB_ONLYDIR –– Ne retourne que les dossiers Ne retourne que les dossiers
03:21:53
03:21:53
5454
Programmation Web 2011-2012
Programmation Web 2011-2012
PHP & MYSQL
5555/154/154
PRÉSENTATION
MySQL est une base de données implémentant MySQL est une base de données implémentant le langage de requête SQL un langage le langage de requête SQL un langage relationnel très connu. Cette partie suppose relationnel très connu. Cette partie suppose connue les principes des bases de données connue les principes des bases de données relationnelles.relationnelles.
phpMyAdmin qui permet l’administration aisée phpMyAdmin qui permet l’administration aisée des bases de données MySQL avec php. des bases de données MySQL avec php.
Avec MySQL vous pouvez créer plusieurs bases Avec MySQL vous pouvez créer plusieurs bases de données sur un serveur. Une base est de données sur un serveur. Une base est composée de tables contenant des composée de tables contenant des enregistrements.enregistrements.
5656//154154
FONCTIONS DE CONNEXION
mysql_connect($server,$user,$password)mysql_connect($server,$user,$password) : permet de se connecter au serveur : permet de se connecter au serveur $server$server en tant qu’utilisateur en tant qu’utilisateur $user$user avec le mot de avec le mot de passe passe $password$password, retourne l’identifiant de , retourne l’identifiant de connexion si succès, FALSE sinonconnexion si succès, FALSE sinon
mysql_select_db($base[,$id])mysql_select_db($base[,$id]) : permet de : permet de choisir la base choisir la base $base$base, retourne TRUE en cas , retourne TRUE en cas de succès, sinon FALSEde succès, sinon FALSE
mysql_close([$id])mysql_close([$id]) : permet de fermer la : permet de fermer la connexionconnexion
5757//154154
EXEMPLE
Exemple 1 :Exemple 1 :if( $id = if( $id =
mysql_connectmysql_connect(‘’localhost’’,’’foobar’’,’’0478’(‘’localhost’’,’’foobar’’,’’0478’’) ) {’) ) {if( $id_db = if( $id_db = mysql_select_dbmysql_select_db(‘’gigabase’’) ) {(‘’gigabase’’) ) {
echo ‘’Succès de connexion.’’;echo ‘’Succès de connexion.’’;/* code du script … *//* code du script … */
} else {} else {die(‘’Echec de connexion à la base.’’);die(‘’Echec de connexion à la base.’’);
}}mysql_closemysql_close($id);($id);
} else {} else {die(‘’Echec de connexion au serveur de base die(‘’Echec de connexion au serveur de base de données.’’);de données.’’);
}}
5858//154154
UNE AUTRE FACON
Exemple 2 :
@mysql_connect(‘’localhost’’,’’foobar’’,’’0478’’) or die(‘’Echec de connexion au serveur.’’);
@mysql_select_db(‘’gigabase’’) or die(‘’Echec de sélection de la base.’’);
Cet exemple est équivalent au précédent mais plus court à écrire. Le symbole @ (arobase) permet d’éviter le renvoie de valeur par la fonction qu’il précède.
On pourra avantageusement intégrer ce code dans un fichier que l’on pourra joindre par include(). C’est aussi un moyen de sécuriser le mot de passe de connexion.
5959//154154
INTERROGATION
Pour envoyer une requête à une base de donnée, il existe la fonction : mysql_query($str)
Les requêtes les plus couramment utilisées sont : CREATE (création d’une table), SELECT (sélection), INSERT (insertion), UPDATE (mise à jour des données), DELETE (suppression), ALTER (modification d’une table), etc.
$result = mysql_query(‘’SELECT address FROM users WHERE name=\’’$name\’’’’);
Attention, contrairement à Oracle SQL, les requêtes MySQL ne se terminent pas par un point virgule ‘;’ et n’autorisent pas les SELECT imbriqués.
6060//154154
EXTRACTION DES DONNÉES
Sous MySQL, l’affichage des résultats d’une requête se fait ligne par ligne. Une boucle permettra de recueillir chacune des lignes à partir de l’identifiant de résultat.
SQL > SELECT * FROM users; ID NAME ADDRESS---------------------------- 1 Boris Moscou 1ère ligne 2 Bill Washington 2ème ligne 3 William London 3è ligne
6161//154154
EXTRACTION DES DONNÉES mysql_fetch_row($result) : retourne une ligne de
résultat sous la forme d’un tableau. Les éléments du tableau étant les valeurs des attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne.
$requet = ‘’SELECT * FROM users’’;
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_row($result)) {
$id = $ligne[0];
$name = $ligne[1];
$address = $ligne[2];
echo ‘’$id - $name, $address <br />’’;
}} else {
echo ‘’Erreur de requête de base de données.’’;}
6262//154154
EXTRACTION DES DONNÉES mysql_fetch_array($result) : retourne un tableau associatif.
Les clés étant les noms des attributs et leurs valeurs associées leurs valeurs respectives. Retourne FALSE s’il n’y a plus aucune ligne.
$requet = ‘’SELECT * FROM users’’; if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_array($result)) {$id = $ligne[‘’id’’];
$name = $ligne[‘‘name’’]; $address = $ligne[‘’address’’];echo ‘’$id - $name, $address <br />’’;
}} else {
echo ‘’Erreur de requête de base de données.’’;}Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau
associatif.
6363//154154
EXTRACTION DES DONNÉES mysql_fetch_object($result) : retourne un objet. Les
attributs de l’objet correspondent à ceux de la ligne de résultat. Et les valeurs des attributs de l’objet correspondent à ceux de la ligne de résultat. Retourne FALSE s’il n’y a plus aucune ligne.
$requet = ‘’SELECT * FROM users’’; if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_object($result)) {$id = $ligne->id;
$name = $ligne->name; $address = $ligne->address;echo ‘’$id - $name, $address <br />’’;
}} else {
echo ‘’Erreur de requête de base de données.’’;}Ici, on accède aux valeurs par leur attribut dans l’objet.
6464//154154
FONCTIONS ADDITIONNELLES
mysql_free_result($result) : efface de la mémoire du serveur les lignes de résultat de la requête identifiées par $requet. Très utile pour améliorer les performances du serveur.
mysql_insert_id([$id]) : retourne l’identifiant d’un attribut clé primaire AUTO_INCREMENT de la dernière insertion.
mysql_num_fields($result) : retourne le nombre d’attributs du résultats.
mysql_num_rows($result) : retourne le nombre de lignes du résultats. Et ainsi permet de remplacer le while par un for.
Evitez de polluer votre page avec des Warnings.6565//154154
PHPMYADMIN
03:21:55
03:21:55
Programmation Web 2011-2012
Programmation Web 2011-2012
6666
PHPMYADMIN
Interface Web pour MySQL écrite en PHP Projet open source :
http://www.phpmyadmin.net Fonctionnalités :
Affichage / création / modification de tables Affichage / insertion / suppression des contenus Recherches / Requêtes Importation / exportation de tables / base / données Optimisation de tables / base Moteur MyISAM (5.5) :
relationnel, transactionnel, plain text, très rapide Moteur INNODB (5.5) :
relationnel, transactionnel, ACID, moins rapide
03:21:55
03:21:55
6767
Programmation Web 2011-2012
Programmation Web 2011-2012
CONNEXION
03:21:55
03:21:55
6868
Programmation Web 2011-2012
Programmation Web 2011-2012
Login : votre login habituelLogin : votre login habituelMot de passe : votre login habituelMot de passe : votre login habituelBase de données : votre login habituelBase de données : votre login habituel
ACCUEIL VERSION 2
03:21:55
03:21:55
6969
Programmation Web 2011-2012
Programmation Web 2011-2012
ACCUEIL VERSION 3.4
03:21:55
03:21:55
7070
Programmation Web 2011-2012
Programmation Web 2011-2012
STRUCTURE D’UNE BASE
03:21:55
03:21:55
7171
Programmation Web 2011-2012
Programmation Web 2011-2012
AfficherAfficher
StructureStructure
RechercherRechercher InsérerInsérer
ViderVider
SupprimerSupprimer
REQUÊTE DANS LA BASE
03:21:55
03:21:55
7272
Programmation Web 2011-2012
Programmation Web 2011-2012
RECHERCHE DANS LA BASE
03:21:55
03:21:55
7373
Programmation Web 2011-2012
Programmation Web 2011-2012
REQUÊTE ASSISTÉE DANS LA BASE
03:21:56
03:21:56
7474
Programmation Web 2011-2012
Programmation Web 2011-2012
AFFICHER LE CONTENU D'UNE TABLE
03:21:56
03:21:56
7575
Programmation Web 2011-2012
Programmation Web 2011-2012
STRUCTURE D'UNE TABLE
03:21:56
03:21:56
7676
Programmation Web 2011-2012
Programmation Web 2011-2012
REQUÊTE SUR UNE TABLE
03:21:56
03:21:56
7777
Programmation Web 2011-2012
Programmation Web 2011-2012
RECHERCHE DANS UNE TABLE
03:21:56
03:21:56
7878
Programmation Web 2011-2012
Programmation Web 2011-2012
INSERTION DE DONNÉES DANS UNE TABLE
03:21:56
03:21:56
7979
Programmation Web 2011-2012
Programmation Web 2011-2012
EXPORTATION DE DONNÉES / BASE
03:21:57
03:21:57
8080
Programmation Web 2011-2012
Programmation Web 2011-2012
IMPORTATION DE DONNÉES / BASE
03:21:57
03:21:57
8181
Programmation Web 2011-2012
Programmation Web 2011-2012
OPÉRATIONS SUR UNE TABLE
03:21:57
03:21:57
8282
Programmation Web 2011-2012
Programmation Web 2011-2012
CONCEPTEUR
03:21:58
03:21:58
8383
Programmation Web 2011-2012
Programmation Web 2011-2012