Accueil » Articles » Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

LES VARIABLES SUPERGLOBALES

La portée des variables

Pour rappel, en PhP, les variables sont généralement définies et accessibles localement (à l’intérieur d’une fonction par exemple).

Si l’on fait appel à la variable en dehors de la fonction, le PhP ne sera pas capable de la trouver comme on peut le constater dans l’exemple suivant :

La portée des variables en PhP

La portée des variables en PhP

Dans cet exemple, on a définit deux variables. La variable $nombre1 est définie dans l’espace global et est également appelé depuis l’espace global, celle-ci s’affiche donc sans problème.

Pour la variable $nombre2, cependant, c’est plus compliqué : en effet, celle-ci a été définie dans un espace local (à l’intérieur d’une fonction et on essaye de l’appeler depuis un espace global.

Etant donné que les variables « normales » n’ont pas de portée globale, celle-ci ne s’affichera pas.

Partant de là, vous devriez avoir deviné ce qui fait la particularité des superglobales… Oui : en effet, ces variables sont des variables globales, c’est-à-dire accessible depuis n’importe où dans un script.

Découverte des superglobales

Il n’existe que peu de superglobales en PhP, mais elles sont pour la majorité incontournables. Les superglobales sont les suivantes :

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

Par convention, on écrira toujours les superglobales en majuscule et avec un underscore précédant leur nom (sauf pour la superglobale $GLOBALS) afin de bien les différencier des autres variables.

Vous devez également savoir que PhP crée automatiquement ces variables superglobales. Celles-ci sont donc toujours disponibles, quelque soit le script utilisé.

La superglobale $GLOBALS

La variable superglobale $GLOBALS va nous servir d’accéder à des variables définies globalement depuis n’importe où dans notre script, même à l’intérieur de fonctions.

La superglobale $GLOBALS est une variable tableau dans lequel PhP va automatiquement stocker toutes les variables issues du contexte global. L’index tu tableau correspond à la valeur de la variable.

Voici un exemple illustrant ce que nous venons de dire :
Superglobale $GLOBALS en PhP

A priori, les variables $x et $y, définies dans l’espace global, ne devraient pas être accessibles à l’intérieur de notre fonction. Nous utilisons donc la superglobale $GLOBALS pour les récupérer.

Ensuite, on enferme le résultat dans une variable $z en utilisant une nouvelle fois une superglobale pour pouvoir réutiliser la variable en dehors de l’espace local de notre fonction.

Superglobale $GLOBALS en PhP

La superglobale $_SERVER

La variable superglobale $_SERVER est une variable tableau qui contient des informations de type serveur / système, comme le nom du script exécuté actuellement, l’adresse IP du serveur qui héberge la page, ou encore le nom du serveur hébergeant la page.

Selon l’index donné à $_SERVER, cette superglobale va renvoyer telle ou telle information.

Voyons quelques exemples ensemble :

La superglobale $_SERVER en PhP

La superglobale $_SERVER en PhP

16.5 La superglobale $_REQUEST

La superglobale $_REQUEST est utilisée pour récoler des informations après l’envoi d’un formulaire HTML.

En pratique, nous n ‘utiliserons pas beaucoup cette superglobale et donc je ne détaillerai pas davantage, n’hésitez pas une nouvelle fois à vous renseigner de votre côté si vous jugez cela nécessaire.

Les superglobales $_POST et $_GET

Nous connaissons déjà ces superglobales puisque ce sont les mêmes que nous avons utilisé jusqu’à présent avec nos formulaires.

Plus précisément, la superglobale $_POST est utilisée pour collecter des données après la soumission d’un formulaire ayant utilisé la method = « post », tandis que $_GET collecte les données d’un formulaire utilisant la method = « get ».

Encore une fois, nous avons déjà utilisé $_POST plusieurs fois avec nos formulaires et me permettrai donc de vous renvoyer aux cours précédents si vous ne vous en rappelez plus.

La superglobale $_COOKIE

Un cookie est un petit fichier qui va être stocké sur l’ordinateur de vos visiteurs. Un cookie contient généralement une information, comme un pseudo ou un mot de passe, et expire à une date donnée (ou lorsque l’un de vos visiteurs le supprime manuellement).

Les cookies permettent de garder en mémoire des identifiants afin que vos utilisateurs puissent se connecter plus facilement par exemple.

Pour créer un cookie, nous devons utiliser la fonction PhP setcookie(). Cette fonction possède jusqu’à sept paramètres dont un seul est obligatoire : le nom du cookie.

Ces paramètres sont les suivants (dans leur ordre d’écriture) :

  • Le nom donné au cookie ;
  • La valeur du cookie ;
  • La date d’expiration du cookie (en unités Unix timestamp) ;
  • Le chemin, c’est-à-dire les parties de votre site où le cookie sera accessible et utilisable (mettre « / » pour que ce dernier soit accessible sur tout votre site) ;
  • Les domaines ou sous domaines où le cookie sera accessible ;
  • Le paramètre secure, indiquant si oui ou non le cookie doit être transmis par connexion https sécurisée (true ou false);
  • Le paramètre httponly (true ou false), qui va bloquer ou non l’accessibilité au cookie par des langages de scripts, comme le JavaScript.

Personnellement, je vous conseille fortement d’écrire vos cookies de cette façon là :

La superglobale $_COOKIE en PhP

La superglobale $_COOKIE en PhP

Je pense que quelques explications s’imposent sur le bout de code ci-dessus. Dans ce script, je définis deux cookies : les cookies « utilisateur » et « test ».

Première chose qui doit vous sembler étrange : j’ai écrit du PhP avant même de déclarer mon DOCTYPE. Ce n’est pas une erreur : pour qu’un cookie fonctionne, il faut toujours le déclarer avant d’ouvrir notre élément html.

Ensuite, donc, j’ai créé mon premier cookie comme je vous l’avais annoncé, avec setcookie() et tous ses paramètres. Je vous recommande de toujours activer le mode httponly en mettant la valeur true en dernier paramètre : vous réduirez les risques de faille.

Pour la date d’expiration, qui doit être sous forme de timestamp, j’ai récupéré la date actuelle avec la fonction time() et y ait ajouté 3600 secondes. Cela veut donc dire que le cookie expirera une heure après sa création.

Enfin, j’ai créé un deuxième cookie, très simple, puis je l’ai affiché en allant le récupérer avec ma superglobale $_COOKIE et avec un echo pour l’exemple.

Je ne pouvais évidemment pas afficher le premier puisque celui-ci n’était défini que pour le domaine http://pierre-giraud.fr et que nous travaillons en local.

Pour modifier ou supprimer un cookie, il suffit de le réécrire avec exactement le même nom et le même nombre de paramètre et de changer les paramètres voulus (pour le modifier), ou de mettre une date d’expiration passée (pour le supprimer).

La superglobale $_COOKIE en PhP

Ici, on commence par créer notre cookie « test », puis on le modifie. On echo ensuite ce qu’il contient et finalement on le supprime.

La superglobale $_COOKIE en PhP

La superglobale $_SESSION

Les sessions sont un autre bon moyen de conserver et de transmettre des informations (stockées dans des variables) de page en page sur votre site web.

Contrairement aux cookies, les informations contenues dans les sessions ne sont pas stockées sur l’ordinateur de vos visiteurs.

Les sessions sont différentes des variables classiques en un point crucial : elles permettent de faire circuler des informations de page en page, contrairement aux variables « normales ».

Cependant, les sessions ne conservent pas une information indéfiniment. Si cela est notre souhait, on utilisera alors généralement les bases de données.

Au final, les sessions permettent de stocker et de transférer des informations relatives à un utilisateur durant tout le temps qu’il passera sur votre site, c’est-à-dire durant le temps de sa session (d’où le nom).

Les sessions sont notamment très utilisées lorsqu’il est donné au visiteur la possibilité de se connecter, afin qu’on se souvienne de son nom d’utilisateur et de son mot de passe de page en page et qu’il n’ait pas à se reconnecter à chaque fois.

Tout comme pour les cookies, il faudra démarrer nos sessions avant d’avoir ouvert la moindre balise HTML.

On démarrera une session avec la fonction session_start() comme ceci :

La superglobale $_SESSION en PhP

Ensuite, on pourra définir nos variables de session à l’intérieur de notre body avec notre superglobale $_SESSION :

La superglobale $_SESSION en PhP

Tout simplement ! Nos variables de session « prenom », « age » et « sport » sont maintenant disponibles et accessibles à partir de n’importe quelle page de notre site (du moment que l’on a démarré la session sur chaque page avec session_start()).

Si vous vous demandez comment ça fonctionne, sachez que PhP va automatiquement générer une clef unique pour chaque nouveau visiteur arrivant sur votre site. C’est cette clef qui va ensuite être utilisée pour identifier chacun de vos visiteurs.

Pour fermer une session, vous avez deux choix : soit vous laissez PhP faire (PhP fermera automatiquement la session de vos visiteurs après une certaine période d’inactivité), soit vous utilisez la fonction session_destroy() afin de fermer manuellement une session.

On peut également au préalable détruire toutes les variables de session avec la fonction session_unset().

16 commentaires

  1. abdelmalek derouich

    merci infiniment pour ces cours, j’été vraiment nul et maintenant je commence à n’avancer dans la création des sites WEB en utilisant le HTML, le CSS et le PHP et c’est grâce à vos cours minutieusement expliqués.

  2. bonjours ,je suis encore un petit peux débutant dans le codage , j’aimerais faire une page d’inscription et une de connexion en php et mysql je dispose d’une base de donnée . merci d’avance pour votre aide .
    ps : j’adore vos vidéo =)

  3. Bocomba William Edouard

    bonjour,

    je suis William un de vos disciple Abidjan. En lisant le code source du site pierre-girraud.fr j’ai constater un bon nombre de balise link et de balise meta. Et je me pose la question de savoir a quoi elle servent? Par ailleurs je suis impatient de savourer la suite du cour sur php et mysql. Merci d’avance et surtout merci pour tout.

    Amicalement

    William

  4. Bonjour,

    Je te remercie de tout mon cœur Pierre!
    Tu consacre ton temps à partager des choses meilleures.
    Je suis débutant mais je croix de devenir pro, tes tutos sont claires et faciles à comprendre.
    Merci infiniement

  5. Salut, c’est vraiment génial ce que tu fais mais j’ai encore un problème, je n’arrive pas a créer un formulaire pour envoyer un mail ou pouvoir communiquez avec moi (pas un bloc mais vraiment une page de contact).
    Merci de bien vouloir m’aider…

    • Bonjour,

      J’explique déjà tout cela dans mes cours HTML / CSS et PhP… Je ne peux donc que vous conseillez de revoir les parties consacrées à cela (lien pour envoyer un fichier / un mail et partie formulaire HTML et PhP).

      Bonne continuation,
      Pierre

  6. Vous etes genial, j’ai vu vos cours sur youtube et votre adresses qui ma poussé avenir sur votre site. Mr pierre je suis un petit zero de la programmation mais suis pas mal j’aimerai vous assistez dans vos taches pour me former…! merci pour les cours suis content

  7. je voudrais que tu m’explique un peut comment fonctionne les fonction static en phph

  8. bonjour
    merci pour ce cours mais je ne vois pas la partie base de données et pourtant l’intitulé c’est cours complet!!!!

  9. Salut Pierre Giraud,

    Je viens de regarder le tuto sur HTML et CSS, c’est magnifique !!!
    Maintenant j’aimerais creer des sites dynamiques avec PHP MySQL.
    Pourriez vous m’aider s’il vous plait. Merci de votre aide en envoyant des tuto tres tres interessant.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*