AJAX avec jquery. Classe de première SI

Dimension: px
Commencer à balayer dès la page:

Download "AJAX avec jquery. Classe de première SI"

Transcription

1 AJAX avec jquery Table des matières 1. les requêtes HTTP Le fonctionnement du web AJAX par Javascript XmlHttpRequest avec jquery La fonction $.ajax() $.ajax() et ses paramètres Les paramètres success, error et complete Les raccourcis $.get() et $.post() Sérialisation des formulaires Un formulaire de connexion avec AJAX Côté client : du HTML et un appel AJAX Côté serveur : un script PHP de connexion De retour côté client Les évènements AJAX Les requêtes AJAX sur écoute Cas d'utilisation des évènements La méthode load() Un tchat en AJAX Le système de tchat Codage Le fichier HTML PHP et SQL La couche jquery Améliorations...19 L'architecture informatique AJAX (Asynchronous JavaScript and XML) permet de construire des applications Web et des sites web dynamiques interactifs sur le poste client en se servant de différentes technologies ajoutées aux navigateurs web entre 1995 et AJAX.odt 1

2 1. les requêtes HTTP AJAX n'est pas une technologie, c'est le résultat d'un ensemble de technologies du web qui fonctionnent ensemble pour arriver à un objectif simple : rafraîchir une partie de page web sans recharger la page complète. Pour interagir avec une base de données, jquery va devoir appeler des scripts côté serveur. AJAX repose sur ce fondement même, la communication asynchrone d'un langage côté client, avec un langage côté serveur. Ainsi, pour mettre en place un appel AJAX sur un site, il faut : Un langage côté client : JavaScript, avec jquery Un langage côté serveur : PHP Un appel AJAX La base de chaque appel AJAX est une requête HTTP. jquery va simplifier énormément l'appel et le suivi de cette requête HTTP, et le traitement du retour que fait PHP Le fonctionnement du web Le web est un ensemble d'ordinateurs fonctionnant en réseau. On peut ranger ces ordinateurs dans deux catégories : les clients et les serveurs. Les serveurs sont des ordinateurs sur lesquels se trouvent les sites web, ils sont généralement très très puissants et fonctionnent en permanence. Pour obtenir une page web, un client demande à un serveur une page web. Le serveur cherche dans son disque dur à la recherche de la page demandée, et il la renvoie au client. Si des fichiers JavaScript sont rattachés à cette page, le serveur les fait parvenir aussi au client. Le navigateur web du client lit ensuite le code HTML et interprète le code JavaScript que le serveur lui a renvoyé, et il affiche la page au visiteur. Néanmoins, pour que le web fonctionne, il faut que le client et le serveur parlent la même langue. Le protocole utilisé sur le World Wide Web est le protocole HTTP. La "demande" que le client fait est ce que l'on appelle une «requête HTTP» ; ce que le serveur répond, c'est la «réponse HTTP». Il existe plusieurs types de requête HTTP. L'un d'eux est le type GET 1. On l'utilise lors des rappels AJAX pour obtenir des données (exemple : un système pour recharger des commentaires dès que l'on clique sur un bouton «Plus de commentaires»). Il est également possible d'envoyer des données grâce à GET. Généralement les caractères?, = et & y sont présents : 1 obtenir 5-AJAX.odt 2

