RÉSUMÉ I.FALL 07-11-18 GÉNÉRALITÉS: LE WEB, LES APPLICATIONS WEB DÉFINITION Internet: Réseau mondial et les services qui fonctionnent sur ce réseau. Web: Service internet dédié à l’échange de documents hypertextes. Intranet: Restriction d’internet à l’échelle d’une organisation. Extranet: Internet tourné vers l’extérieur de l’organisation. www: World Wide Web Trois (3) piliers du web: Langage de composition de documents hypertextes (HTML) Protocole qui régit le fonctionnement client/serveur (HTTP) Un système de nommage de ressources (URL) HTTP: HyperText Transfer Protocol: Protocole client/serveur → port 80 serveur http (serveur web) et client http (client web) → client et serveur sont des entités logicielles W3C : WORD WIDE WEB CONSORTIUM → Spécification des http; C’est un groupe formé d’industriels et des laboratoires universitaires qui régissent le web. Ils s’approprient les développements du W3C pour les incrémenter. Protocole → Définit le format de même que tous les caractéristiques des messages échangés entre clients et serveurs http. Actuellement nous utilisons le HTTP 1.1 https → version sécurisée;il est en mode non connecté (cad si un client se connecte envoie une requête http dès que le serveur lui donne la réponse il(le client) n’est plus connecté au serveur). mode non connecté différent de persistant(on reste toujours connecter jusqu’à ck) DÉSIGNATION DES RESSOURCES WEB URL: Uniform Ressource Locator (Localisation de ressource uniforme) → C’est une désignation d’une page ou de toute autre ressource sur internet Numéro de port → permet d’identifier une application sur une machine; c’est une valeur numérique qui tient sur 2 octets / → chemin ou nom de fichier # → ancre exemple: annuaire ? → paramètre :// → protocole Une URL complète: protocole://nom serveur/ressource demandée MIME: Contexte → il faut que le navigateur soit capable d’identifier les applications associées au type de ressources qu’il ne peut pas gérer. Modèle Statique: «déplacement de ressources» → ce qu’il y a sur le site c’est également ce qu’il y a sur le serveur.Autrement dit le navigateur affiche la page telle qu’elle est dans le serveur. Modèle Dynamique: la page est fabriquée suite à la requête du client. Exécutable: fichier écrit en langage machine 21-11-18 PHP phpinfo(): c’est la fonction qui renseigne sur l’environnement du serveur DÉFINITION Répertoire de publication: le répertoire à partir duquel les ressources du serveur sont accessibles au client (si la ressource n’est pas dans ce répertoire alors elle n’est pas accessible à un client) Il se trouve dans disque local C → WAMP c’est soit HTDOCS soit WWW Nom du serveur: Localhost → 127.0.0.1 Répertoire temporaire: répertoire de travail du serveur (les ressources sont directement stocker dans le répertoire temporaire puis les scripts viendront les déplacer) donc c’est le dossier dans lequel le serveur reçoit les fichiers/ressources provenant du client en attendant leur traitement → tmp Répertoire de journalisation: c’est là où des fichiers où il y a des événements seront placés → logs CONF → répertoire ou seront placés les fichiers de configurations de notre serveur TEST Créer le fichier test.php dans www puis aller sur le navigateur et taper http://localhost/test.php On obtient une page blanche On modifie le code au lieu de <? on fait <?php Pour obtenir un résultat: 1ère règle: il faut que la ressource soit dans le repertoire de publication 2ième règle: il faut que le serveur marche 3ième règle: il faut lancer le navigateur et mettre L’URL (la requête http) LE FICHIER HTTPD.CONF httpd.conf: c’est le fichier de configuration principale il se trouve dans Wamp/bin/apache/apache2.4.9/conf dans le fichier httpd.conf: Les commentaires → # Les directives: Listen → lier le serveur a un port donner: il fixe le numéro du port d’écoute → nom @ip: n°port Donc pour indiquer le numéro de port LoadModule → directive qui permet d’associer l’interpréteur au serveur et aussi pour ajouter des extensions au serveur web L’extension peut être un interpréteur 28-11-18 ServerAdmin → on met là bas l’adresse mail de l’administrateur du serveur donc s’il y a erreur on va générer une page web dans laquelle il y a le message d’erreur avec cette adresse mail que le client doit contacter en cas d’urgence ServerName → pour fixer le nom du serveur et éventuellement un numéro de port pour identifier le serveur par défaut le serveur name c’est localhost DocumentRoot → nom du repertoire à partir duquel on fixe le nom du repertoire de publication DirectoryIndex →: permet de dire au serveur au cas où on a une URL sans ressources à ce moment chercher le fichier index0.html si vous ne le trouvez pas, chercher le fichier index.php … Userdir: se trouve dans conf/extra/httpduserdir.conf → Intérêt de userdir: on peut modifier directement nos sites dans notre compte d’utilisateur se trouvant sur la machine serveur Il faut donc que dans le repertoire de publication chacun ait son repertoire personnel Nom utilisateur créer sur une machine serveur: ~nomuser Exp si je veux modifier directement dans mon compte je mets http://www.esp.sn/~MNB/ LE FICHIER PHP.INI php.ini: fichier par défaut dans lequel se trouve les configurations de php Les commentaires → ; Les directives: Engine → active le moteur d’interprétation du script php sur apache Quand on le met a OFF même si y a Loadmodule y aura pas d’interprétation Short_open_tag → SOP → autorise l’utilisation de la balise <? Si SOP est à OFF il faut mettre <?php car <? fonctionne que lorsque SOP est à ON Précision → permet de fixer le nombre significatif de chiffre après la virgule Les directives relative aux limites des ressources: Max_execution_time → temps d’exécution maximale de chaque script Max_input_time → temps que le script prend pour récupérer les paramètres d’une requête Time_out → délai au dessus duquel l’exécution est arrêtée Memory_limit → mémoire qu’un script peut occuper pour s’exécuter Register_globals → variable d’environnement Post_max_size → taille max des données que peuvent envoyer les clients File_uploads → pour dire si on peut recevoir ou non des fichiers téléchargés du coté client vers serveur Uploads_ → là où on fixe le répertoire où on mettra les fichiers temporaires relatifs au fichiers téléchargés Extensions:……._mysql.so → là où il y a toutes les connexions entre l’interpréteur de base de données et les autres extensions Mysql.max_persistent: Mysql.max_links → pour autoriser le nombre de connexion à un serveur 09-01-19 VARIABLE D’ENVIRONNEMENT Ce sont des variables prédéfinies dans le SE et chaque application installées à accès à ces variables d’environnement(VE) Sur linux la commande permettant de mettre à jour le contenu du VE: export $nomvariable=$nomvariable:chemin Exemple export $PATH=$PATH:/usr/bin/jdk8 VE en php donne des informations sur l’environnement de notre programme;leur nom s’écrit en lettre capitale Exemple de VE: PHP_SELF → le nom du fichier du script en cours d’exécution(par rapport au document root) SCRIPT_FILENAME → le chemin absolu jusqu’au script courant SERVER_PORT → le port d’écoute du serveur d la machine utilisée pour les communications SERVER_NAME → le nom du serveur hôte qui éxecute le script REMOTE_ADDR → l’adresse ip de la machine cliente qui a demandée la page courante REMOTE_PORT-> le port utilisé par la machine cliente pour communiquer avec le serveur web DOCUMENT_ROOT -> la racine sous laquelle le script courant est exécutée (comme définie dans la configuration du serveur) POUR AVOIR ACCÈS AU CONTENU D’UNE VE Il y a 3 manières: 1 → getenv() Exemple: $v=getenv(‘’REMOTE_ADDR’’); 2 → $_SERVER: il met le contenu sous forme d’un tableau associatif Exemple: $v=$_SERVER[‘’REMOTE_ADDR’’]; 3 → $suivi_du_nom_de_la_variable -> pour les anciennes versions de php Exemple: $v=$REMOTE_ADDR; VARIABLE ISSUES DE FORMULAIRE POST → Les données vont aller avec la requête http et sont placées dans le corps du message: GET → Les données sont transportées via l’entête et vont apparaître au niveau de l’URL: URL de type GET: http://www.mamie.fr/kelkchoz.php? p1=v1&&p2=v2 $_REQUEST[‘’nom’’]: remplace GET et POST Pour vérifier qu’une variable existe: isset() 23.01.19 GESTION DE FICHIERS On parle de téléchargement dans un sens comme dans un autre On a 2 modes de téléchargements : serveur-client: dowloading (1) sens client → serveur: uploading (2) (2) on peut le faire avec un formulaire (il faut k sa soit un formulaire post qui devra être envoyer avec un fichier qu’on doit mettre dans le corps du formulaire <form action=’’mamie.php’’ ENCTYPE=’’multipart/form-data’’> action qui va faire le traitement Multipart/from-data veut dire que les fichiers peuvent être de n’importe quel nature mamie.php → ce qu’on va faire du coté serveur lorsqu’un client envoie des fichiers → ces fichiers arrivé dans le serveur seront stockés dans tmp avec un nom fabriqué par le serveur Pour les fichier on fait $_FILES qui est un tableau a 2 dimensions (bidimensionnel) name récupérer le nom sur le client tmp_name pour récupérer le nom sur le client size Pour récupérer la taille en octet après ça on récupérer les infos sur le fichier Copier le fichier de son emplacement temporaire vers son emplacement de travail FONCTIONS QUI PERMETTENT DE GÉRER LES FICHIERS Pour récupérer le nom temporaire du fichier $_FILES[‘’nomfichier’’][‘’tmp_name’’] Fonction copy() Copy($_FILES[‘’f’’][‘’tmp_name’’],’’./lesCV/‘’.$_FILES[‘’f’’] [‘’name‘’]); Ou $ch=’’./image/’’.$_FILES[‘’f’’][‘’name’’] après on fait Copy($_FILES[‘’f’’][‘’tmp_name’’],$ch) Je prends le fichier avec le nom je le copie dans le repertoire et je change en même temps son nom je le remplace par son nom original LECTURE /ÉCRITURE Lorsqu’on a un fichier par défaut il est stocké au niveau de la mémoire auxiliaire ou au niveau du disk dur quand on ouvre le fichier il va y avoir une zone de la mémoire RAM qui va être appeler zone tampon et qui va être associer à un fichier et les données du fichier seront stockées là-bas tant qu’on a pas fermé le fichier la zone mémoire reste indisponible donc il faut refermer le fichier pour que la zone tampon soit libérée L’ouverture va être fait suivant un mode On va considérer qu’on va travailler avec un fichier test Le mode: → w pour écrire (s’il y avait déjà des choses sur le fichier ça va être supprimer) → r pour lire → rw les données ne sont pas perdues le curseur est ramené au début → a: Append: pour ajouter à la fin Fopen va renvoyer un descripteur de fichier(comme un pointeur qui permet d’accéder à la mémoire tampon) Exit=die = interrompt l’exécution Fgets la fonction lecture: elle renvoie une chaîne de caractère. Elle s’arrête pour 2 choses \n ou lorsqu’on a obtenu le nombre de caractère qu’on lui avait demander de lire exemple: (fgets ($file, ndr de caract)) Feof → f end of file Fonction qui permet de vérifier si oui ou non je suis à la fin d’un fichier → en mode lecture Toutes les fonctions prennent en paramètre le descripteur du fichier et toutes les fonctions commencent par f Quand on ouvre en écriture on fait la fonction fputs permet d’ecrire dans le fichier a la position courante (si c’est en mode w et r on écrit au début si c’est en mode append on écrit à la fin) Lecture ou écriture par bloc → fwrite ou fread Il y a des fonctions qui permettent de gérer des fichiers comme des entités globales GESTION DES SESSIONS Quand on crée une session au niveau du serveur un il sera créé un fichier ou les info sont stockées dans les variables de session et pour retrouver le fichier il faut le phpsessid Phpsessid:c’est un identifiant de session permettant au serveur d’avoir accès au bon fichier; c’est lui qui va transiter de page à page si on se déconnecte le fichier sera supprimer et l’identifiant aussi FONCTIONS session_start(): crée une nouvelle session( sil ya pa d session en cours); s’il yen a déjà on reste connecter sur la session où on était Pour créer une variable de session $l= $_SESSION[‘’log’’]; dans p1 session_destroy():pour détruire la session; Délai de stationnement: quand on reste trop longtemps sans faire d’interaction il faut le déconnecter Die=echo+exit If (x<5) Die(«c’est bon»); Else «ce n’est pas bon»; si on enlève le else ça donne la mm chose ACCÈS AU BASE DE DONNÉES Une base de données: ensemble de donnée organisées selon un modèle (relationnel , objetrelationnel, native, non sql..) Modèle relationnel: donné organiser sous la forme de relation( d’enregistrement(tuple) n-uplet) Algèbre relationnel: principale opération: projection , sélection, jointure 27-03-19 FONCTIONS 1 → mysql-connect: pour se connecter à la base de données. ces paramètres → Nom user, mdp, nom serveur de base de données. On aura besoin d’un descripteur de connexion (pour la mémoire) $c=mysql_connect($user,$pwd,$host); on peut avoir plusieurs connexion en cours 2 → mysql-select-db: pour sélectionner une base de données db(database) pour dire base de donnée ces paramètres -> nom de la base on peut ajouter le nom de la variable du descripteur de connexion au cas ou on a 2 connexion en cours Mysql_select_db($bd2,[$c]); $c genre avec la connexion c 3 → Mysql_query: pour les requêtes ces paramètres → variable sur laquelle on a mis la requête et si on a plusieurs connexions on met la variable de connexion et ion met le résultat dans une variable $r Exp $req=select * from table; $r=mysql_query($req); 4 → mysql_fetch_row: la liste courante sous forme d’un tableau Pour les résultats renvoie une ligne qui correspond à un enregistrement: la ligne c’est un tableau donc il faut parcourir la relation résultante $row[0], $row[1]… Si on l’appelle une fois elle renvoie la 1ere valeur et le curseur est pointé sur la 2ieme ligne …, donc on fait une boucle(tant que $row n’est pas nul) pour pouvoir tout afficher et on le met généralement dans un tableau Il y a mysql_fetch_object.. pour les mises à jour: $r c’est un nombre pour les interrogation: $r est une relation exemple: $row= mysql_fetch_row ($r) while ($row=mysql_fetch_row($r)){ echo ‘’<tr>’’; echo ‘’ <td>’’.$row[0].’’</td><td>’’.$row[1].’’</ td>’’; echo ‘’</tr>‘’;} à la fin on fait mysql-close() pour fermer; Si on fait une postgress: on remplace mysql par pg exemple: pg_connect Avec oracle on remplace mysql par ora exemple oraconnect odbc: open database connectivity: virtuelle faire comme si on avait un sgbd virtuelle avec les relations qui correspondent aux mêmes relations de notre sgbd avec accès sur ces requêtes dans le monde de microsoft sql server travailler sur n’importe quel sgbd à travers des fichiers php SQL ANSI 92 ça marche n’importe où PDO → comme un sgbd virtuelle dans le monde du code; il a un driver: un fichier a télécharger toutes les requêtes qui vont venir vont être traduit adéquatement avec le sgbd convertir des requête en des requêtes spécifiques Si on change de base de données on change le fichier du pdo