3 Le type POST est un type dédié à l'envoi de données, mais il est possible aussi d'en recevoir (exemple : un système pour envoyer un ). Un grand nombre de types de requêtes HTTP existent, mais ils ne nous seront pas nécessaires pour traiter les appels AJAX car les types GET et POST couvriront 99% des besoins AJAX par Javascript JavaScript a la particularité d'intégrer en natif une classe appelée XmlHttpRequest (XHR). En instanciant un objet à partir de cette classe, on peut envoyer une requête HTTP vers un serveur grâce à cet objet XHR. Instancier un objet XHR peut devenir difficile car il faut prendre en compte le problème de compatibilité entre les navigateurs. Les navigateurs Internet Explorer antérieurs à la version 7 utilisaient une implémentation différente de XHR : ActiveX, développé par Microsoft. Il va donc falloir prendre en compte ces navigateurs pour qu'un appel AJAX soit mis en œuvre sur ces ceuxci : var xhr = null; if ( window.xmlhttprequest window.activexobject ){ if ( window.activexobject ){ try xhr = new ActiveXObject("Msxml2.XMLHTTP"); catch(e) xhr = new ActiveXObject("Microsoft.XMLHTTP"); else xhr = new XMLHttpRequest(); else{ alert("le navigateur ne supporte pas l'objet XMLHTTPRequest..."); return; XmlHttpRequest avec jquery Instancier un objet XmlHttpRequest devient extrêmement simple, grâce à la fonction jquery.ajax() ou $.ajax() : $.(document).ready(function(){ /* * Utilisons $.ajax pour créer une instance de XmlHttpRequest */ $.ajax(); Exemple : soit un fil de commentaire qui se recharge en AJAX en cliquant sur un bouton «plus de commentaires» d'identifiant #more_com. On va écouter l'évènement click() sur ce bouton et dès qu'il sera réalisé, on instanciera un objet XHR. $(document).ready(function(){ /* * Ecoutons l'évènement click() */ $("#more_com").click(function(){ $.ajax(); 5-AJAX.odt 3

4 XHR permet d'envoyer des requêtes HTTP depuis JavaScript, cette classe est donc à la base des appels AJAX. La fonction $.ajax() de jquery permet d'instancier un objet très rapidement à partir de cette classe. 2. La fonction $.ajax() La fonction $.ajax() est incontournable pour les appels AJAX en jquery $.ajax() et ses paramètres Lorsque l'on envoie une requête HTTP, on demande quelque chose au serveur. Dans ce cas de figure, il s'agit simplement du script côté serveur qui va aller chercher les commentaires dans la base de données et nous les retourner. Pour spécifier quelle est la ressource ciblée, il faut utiliser le paramètre url de $.ajax() : $("#more_com").click(function(){ url : 'more_com.php' // La ressource ciblée Le fichier PHP exécuté côté serveur s'appelle more_com.php. C'est un lien relatif, le fichier PHP se trouve donc dans le même répertoire que le fichier JavaScript, et le fichier HTML auquel il est lié. Ce code fonctionne, mais il ne fait rien. Pour envoyer des informations au serveur, il faut envoyer une requête de type GET : $("#more_com").click(function(){ url : 'more_com.php', type : 'GET' // La ressource ciblée // Le type de la requête HTTP NB : le type GET est le type que jquery prend par défaut. On peut faire passer des paramètres avec GET pour les utiliser côté serveur dans l'array $_GET. Pour cela, il faut utiliser le paramètre data : $("#more_com").click(function(){ url : 'more_com.php', // La ressource ciblée type : 'GET' // Le type de la requête HTTP. data : 'utilisateur=' + nom_user; Du côté serveur, $_GET['utilisateur'] contiendra la valeur de la variable nom_user. 5-AJAX.odt 4

5 Il faut spécifier maintenant le type de données à recevoir de PHP avec datatype. On peut recevoir tout et n'importe quoi : du XML, du HTML, du texte, du JSON... (on utilisera ici du HTML) : $("#more_come").click(function(){ url : 'more_com.php', // La ressource ciblée type : 'GET', // Le type de la requête HTTP /** * data n'est plus renseigné, on ne fait plus passer de variable */ datatype : 'html' // Le type de données à recevoir, ici, du HTML Pour envoyer des informations au serveur avec une requête HTTP, il faut commencer à spécifier un type POST : $("#envoyer").click(function(){ url : 'send_mail.php', // Le nom du script a changé : c'est send_mail.php type : 'POST', // Le type de la requête HTTP, ici devenu POST datatype : 'html' Pour faire passer les variables JavaScript qui contiennent les informations du formulaire au script PHP, il faut uiliser l'argument data : $("#envoyer").click(function(){ url : 'send_mail.php', type : 'POST', // Le type de la requête HTTP, ici devenu POST // On fait passer les variables au script more_com.php data : ' =' + + '&contenu=' + contenu_mail, datatype : 'html' 2.2. Les paramètres success, error et complete jquery propose un paramètre pour gérer le retour de la fonction $.ajax() en cas de réussite. Le paramètre s'appelle success, et il ne sera exécuté QUE si l'appel AJAX a abouti. Ce paramètre prend en charge une fonction qui sera exécutée : $("#more_com").click(function(){ url : 'more_com.php', type : 'GET', datatype : 'html', // On désire recevoir du HTML success : function(code_html, statut){ // code_html contient le HTML renvoyé 5-AJAX.odt 5

6 L'argument statut est une chaîne de caractère automatiquement générée par jquery pour donner le statut de la requête. Si l'appel AJAX a rencontré une erreur, le paramètre qui va être employé sera error. Le paramètre exécute une fonction si l'appel AJAX a échoué : $("#more_com").click(function(){ url : 'more_com.php', type : 'GET', datatype : 'html', success : function(code_html, statut){ // success est toujours en place, error : function(resultat, statut, erreur){ La fonction exécutée par error prend en charges trois arguments : le résultat, le statut, et l'erreur. Le second argument est le même que pour success, il ne nous sera pas utile. Le premier est un objet XHR renvoyé par jquery. Le dernier est une exception : vous pouvez ici placer une chaîne de caractère à afficher à votre visiteur si l'appel AJAX n'a pas fonctionné. Un dernier paramètre de $.ajax() : complete, qui va s'exécuter une fois l'appel AJAX effectué. Le paramètre va prendre deux arguments, l'objet resultat dont nous avons parler plus haut ainsi qu'un statut : $("#more_com").click(function(){ url : 'more_com.php', type : 'GET', datatype : 'html', success : function(code_html, statut){, error : function(resultat, statut, erreur){, complete : function(resultat, statut){ C'est à l'intérieur de ces fonctions qu'il faut traiter la suite des évènements. Exemple : ajouter les commentaires reçus du serveur à un fil de commentaires sur une page. Imaginons un bloc div portant l'identifiant #commentaires qui contienne les commentaires déjà chargés dans la page. Nous allons y ajouter les commentaires reçus. 5-AJAX.odt 6

7 // On reprend le même id que dans le précédent chapitre $("#more_com").click(function(){ url : 'more_com.php', type : 'GET', datatype : 'html', success : function(code_html, statut){ // On passe code_html à jquery() qui va nous créer l'arbre DOM! $(code_html).appendto("#commentaires");, error : function(resultat, statut, erreur){, complete : function(resultat, statut){ 2.3. Les raccourcis $.get() et $.post() Écrire une fonction $.ajax() pour ensuite définir son type GET/POST dans le paramètre adéquat, c'est lourd. Pour créer directement une requête GET ou POST, il existe les fonctions $.get() et $.post(). Toutes les deux fonctionnent de la même manière, elles font appel implicitement à $.ajax() en lui spécifiant un type GET pour $.get() et un type POST pour $.post() : /** * $.get() vaut $.ajax() avec un type get * Ces lignes reviennent à faire un $.get(); */ type : 'get' /** * De la même manière $.post() vaut $.ajax() avec un type post * Ces lignes reviennent à faire un $.post(); */ type: 'post' Les arguments demandés sont les mêmes : l'url du fichier appelé les données envoyées* une fonction qui va gérer le retour le format des données reçues L'argument marqué d'une astérisque désigne les données envoyées. On peut également faire passer des variables en GET avec des URL ayant le bon format ;?prenom=lorem&nom=ipsum en est un exemple. $.get( 'fichier_cible.php', // Le fichier cible côté serveur. 5-AJAX.odt 7

8 'false', // false indique que nous n'envoyons pas de données. 'nom_fonction_retour', // Nous renseignons uniquement le nom de la fonction de retour. 'text' // Format des données reçues. ); function nom_fonction_retour(texte_recu){ // code pour gérer le retour de l'appel AJAX. La fonction de retour prend un argument : il est automatiquement créé par $.get() et il contient les données reçues du serveur. $.post() fonctionne de la même manière que $.get() : c'est un raccourci pour créer rapidement un appel AJAX de type POST. Les arguments qu'elle prend sont identiques à ceux de sa soeur : l'url fichier appelé les données envoyées une fonction qui va gérer le retour le format des données reçues Avec POST, il devient obligatoire d'envoyer des variables, c'est la raison d'être même de ce type. Imaginons l'envoi d'un en AJAX avec la fonction $.post() : $.post( 'send_mail.php', // Le fichier cible côté serveur. { sujet : $("#sujet").val(); // Nous supposons que ce formulaire existe dans le DOM. contenu : $("#contenu").val();, 'nom_fonction_retour', // Nous renseignons uniquement le nom de la fonction de retour. 'text' // Format des données reçues. ); function nom_fonction_retour(texte_recu){ // code pour gérer le retour de l'appel AJAX Sérialisation des formulaires Pour envoyer les variables issues d'un formulaire HTML à un script PHP en AJAX, il faut concaténer dans une chaîne de caractères toutes ces variables. Pour cela, on utilise la sérialisation du formulaire avec la méthode serialize(). Son but est de transformer les champs d'un formulaire en chaîne de caractères avec les variables et leurs contenus concaténés : <!-- Formulaire HTML super simple à sérialiser --> <form id="formulaire" method="post" action="traitement.php"> <input type="text" name="valeur1" /> <input type="text" name="valeur2" /> <input type="text" name="valeur3" /> <input type="submit" name="submit" /> </form> Le but est d'obtenir data : 'valeur1=' + valeur1 + '&valeur2=' + valeur2 + '&valeur3=' + valeur3 afin 5-AJAX.odt 8

9 de l'envoyer en AJAX : $("#formulaire").submit(function(e){ // On sélectionne le formulaire par son identifiant e.preventdefault(); // Le navigateur ne peut pas envoyer le formulaire var donnees = $(this).serialize(); // On créer une variable content le formulaire sérialisé //... data : donnees, // Un formulaire de connexion avec AJAX Nous allons créer ensemble un formulaire de connexion en AJAX grâce à jquery. Nous devrons d'abord créer le formulaire de connexion en HTML qui demandera un nom d'utilisateur ainsi qu'un mot de passe. Ensuite, nous utiliserons jquery afin de lancer un appel AJAX vers un script PHP appelé login.php. Enfin, nous enverrons à ce script les données que l'utilisateur a tapé dans le formulaire. Ce fichier PHP comparera les informations reçues avec des données pré-enregistrées. Si elles correspondent, nous renverrons un texte indiquant le succès de l'opération. Sinon, nous renverrons une erreur Côté client : du HTML et un appel AJAX Pour commencer, nous allons créer une page HTML. Elle devra être liée à jquery, mais surtout proposer un formulaire HTML afin de laisser le visiteur entrer un pseudo et un mot de passe : <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>un formulaire de connexion en AJAX</title> </head> <body> <h1>un formulaire de connexion en AJAX</h1> <form> <p> Nom d'utilisateur : <input type="text" id="username" /> Mot de passe : <input type="password" id="password" /> <input type="submit" id="submit" value="se connecter!" /> </p> </form> <script src=" </body> </html> Ajoutons l'appel AJAX : étant donné que nous souhaitons utilisons un formulaire, nous allons faire transiter nos données grâce à POST et donc utiliser la fonction $.post(). <!DOCTYPE html> 5-AJAX.odt 9

10 <html> <head> <! > </head> <body> <! > <script> $(document).ready(function(){ $("#submit").click(function{ $.post( 'connexion.php', // Un script PHP que l'on va créer juste après { login : $("#username").val(); // Nous récupérons la valeur de nos inputs que l'on fait passer à connexion.php password : $("#password").val();, function(data){ // Cette fonction ne fait rien encore, nous la mettrons à jour plus tard, 'text' // Nous souhaitons recevoir "Success" ou "Failed", donc on indique text! ); </script> </body> </html> Remarque : une bonne pratique est de créer un nouveau fichier pour chaque appel AJAX à effectuer sur la page web et ensuite de le lier à la page HTML grâce à la balise <script> Côté serveur : un script PHP de connexion Nous allons ici créer un script PHP qui va recevoir les données AJAX et les traiter afin de connecter le membre. Côté serveur, il faut vérifier si les données ont bien été entrées dans le formulaire HTML. Nous utiliserons le tableau $_POST pour effectuer ces vérifications. Cela marche exactement comme si on avait soumis le formulaire en HTML. Des données sont passées en POST et sont présentes dans la requête HTTP. Nous pouvons y accéder grâce à $_POST. La première chose à faire est de vérifier que les données nommées username et password sont bien créées et ne sont pas vides. <?php if( isset($_post['username']) && isset($_post['password']) ){?> Prochaine étape : charger les données utilisateur. Il faut comparer les données entrées dans le formulaire à des données pré-enregistrées. En réalité, vous comparerez certainement les données entrées à des valeurs en base de données. Ici, nous allons faire les choses plus simplement, et comparer de manière très basique les données à des variables dans notre script : <?php /** * Nous créons deux variables : $username et $password 5-AJAX.odt 10

11 * qui valent respectivement "Sdz" et "salut" */ $username = "Sdz"; $password = "salut";?> if ( isset($_post['username']) && isset($_post['password']) ){ Si les informations correspondent, nous allons renvoyer le texte «Success» en démarrant une session ; si les informations ne correspondent pas, nous allons renvoyer le texte «Failed». <?php /** * Nous créons deux variables : $username et $password * qui valent respectivement "Sdz" et "salut" */ $username = "Sdz"; $password = "salut";?> if ( isset($_post['username']) && isset($_post['password']) ){ if ( $_POST['username'] == $username && $_POST['password'] == $password ){ // Si les infos correspondent... session_start(); $_SESSION['user'] = $username; echo "Success"; else // Sinon echo "Failed"; 3.3. De retour côté client Quel que soit le résultat côté serveur, il faut afficher quelque chose au visiteur. C'est ici qu'il faut gérer le résultat de l'appel AJAX grâce aux attributs de $.post(). On sait que notre script PHP nous renvoie forcément deux chaînes de caractères : «success» ou «failed». On va donc simplement jouer du côté jquery avec quelques conditions... la valeur data a été remplie automatiquement par jquery grâce à l'affichage que nous avons fait en PHP! Rajoutons un bloc div en HTML qui portera l'identifiant #resultat afin d'y ajouter un retour pour le visiteur : <!DOCTYPE html> <html> <head><! ></head> <body> <div id="resultat"> <!-- Nous allons afficher un retour en jquery au visiteur --> </div> <form> <!-- Le formulaire donné plus haut--> </form> <script> $(document).ready(function(){ $("#submit").click(function{ $.post( 5-AJAX.odt 11

12 'connexion.php', // Un script PHP que l'on va créer juste après { login : $("#username").val(); // Nous récupérons la valeur de nos input que l'on fait passer à connexion.php password : $("#password").val();, function(data){ if ( data == 'Success' ){ // Le membre est connecté. Ajoutons lui un message dans la page HTML. $("#resultat").html("<p>vous avez été connecté avec succès!</p>"); else{ // Le membre n'a pas été connecté. (data vaut ici "failed") $("#resultat").html("<p>erreur lors de la connexion...</p>");, ); </script> </body> </html> 'text' 4. Les évènements AJAX 4.1. Les requêtes AJAX sur écoute Les évènements que l'on va écouter concernent directement AJAX, mais ils fonctionnent de la même manière que les autres : ils s'activent en fonction de l'état de la requête AJAX. On pourra employer la méthode on(), mais aussi des fonctions qui leurs sont dédiées. L'évènement ajaxstart() permet d'écouter le début d'une requête AJAX, il est réalisé dès que l'utilisation de la fonction $.ajax() - et donc $.get() ou $.post() - est faite : $("p").ajaxstart(function(){ console.log("l'appel AJAX est lancé!"); Dès qu'un appel AJAX présent sur cette page sera lancé, une fonction va envoyer dans la console le texte : «L'appel AJAX est lancé!» Pour écouter le succès d'une requête AJAX se déroulant depuis la page sur laquelle nous travaillons, on utilise l'évènement ajaxsuccess(). Il s'utilise de la même manière qu'ajaxstart(), mais écoute quand à lui le succès d'une requête, pas son début : $("p").ajaxsuccess(function(){ console.log("l'appel AJAX a réussi!"); Pour écouter l'échec d'une requête AJAX, un autre évènement est disponible : ajaxerror(). Il est 5-AJAX.odt 12

13 réalisé quand une requête AJAX en cours sur la page échoue. $("p").ajaxerror(function(){ console.log("l'appel AJAX a échoué!"); 4.2. Cas d'utilisation des évènements Nous allons ici aborder l'utilisation des évènements AJAX dans un cas concret : un loader. Reprenons ici l'exemple lorsque nous voulions récupérer des commentaires en base de données, lors du clic sur le bouton portant l'identifiant #more_com. Ici, nous afficherons un loader (une image indiquant le chargement) animé lorsque la requête AJAX démarrera : // Nous ajoutons un élément après le bouton $("<div id='loading'></div>").insertafter("#more_com"); // Nous appliquons du CSS à cet élément pour y afficher l'image en background $("#loading").css({ background : "url(load.gif)", // On affiche l'image en arrière-plan display : "none" // Nous cachons l'élément $("#more_com").click(function(){ $.get( ); 'more_com.php', false, 'fonction_retour', 'text' // Nous ciblons l'élément #loading qui est caché $("#loading").ajaxstart(function(){ $(this).show(); // Nous l'affichons quand la requête AJAX démarre Il existe également un évènement ajaxcomplete() que l'on peut utiliser pour cacher à nouveau le loader. Ainsi, son affichage ne durera que la durée de la requête AJAX. 5. La méthode load() La fonction $.ajax() et ses dérivées ne sont pas les seules manières de gérer un appel AJAX en jquery sur un site web. Une autre fonction un peu moins connue existe : load(). La première chose que load() va faire sera d'instancier un objet XmlHttpRequest. Son fonctionnement est en revanche beaucoup plus simple et basique que les fonctions reposant sur $.ajax(). Le but de load() est de récupérer le contenu qu'on lui spécifie en paramètre, puis l'injecter dans le DOM. C'est là sa principale utilité, dès qu'il faut récupérer un contenu qui ne nécessite pas forcément une logique (appel à une BDD, conditions...) qui se trouve sur le serveur et que l'on doit ajouter au DOM. La méthode load() va prendre d'abord en paramètre la ressource ciblée. Nous allons opter pour un fichier HTML statique, étant donné que l'utilité première de la fonction est de charger du contenu 5-AJAX.odt 13

14 statique en AJAX. Nous considérons qu'un bloc div portant l'identifiant #container existe dans le DOM. C'est avec ce bloc que load() va devoir travailler. Nous allons charger à l'intérieur un fichier appelé contenu.html : // contenu.html se trouve au même niveau dans l arborescence. $("#container").load("contenu.html"); Ce qui se trouve dans le fichier contenu.html est alors injecté par jquery dans le bloc div. Lorsque on l'utilise de cette manière, tout le contenu de ce fichier HTML va être ajouté à l'élément donné, et cela concerne également les feuilles de style qui pourraient être rattachées au fichier inclus. Pour éviter cela, nous allons devoir affiner la fonction. Par exemple, récupérer uniquement une certaine balise dans ce contenu mais pas tout le reste : // un élément portant l'id "content" existe dans contenu.html $("#container").load("contenu.html #content"); On ne récupérera que l'élément portant l'identifiant qui nous intéresse dans la page contenu.html, et on pourra l'ajouter simplement à un élément courant. Bien que ce ne soit pas son utilisation première, load() permet également d'envoyer des données au serveur en requête POST. Pour cela, il faut lancer un appel AJAX avec load() en ciblant un fichier PHP, et en lui faisant passer des données. /** * Nous reprenons notre exemple de formulaire de connexion * */ $("#container").load("connexion-avec-ajax.php", { // N'oubliez pas l'ouverture des accolades! login : $("login").val(), password : $("password").val() Côté serveur, les valeurs deviennent récupérables dans le tableau POST avec $_POST['login'] et $_POST['password'] comme nous l'avons vu dans les chapitres précédents. Le rôle de load() étant d'injecter le retour dans l'élément ciblé. 6. Un tchat en AJAX Nous allons créer un tchat en AJAX, qui permettra aux visiteurs de laisser un message qui sera rendu visible directement à tous les autres participants à la conversation Le système de tchat Les tchats en AJAX sont très répandus sur le web, on en trouve généralement sur les pages d'accueil des forums où les membres peuvent laisser un message qui sera instantanément transmis à tous les autres membres, pour peu qu'ils soient connectés au forum. À son arrivée sur la page, l'utilisateur verra deux zones qui lui seront proposées. Sur le haut de la page, il verra les messages du tchat qui seront postés. Sur la partie inférieure de la page, il trouvera un petit formulaire HTML, dans lequel il pourra renseigner son pseudo et son message. Un bouton lui permettra d'envoyer son message, et celui-ci sera ajouté au tchat sans rechargement de page. 5-AJAX.odt 14

15 Toutes les 5 secondes, une vérification sera faite : des nouveaux messages ont-ils été postés? Si oui, ils seront affichés. Si non, on affichera un petit message d'information : «aucun message n'a été ajouté dans les 5 dernières secondes». Nous avons évoqué l'idée que l'utilisateur doit pouvoir poster son message sans recharger la page, il va donc nous falloir utiliser de l'ajax et utiliser plusieurs scripts côté serveur : l'un enverra les messages dans une base de données, et l'autre surveillera la base de données à intervalle de 5 secondes, pour voir si de nouveaux messages ont été postés Codage Le fichier HTML L'utilisateur doit avoir un formulaire HTML pour lui permettre de renseigner pseudo et message : <!DOCTYPE html> <html> <head> <title>le tchat en AJAX!</title> </head> <body> <div id="messages"> <!-- les messages du tchat --> </div> <form method="post" action="traitement.php"> Pseudo : <input type="text" name="pseudo" id="pseudo" /><br /> Message : <textarea name="message" id="message"></textarea><br /> <input type="submit" name="submit" value="envoyez votre message!" id="envoi" /> </form> </body> </html> PHP et SQL Pour réaliser une application utilisant de l'ajax, on la créera d'abord en PHP classique, puis on ajoutera AJAX. Il y a deux avantages à cette pratique : Une meilleure organisation. L'assurance que l'application fonctionnera même si JavaScript est désactivé. Le fichier PHP va se charger d'envoyer les informations tapées dans le formulaire en base de données. Il faut donc créer une base de données : elle sera très simple, elle contiendra une seule table message contenant le pseudo de l'auteur et son message. CREATE TABLE IF NOT EXISTS `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `auteur` varchar(100) NOT NULL, `message` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Nous créons ensuite un fichier PHP qui envoie en base de données ce qui a été tapé dans le formulaire HTML : <?php 5-AJAX.odt 15

16 // on se connecte à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=tchat', 'root', ''); catch (Exception $e) { die('erreur : '. $e->getmessage()); if ( isset($_post['submit']) ){ // si on a envoyé des données avec le formulaire // si les variables ne sont pas vides if (!empty($_post['pseudo']) AND!empty($_POST['message']) ){ $pseudo = mysql_real_escape_string($_post['pseudo']); $message = mysql_real_escape_string($_post['message']); // on sécurise nos données // puis on entre les données en base de données : $insertion = $bdd->prepare('insert INTO messages VALUES("", :pseudo, :message)'); $insertion->execute(array( 'pseudo' => $pseudo, 'message' => $message )); else echo "Vous avez oublié de remplir un des champs!";?> La couche jquery On va initialiser une requête AJAX pour récupérer les données qui nous intéressent dans le formulaire. Comme la requête est de type POST, on utilisera soit $.ajax(), soit $.post() : // on sécurise les données var pseudo = encodeuricomponent( $('#pseudo').val() ); var message = encodeuricomponent( $('#message').val() ); // on vérifie que les variables ne sont pas vides if ( pseudo!= "" && message!= "" ){ url : "traitement.php", // on donne l'url du fichier de traitement type : "POST", // la requête est de type POST données data : "pseudo=" + pseudo + "&message=" + message // et on envoie nos Le problème, c'est que ce code va s'exécuter dès le chargement de la page. Pour envoyer des données après le clic sur le bouton d'envoi, il suffit alors d'utiliser un évènement ici : $('#envoi').click(function(e){ e.preventdefault(); // on empêche le bouton d'envoyer le formulaire // on sécurise les données var pseudo = encodeuricomponent( $('#pseudo').val() ); var message = encodeuricomponent( $('#message').val() ); // on vérifie que les variables ne sont pas vides if ( pseudo!= "" && message!= "" ){ 5-AJAX.odt 16

17 url : "traitement.php", // on donne l'url du fichier de traitement type : "POST", // la requête est de type POST data : "pseudo=" + pseudo + "&message=" + message // et on envoie nos données Pour un maximum de dynamisme, nous allons ajouter le message directement dans la zone prévue à cet effet : $('#envoi').click(function(e){ e.preventdefault(); // on empêche le bouton d'envoyer le formulaire // on sécurise les données var pseudo = encodeuricomponent( $('#pseudo').val() ); var message = encodeuricomponent( $('#message').val() ); // on vérifie que les variables ne sont pas vides if ( pseudo!= "" && message!= "" ){ url : "traitement.php", // on donne l'url du fichier de traitement type : "POST", // la requête est de type POST nos données data : "pseudo=" + pseudo + "&message=" + message // et on envoie // on ajoute le message dans la zone prévue $('#messages').append("<p>" + pseudo + " dit : " + message + "</p>"); Il faut maintenant s'occuper de récupérer les messages en base de données. D'abord, nous allons récupérer les dix derniers postés, en PHP. Puis, à intervalle de 5 secondes, il s'agira de vérifier s'il y en a eu de nouveaux, et si c'est le cas, de les afficher : <!DOCTYPE html> <html> <head> <title>le tchat en AJAX!</title> </head> <body> <div id="messages"> <!-- les messages du tchat --> <?php // on se connecte à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=tchat', 'root', ''); catch (Exception $e) { die('erreur : '. $e->getmessage()); // on récupère les 10 derniers messages postés $requete = $bdd->query('select * FROM messages ORDER BY id DESC 5-AJAX.odt 17

18 LIMIT 0,10'); while($donnees = $requete->fetch()){ // on affiche le message (l'id servira plus tard) echo "<p id=\"". $donnees['id']. "\">". $donnees['pseudo']. " dit : ". $donnees['message']. "</p>"; $requete->closecursor();?> </div> <form method="post" action="traitement.php"> Pseudo : <input type="text" name="pseudo" id="pseudo" /><br /> Message : <textarea name="message" id="message"></textarea><br /> <input type="submit" name="submit" value="envoyez votre message!" id="envoi" /> </form> <script src=" <script src="main.js"></script> </body> </html> Le plus récent se trouvera en première position. Pour lancer une action toutes les 5 secondes, il faut utiliser settimeout(). En créant une fonction se répétant indéfiniment, il suffit d'indiquer un intervalle de 5000 millisecondes. function charger(){ settimeout( function(){ // on lance une requête AJAX url : "charger.php", type : GET, success : function(html){ // on veut ajouter les nouveaux messages au début du bloc #messages $('#messages').prepend(html); charger(); // on relance la fonction, 5000); // on exécute le chargement toutes les 5 secondes charger(); La base étant posée, on doit penser depuis quel message il faut commencer à compter dans la base de données. On ne doit pas charger tous les messages, mais seulement les nouveaux. Il faut donc passer l'id du message le plus récemment affiché au fichier PHP, pour qu'il récupère tous les messages ayant un id plus élevé. Pour cela, on va le prendre dans l'identifiant du premier paragraphe : function charger(){ settimeout( function(){ // on récupère l'id le plus récent var premierid = $('#messages p:first').attr('id'); 5-AJAX.odt 18

19 // on passe l'id le plus récent au fichier de chargement url : "charger.php?id=" + premierid, type : GET, success : function(html){ $('#messages').prepend(html); charger();, 5000); charger(); Il ne reste plus qu'à aller chercher les messages en base de données : <?php //... // on se connecte à notre base de données if(!empty($_get['id'])){ // on vérifie que l'id est bien présent et pas vide $id = (int) $_GET['id']; // on s'assure que c'est un nombre entier // on récupère les messages ayant un id plus grand que celui donné $requete = $bdd->prepare('select * FROM messages WHERE id > :id ORDER BY id DESC'); $requete->execute(array("id" => $id)); $messages = null; // on inscrit tous les nouveaux messages dans une variable while($donnees = $requete->fetch()){ $messages.= "<p id=\"". $donnees['id']. "\">". $donnees['pseudo']. " dit : ". $donnees['message']. "</p>";?> echo $messages; // enfin, on retourne les messages à notre script JS 6.3. Améliorations Ce tchat en AJAX n'est pas directement réutilisable car il est bourré de failles de sécurité! En effet, il n'y a que des vérifications des données basiques, aussi bien côté serveur que côté client. Ex : empêcher les utilisateurs d'utiliser les mêmes pseudos, vous utiliserez des sessions pour y arriver. 5-AJAX.odt 19

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

DOM - Document Object Model

DOM - Document Object Model DOM - Document Object Model 1 But de DOM Interfacer les langages de programmation avec les documents XML en les associant avec un modèle orienté objet DOM permet aux programmes et scripts : d'accéder et

Plus en détail

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web NFA016 : Introduction O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Pour naviguer sur le Web, il faut : 1. Une connexion au réseau Réseau Connexion physique (câbles,sans fils, ) à des

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 FORMULAIRE DE CONTACT POUR PORTFOLIO PRINCIPE GENERAL Nous souhaitons réaliser un formulaire de contact comprenant les champs suivants : NOM PRENOM ADRESSE MAIL MESSAGE

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail

Le stockage local de données en HTML5

Le stockage local de données en HTML5 Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,

Plus en détail

SYSTÈMES D INFORMATIONS

SYSTÈMES D INFORMATIONS SYSTÈMES D INFORMATIONS Développement Modx Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus.

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement P. 2 1. Introduction 2.

Plus en détail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec

Plus en détail

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv> Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères FORMATION PcVue Mise en œuvre de WEBVUE Journées de formation au logiciel de supervision PcVue 8.1 Lieu : Lycée Pablo Neruda Saint Martin d hères Centre ressource Génie Electrique Intervenant : Enseignant

Plus en détail

PHP et les Bases de données - Généralités

PHP et les Bases de données - Généralités PHP et les Bases de données - Généralités Conception d une base de données Méthodes utilisées : MERISE, UML Modèle conceptuel des données MCD, Modèle logique MLD, Modèle Physique MPD. Ces aspects seront

Plus en détail

PDO : PHP Data Object 1/13

PDO : PHP Data Object 1/13 PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension

Plus en détail

www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3

www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3 L i a m T A R D I E U www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3 Sommaire Sommaire... 2 Eléments initiaux... 3 Base de données... 3 Tables... 4 membres... 4 commandes... 4 articles... 4 details_commandes...

Plus en détail

Attaques de type. Brandon Petty

Attaques de type. Brandon Petty Attaques de type injection HTML Brandon Petty Article publié dans le numéro 1/2004 du magazine Hakin9 Tous droits reservés. La copie et la diffusion de l'article sont admises à condition de garder sa forme

Plus en détail

Démonstration de la mise en cache via HTML 5 sur iphone

Démonstration de la mise en cache via HTML 5 sur iphone Last update: 2011/08/18 21:46 wiki:devmobile:webapp:html5:presentation Démonstration de la mise en cache via HTML 5 sur iphone Overview Parmi les nouveautés du HTML 5, l une d elles est très intéressent

Plus en détail

Dans l'article précédent, vous avez appris

Dans l'article précédent, vous avez appris Pour les débutants Les différents formats de sortie proposés par PHPExcel La bibliothèque orientée objet PHPExcel permet de lire et créer des fichiers pour tableurs. Dans cette série d articles, vous apprendrez

Plus en détail

STID 2ème année : TP Web/PHP

STID 2ème année : TP Web/PHP STID 2ème année : TP Web/PHP Plan de travail et aide mémoire jean.arnaud@inria.fr Ce document est composé de cinq parties : Un aide mémoire sur les aspects pratiques de la création de sites Une introduction

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

RÉALISATION D UN SITE DE RENCONTRE

RÉALISATION D UN SITE DE RENCONTRE RÉALISATION D UN SITE DE RENCONTRE Par Mathieu COUPE, Charlène DOUDOU et Stéphanie RANDRIANARIMANA Sous la coordination des professeurs d ISN du lycée Aristide Briand : Jérôme CANTALOUBE, Laurent BERNARD

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

1. Installation du Module

1. Installation du Module 1 sur 10 Mise en place du Module Magento V 1.5.7 1. Installation du Module Vous pouvez installer le module de deux façons différentes, en passant par Magento Connect, ou directement via les fichiers de

Plus en détail

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel Guide débuter avec WHM 1 / Introduction WHM signifie Web Host Manager (ou gestionnaire d'hébergement web). WHM va donc vous permettre de gérer des comptes d'hébergement pour vos clients. (création de compte,

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé) Introduction PHP = Personal Home Pages ou PHP Hypertext Preprocessor Langage de script interprété (non compilé) Plan Avantages Fonctionnement interne Bases du langage Formulaires Envoi d un email Avantages

Plus en détail

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox Version utilisée pour la Debian : 7.7 Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox Caractéristiques de bases : Un service web (ou service de la toile) est

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Formulaire pour envoyer un mail

Formulaire pour envoyer un mail Formulaire pour envoyer un mail AVERTISSEMENT : Ce tuto est une compilation de plusieurs sources trouvées sur internet, dont les références sont données à la fin de cet article. Le but de ce tutoriel n'est

Plus en détail

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6 Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6 2 І O2S Intégration O2S dans un site Internet Ce document présente une description

Plus en détail

Création de formulaires interactifs

Création de formulaires interactifs SESSION 16 Création de formulaires interactifs Programme de la session Lancer un sondage en utilisant divers éléments d'entrée de formulaire Traiter les entrées utilisateur Activer un script à partir d'un

Plus en détail

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12

Procédures Stockées WAVESOFT... 12 ws_sp_getidtable... 12. Exemple :... 12. ws_sp_getnextsouche... 12. Exemple :... 12 Table des matières Les Triggers... 2 Syntaxe... 2 Explications... 2 Les évènements déclencheurs des triggers... 3 Les modes de comportements des triggers... 4 Les pseudo tables... 5 Exemple... 6 Les procédures

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Document Object Model (DOM)

Document Object Model (DOM) Document Object Model (DOM) Jean-Claude Charr Maître de conférences IUT de Belfort Montbéliard Université de Franche Comté Description générale Définit un standard pour accéder aux documents structurés

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données Activité sur Meteor Annexe 1 : notion de client-serveur et notion de base de données Notion de client-serveur Que se passe-t-il lorsque vous tapez dans la barre d'adresse de votre navigateur «http://www.google.fr»?

Plus en détail

Programmation Internet Cours 4

Programmation Internet Cours 4 Programmation Internet Cours 4 Kim Nguy ên http://www.lri.fr/~kn 17 octobre 2011 1 / 23 Plan 1. Système d exploitation 2. Réseau et Internet 3. Web 3.1 Internet et ses services 3.1 Fonctionnement du Web

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Module http MMS AllMySMS.com Manuel d intégration

Module http MMS AllMySMS.com Manuel d intégration Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux

Plus en détail

Présentation du Framework BootstrapTwitter

Présentation du Framework BootstrapTwitter COUARD Kévin HELVIG-LARBRET Blandine Présentation du Framework BootstrapTwitter IUT Nice-Sophia LP-SIL IDSE Octobre 2012 Sommaire I. INTRODUCTION... 3 Définition d'un framework... 3 A propos de BootstrapTwitter...

Plus en détail

Attaques applicatives

Attaques applicatives Attaques applicatives Attaques applicatives Exploitation d une mauvaise programmation des applications Ne touche pas le serveur lui-même mais son utilisation/ configuration Surtout populaire pour les sites

Plus en détail

Gestion des utilisateurs : Active Directory

Gestion des utilisateurs : Active Directory Gestion des utilisateurs : Active Directory 1. Installation J'ai réalisé ce compte-rendu avec une machine tournant sous Windows 2008 server, cependant, les manipulations et les options restent plus ou

Plus en détail

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011 API SMS CONSEIL HTTP V2.01 Documentation V1.0 au 21/05/2011 L'utilisation de l'api SMS CONSEIL est réservée aux clients, membres du site SMS-CONSEIL.FR et doit se faire en accord avec nos conditions générales

Plus en détail

Petite définition : Présentation :

Petite définition : Présentation : Petite définition : Le Web 2.0 est une technologie qui permet la création de réseaux sociaux, de communautés, via divers produits (des sites communautaires, des blogs, des forums, des wiki ), qui vise

Plus en détail

Microsoft Application Center Test

Microsoft Application Center Test Microsoft Application Center Test L'outil de Test de performance des Sites Web Avec Visual Studio.NET, il est fourni une petite application qui permet de valider la performance de son site Internet ou

Plus en détail

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES WEB & DÉVELOPPEMENT LES BASES DU WEB HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES LE LANGAGE HTML STRUCTURE D UNE PAGE En-tête et corps Syntaxe INSÉRER DES CONTENUS Texte : formatage (titre,

Plus en détail

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin Sécurité des sites Web Pas un cours un recueil du net INF340 Jean-François Berdjugin Vulnérabilité Définition (wikipédia) : Dans le domaine de la sécurité informatique, une vulnérabilité est une faiblesse

Plus en détail

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com

E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com - 5, rue Soutrane - 06560 Valbonne Sophia-Antipolis E-mail : contact@nqicorp.com - Web : http://www.nqicorp.com NQI Orchestra 3.3 - Guide d'installation Windows.................................................................

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

Google Tag Manager. «Vous ne verrez plus l'analytics de la même manière» par Ronan CHARDONNEAU

Google Tag Manager. «Vous ne verrez plus l'analytics de la même manière» par Ronan CHARDONNEAU Google Tag Manager «Vous ne verrez plus l'analytics de la même manière» par Ronan CHARDONNEAU Au menu 1)Définition de Google Tag Manager 2)Le fonctionnement 3)Applications pratiques pour un référenceur

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org Les sites Internet dynamiques contact : Patrick VINCENT pvincent@erasme.org Qu est-ce qu un site Web? ensemble de pages multimédia (texte, images, son, vidéo, ) organisées autour d une page d accueil et

Plus en détail

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING Durée : 3J / 21H Formateur : Consultant expert en PAO et Web-marketing. Groupe de : 4 max Formation au web marketing Objectifs : Mettre en oeuvre des

Plus en détail

Documentation CAS à destination des éditeurs

Documentation CAS à destination des éditeurs Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges

Plus en détail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2) Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation

Plus en détail

Hébergement de site web Damien Nouvel

Hébergement de site web Damien Nouvel Hébergement de site web Plan L'hébergeur Le serveur web Apache Sites dynamiques 2 / 27 Plan L'hébergeur Le serveur web Apache Sites dynamiques 3 / 27 L'hébergeur L'hébergeur sous-traite l'architecture

Plus en détail

Utilisation de GalaxShare

Utilisation de GalaxShare Utilisation de GalaxShare Tutoriel accessible en ligne sur http://galaxair.com/tuto/aidegalaxshare.html Le Porte-Document GalaxShare est un logiciel web de partage de documents, avec une gestion fine des

Plus en détail

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4) Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4) Sommaire : Contenu I. Introduction:... 2 II. Présentation de l atelier :... 2 1) Attaque persistante :... 3 2) Attaque non persistante :...

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Administration du site (Back Office)

Administration du site (Back Office) Administration du site (Back Office) A quoi sert une interface d'administration? Une interface d'administration est une composante essentielle de l'infrastructure d'un site internet. Il s'agit d'une interface

Plus en détail

Maarch V1.4 http://www.maarch.org

Maarch V1.4 http://www.maarch.org COLD (factures clients) Maarch Professional Services Maarch PS anime le développement d un produit d archivage open source : http://www.maarch.org Guide de visite COLD (factures clients) VERSION DATE ACTEUR

Plus en détail

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante: 420-183 Programmation 1 8. Les structures conditionnelles Dans l'écriture de tout programme informatique, une des premières nécessités que nous rencontrons est de pouvoir faire des choix. Dans une application

Plus en détail

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE Épreuve de cas pratique dans la spécialité correspondant à l'option choisie par le candidat Option D Durée de préparation

Plus en détail

Editer un script de configuration automatique du proxy

Editer un script de configuration automatique du proxy Editer un script de configuration automatique du proxy INTRODUCTION... 2 AVANTAGE D UN SCRIPT DE CONFIGURATION... 2 SYNTAXE DU SCRIPT DE CONFIGURATION AUTOMATIQUE... 2 MISE A DISPOSITION DU SCRIPT... 4

Plus en détail

Sécurité des applications web. Daniel Boteanu

Sécurité des applications web. Daniel Boteanu I F8420: Éléments de Sécurité des applications web Daniel Boteanu Architecture des applications web Client légitime Internet HTTP 浀 HTML Server Web 2 Architecture des applications web Client légitime Internet

Plus en détail

Comment développer et intégrer un module à PhpMyLab?

Comment développer et intégrer un module à PhpMyLab? Comment développer et intégrer un module à PhpMyLab? La structure du fichier Afin de conserver une homogénéité et une cohérence entre chaque module, une structure commune est utilisée pour chacun des modules

Plus en détail

MEDIAplus elearning. version 6.6

MEDIAplus elearning. version 6.6 MEDIAplus elearning version 6.6 L'interface d administration MEDIAplus Sommaire 1. L'interface d administration MEDIAplus... 5 2. Principes de l administration MEDIAplus... 8 2.1. Organisations et administrateurs...

Plus en détail

Architectures en couches pour applications web Rappel : Architecture en couches

Architectures en couches pour applications web Rappel : Architecture en couches Rappel : Architecture en couches Une architecture en couches aide à gérer la complexité : 7 Application 6 Presentation 5 Session Application Les couches hautes dépendent des couches basses 4 Transport

Plus en détail

Les outils de création de sites web

Les outils de création de sites web Tuto 1ère séance - p1 Les outils de création de sites web Sources : Réalisez votre site web avec HTML5 et CSS3 de Mathieu Nebra (Edition Le Livre du Zéro) site fr.openclassrooms.com (anciennement «site

Plus en détail

Séance d ED n 5 : HTML et JavaScript

Séance d ED n 5 : HTML et JavaScript Séance d ED n 5 : HTML et JavaScript EXERCICE 1 1) le but de cet exercice est de construire l'interface suivante en html: une réponse : 1)

Plus en détail

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

Aspects techniques : guide d interfaçage SSO

Aspects techniques : guide d interfaçage SSO COURDECO Aspects techniques : guide d interfaçage SSO Septembre 2011 Cette annexe présente succinctement le système d'authentification unique (SSO : single sign on, authentification unique) utilisé dans

Plus en détail

Pack Fifty+ Normes Techniques 2013

Pack Fifty+ Normes Techniques 2013 Pack Fifty+ Normes Techniques 2013 Nos formats publicitaires par site 2 Normes techniques 2013 Display classique Pavé vidéo Footer Accueil panoramique Publi rédactionnel Quiz Jeu concours Emailing dédié

Plus en détail

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 L envoi d un formulaire par courriel Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 Chapitre 9 L envoi d un formulaire par courriel L envoi par courriel d informations

Plus en détail

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel Excel est un des meilleurs outils de manipulation de données et parfois il est nécessaire d exploiter des données

Plus en détail

Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département

Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département Le nouveau site du département Le nouveau site du département est situé, comme l'ancien à l'adresse suivante

Plus en détail

Créer et gérer des catégories sur votre site Magento

Créer et gérer des catégories sur votre site Magento Créer et gérer des catégories sur votre site Magento Version utilisée pour l élaboration de ce guide : Magento 1.3.0 Rédigé par : Olivia Contexte Pour créer un site sous Magento, vous allez être obligé

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Failles XSS : Principes, Catégories Démonstrations, Contre mesures HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Séminaire 15 ans HSC Failles XSS : Principes, Catégories Démonstrations,

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. Connexion à 4D Server depuis une page ASP Par Noreddine MARGOUM, Technicien Contrôle Qualité, 4D S.A. Note technique 4D-200403-08-FR Version 1 Date 1 Mars 2004 Résumé Le propos de cette note technique

Plus en détail

Introduction. Passage de sites statiques à des sites dynamiques

Introduction. Passage de sites statiques à des sites dynamiques PHP (ET MYSQL) Introduction HTML : pages destinées à être publiées sur Internet Texte à afficher + instructions de mise en page Pas d instructions de calcul ou de traitements conditionnels Des sites de

Plus en détail

1 Position du problème

1 Position du problème Licence Science et Technologies - INF245 Examen session 1 - mai 2012 Durée : 2 heures Documents non autorisés Le barème est donné à titre indicatif 1 Position du problème Le Club Universitaire de Vélo

Plus en détail

WebSSO, synchronisation et contrôle des accès via LDAP

WebSSO, synchronisation et contrôle des accès via LDAP 31 mars, 1er et 2 avril 2009 WebSSO, synchronisation et contrôle des accès via LDAP Clément Oudot Thomas Chemineau Sommaire général Synchronisation d'identités WebSSO et contrôle des accès Démonstration

Plus en détail

Diagramme de classes

Diagramme de classes Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :

Plus en détail

Service client LSC 1

Service client LSC 1 Service client LSC 1 Sommaire SOMMAIRE...2 PREAMBULE...3 PARAMETRAGE LSC...4 1\ ACTIVER LE SERVICE CLIENT...5 Licence LSC...5 Nom de domaine...5 2\ DEFINIR LES MODALITES DE PUBLICATION...6 3\ LES MODELES

Plus en détail