Les variables superglobales

  • Elles sont écrites en majuscules et commencent toutes par un underscore $_GET et $_POST
  • Les superglobales sont toutes des array.
  • Ces variables sont automatiquement créées par PHP à chaque fois qu'une page est chargée. Ces variables existent donc sur toutes les pages et sont accessibles partout : au milieu de votre code, au début, dans les fonctions etc...

Envoyer des variables dans l'url avec GET

$_GET : c'est elle qui vous donne les valeurs des informations indiquées dans l'url.

Un simple lien hypertexte vous permet d'envoyer une variable par l'url, Vous avez besoin de deux pages

Exemple

  1. envoi.html, qui contient le lien, vous remarquez que nous n'avons pas forcément besoin d'une page en php.
  2. reception.php

Il faut ajouter un point d'interrogation (?), le nom de la variable, un égal, puis sa valeur

?Nom_variable=valeur

Exemple

get/reception.php?Prenom=titi

Cela va créer une variable un peu particulière : $_GET['Prenom'] qui aura pour valeur titi

Pour envoyer plusieurs variables

Par exemple, si la page appelée est :
http://www.site.com/mapage.php?jour=18&mois=avril&annee=2000
on aura une superglobale $_GET découpée en 3 parties :

Et si vous voulez créer d'autres variables, il vous suffit de les séparer par des &.

Attention, dans votre code HTML, il ne faut pas écrire directement le symbole & (c'est interdit).

Il faut remplacer les & par le code HTML correspondant, à savoir &

get/reception1.php?Prenom=titi&Nom=toto

Exercice

Création de formulaire HTML

Envoyer des données via un formulaire avec POST

$_POST : c'est là-dedans que vous venez récupérer les informations issues d'un formulaire.

Maintenant lorsque nous envoyons des variables via un formulaire, la variable que vous récupérez s'écrira de cette façon

$_POST['Variable']

Exemple:

Je crée un champ de formulaire que je nomme 'Nom'

La variable que vous allez récupérer s'appellera

$_POST['Nom']

Exercices : POST

Les variables de serveur

$_SERVER : ce sont des valeurs utiles que nous donne le serveur.
Pour accéder à ces informations, il faut indiquer ce qu'on demande exactement entre crochets (vu que c'est un array)

$_SERVER['SERVER_NAME']

Le nom relatif du serveur qui exécute le script courant :

<?php echo $_SERVER['SERVER_NAME']; ?>
www.conseil-webmaster.com

$_SERVER['DOCUMENT_ROOT']

Le chemin du répertoire racine du serveur.

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

$_SERVER['PHP_SELF']

Cest le chemin de la page que vous êtes en train d'exécuter, par rapport à la racine de votre site web.
Exemple : si vous êtes sur la page http://www.monsite.com/scripts/monscript.php, alors $_SERVER['PHP_SELF'] aura pour valeur : /scripts/monscript.php

<?php echo $_SERVER['PHP_SELF']; ?>
/formation/php/02-bases-php.php

$_SERVER['REMOTE_ADDR']

Elle nous donne l'adresse IP du client qui a demandé à voir la page

<?php echo $_SERVER['REMOTE_ADDR']; ?>

$_SERVER['HTTP_USER_AGENT']

Décrit le client de la requête (votre navigateur) 

<?php echo $_SERVER'[HTTP_USER_AGENT']; ?>
CCBot/2.0

Liste des variables de SERVEUR

<?php print_r($_SERVER); ?>
Exercice
  1. Affchier "L'adresse IP du client est xxx.xxx.xxxx.xxx"
  2. Afficher "l'adresse de la page actuelle est www.conseil-webmaster.com/formation/php/02-bases-php.php

Exercice

Les sessions

$_SESSION : c'est là-dedans que l'on retrouve les variables de session.

Les sessions en PHP permettent de sauvegarder des variables de page en page pendant une certaine durée prédéfinie par PHP (et modifiable bien entendu).

Chaque utilisateur ayant besoin des sessions se voit attribuer un identifiant unique appelé ID de session.
Cet identifiant est stocké sur le poste de l'internaute sous forme d'un cookie ou transite via l'URL si l'option session.use_trans_sid est à 1 (ou On) dans le fichier php.ini.
Utiliser la méthode du cookie est plus que recommandée : un identifiant de session dans l'URL empêche de retenir l'adresse d'une page simplement par le visiteur néophyte, cela rallonge donc l'adresse de votre page. Cela nuit également au référencement de votre page. En effet, l'identifiant étant unique, lorsque le robot du moteur de recherche scanne votre site, il ne retombera jamais sur la même URL plusieurs fois de suite.

Avant d'utiliser les sessions sur une page, on doit toujours utiliser la fonction session_start() placée avant tout envoi de code HTML, et donc généralement tout en haut de votre page PHP :

session_start()

<?php
session_start(); // On démarre la session AVANT toute chose, doit être placé avant tout echo ou autre code html
// On peut créer quelques variables de session :
$_SESSION['prenom'] = 'Jean';
$_SESSION['nom'] = 'Dupont';
$_SESSION['age'] = 24;
// Maintenant que le session_start est fait, on peut taper du code HTML
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Titre de ma page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>
Salut <?php echo $_SESSION['prenom']; ?> !<br />
Tu es à l'accueil de mon site </p>
</body>
</html>

Pourquoi session_start() doit-elle être placée de la sorte ? et bien parce que si PHP utilise les cookies pour repérer quel est l'id de session utilisé par l'internaute, il va écrire cet id de session dans un cookie. Or, le protocole HTTP fonctionne de telle sorte que les en-têtes (qui permettent de dire à votre navigateur "crée un cookie ayant tel nom et telle valeur") sont envoyés avant le premier caractère HTML transmis.
Cela veut dire que dès que vous transmettrez un caractère HTML, les en-têtes seront envoyés et vous ne pourrez plus les modifier, vous ne pourrez donc plus écrire le cookie de session.
En général, si vous faites une maladresse de ce style, vous vous retrouverez avec une erreur de headers already sent.

Quelle est la durée de vie d'une session ?

Dès que l'on ferme le navigateur la session est détruite.
Sauf à configurer le fichier php.ini avec session.lifetime qui fixe la durée de vie, en secondes, du cookie envoyé au client. La valeur 0 signifie "jusqu'à ce que le client soit fermé". Par défaut à 0.
Donc si on le laisse à zéro la session dure jusqu'à la fermeture du navigateur, pour laisser les données durant 30 minutes, il faut remplacer 0 par 1800 (= 30 minutes * 60 secondes dans une minute).
session.lifetime = 0

Supprimer une variable de session

La commande session_unregister() supprime une variable dans la session courante. Elle a pour syntaxe :

boolean session_unregister (string name)

 

Elle retourne TRUE si success, FALSE sinon.

Il est aussi possible de purger toutes les variables de la session avec

session_unset()

Si vous utilisez le tableau superglobal $_SESSION, il suffit alors d'utiliser unset() :

unset($_SESSION["mavariable"])

Fermer une session

1- Fermeture conservatrice :

La commande session_write_close() écrit les valeurs des variables de session sur le serveur et ferme la session.

session_write_close()

2- Fermeture destructive :

Enfin, si vous voulez détruire la session du visiteur, vous pouvez faire un lien "Déconnexion" qui amène vers une page qui fait appel à la fonction session_destroy()

La commande session_destroy() détruit toutes les données enregistrées d'une session.
Cette dernière commande est la plus utilisée car n'impose aucune sauvegarde au serveur. Retourne TRUE en cas de succès, et FALSE sinon.

session_ destroy()

Exercices

Les cookies

$_COOKIE : C'est là-dedans que l'on retrouve les valeurs des cookies enregistrés sur l'ordinateur du visiteur.

Un cookie, c'est un petit fichier que l'on enregistre sur l'ordinateur du visiteur.
Ce fichier contient du texte et permet de "retenir" des informations sur le visiteur.
Par exemple, vous inscrivez dans un cookie le pseudo du visiteur, comme ça la prochaine fois qu'il viendra sur votre site vous pourrez lire son pseudo en allant regarder ce que son cookie contient.
Chaque cookie peut contenir plusieurs informations.

Ecrire un cookie

Pour écrire un cookie, on utilise la fonction PHP setcookie (qui signifie "Placer un cookie" en anglais).
On lui donne en général 3 paramètres, dans l'ordre suivant :
  1. Le nom du cookie (ex : "Nom")
  2. La valeur du cookie (ex : "toto")
  3. La date d'expiration du cookie, sous forme de timestamp (ex : 1090521508)

setcookie(string nom, string valeur, string expiration, string chemin, string domaine, string securise)

Comme vous pouvez le voir, un cookie a une durée de vie limitée, Il est automatiquement "supprimé" au bout d'un certain temps.
Si vous voulez supprimer le cookie dans un an, il vous faudra faire :
time() + 365*24*3600
Cela veut dire : timestamp actuel + nombre de secondes dans une année. Cela aura pour effet de voir votre cookie disparaître dans exactement un an.
Toutefois, il y a un petit problème avec setcookie... Comme pour session_start, cette fonction ne marche QUE si vous la mettez avant tout code HTML (donc avant la balise <!DOCTYPE>)
Ne placez donc JAMAIS le moindre code HTML avant d'utiliser setcookie.
La plupart des gens qui ont des problèmes avec setcookie ont fait cette erreur, donc souvenez-vous en !

Exemple

Créer 2 cookies: Un qui retient mon pseudo pendant un an, et un autre qui retient le nom de mon pays

<?php
$timestamp_expire = time() + 365*24*3600; // Le cookie expirera dans un an
setcookie('pseudo', 'Khof', $timestamp_expire); // On écrit un cookie
setcookie('pays', 'France', $timestamp_expire); // On écrit un autre cookie...
// Et SEULEMENT MAINTENANT, on peut commencer à écrire du code html
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma super page PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
... etc etc...

Afficher un cookie

$_COOKIE['Nom_cookie']

PHP lit les cookies du client pour récupérer toutes les informations qu'il y a dedans. Ces informations sont placées dans la superglobale $_COOKIE, sous forme d'array (tableau)
<?php
// Afficher les cookies
echo "Bonjour " .$_COOKIE['Nom'] ." " .$_COOKIE['Prenom'];
// Autre façon pour afficher un cookie
echo $HTTP_COOKIE_VARS["Nom"];
?>

Exercice cookies 01

Définir et afficher un cookie

Exercice cookies 02

Définir un cookie, l'afficher sur une autre page

Supression d'un cookie

Pour supprimer un cookie, Il suffit de déclarer le cookie sans mettre de valeur

setcookie("Nom_cookie")

<?php
setcookie("compteur");
?>

Autres variables superglobales

$_ENV : ce sont des variables d'environnement, toujours données par le serveur. Plus précisément, le système d'exploitation (Linux) donne ces informations.
Mais bon, il n'y a rien de vraiment bien utile et de toute façon je suis incapable de vous donner une liste de ce que renvoit cette superglobale. Donc on l'oublie

Manipuler des fichiers

Ouvrir un fichier fopen()

fopen(string filename, string mode)

fopen("fichier.txt", "r")

<?php
$source="fichier.txt";
if($fichier=@fopen($source,"r")) // Le @ permet de ne pas afficher l'erreur et renvoie le statut que nous définisons en dessous
{
echo "L'ouverture du fichier est possible car la fonction fopen retourne TRUE<br />";
}
else
{
echo "Ouverture du fichier impossible car fopen retourne FALSE";
}
?>
Valeur Opérations permises :
a Ouverture du fichier pour : écrire et créer le fichier. L'écriture commence a la fin du fichier
a+ Mêmes fonctions que ci-dessus sauf que la lecture est permise.
r Ouverture d'un fichier en lecture seule.
r+ Mêmes fonctions que ci-dessus sauf qu'il est possible d'écrire dans le fichier. L'écriture commence au début du fichier.
w Ouverture du fichier en écriture seulement. Création du fichier si celui-ci n'existe pas sauf que les données contenues précédemment sont effacées.
w+ Mêmes fonctions sauf qu'il est possible de lire dans le fichier.

La fonction fopen() renvoie true si l'ouverture est possible et false si elle ne l'est pas.

Exercice file01.php

Afficher le contenu d'un fichier dans un navigateur

fpassthru($fichier)

<?php
$source1="fichier1.txt";
$fichier1=fopen($source1,"r");
fpassthru($fichier1); // Permet d'afficher le contenu du fichier dans un navigateur
?>

Lecture de fichiers

fgets($fichier, longueur)

La fonction fgets() permet d'extraire une chaîne d'une certaine longueur.
Il faut aussi savoir que la fonction extrait la chaîne de la longueur précise définie en argument, plus un caractère et que la fonction s'arrête aux sauts de lignes

fgets(string pointeur, string longueur)

<?php
$source4="fichier.txt";
$fichier4=fopen($source4,"r+");
echo fgets($fichier4,4);
?>

fgetc($fichier,longeur)

fgetc() permet d'extraire le premier caractère du fichier

fgetc(string pointeur)

< ?php
$fichier = fopen("fichier.txt","r");
$premier = fgetc($fichier);
echo "Premier Caractère : " . $premier;
fclose($fichier);
?>

fgets($fichier, longueur)

La fonction fgets() permet d'extraire une chaîne d'une certaine longueur.
Il faut aussi savoir que la fonction extrait la chaîne de la longueur précise définie en argument, plus un caractère et que la fonction s'arrête aux sauts de lignes

fgets(string pointeur, string longueur)

<?php
$fichier = fopen("fichier.txt","r");
$premier = fgets($fichier, 10);
echo "Dix Premier Caractères : " . $premier;
fclose($fichier);
?>

fgetss($fichier,longueur)

La fonction fgetss() a quasiment la même utilité que la fonction fgets() sauf qu'elle n'extrait ni les balises HTML, ni les balises PHP

Exemple :
Pour un fichier contenant : '< b>Bonjour !< /b>< br>Test de la fonction fgetss', la fonction ne renverra que les caractères, la mise en forme HTML sera ignorée : 'Bonjour !Test de la fonction fgetss'

fread($fichier,longueur)

La fonction fread() permet de lire une chaîne de caractère dans un fichier ouvert, jusqu'a la longueur indiquée en argument

fread(string pointeur, string longueur)

<?php
$fichier = fopen("essai.txt","r");
$premier = fread($fichier, 10);
echo "Dix Premiers Caractères : " . $premier;
fclose($fichier);
?>

Exercice file01.php

fclose(fichier)

Ecrire dans un fichier

Pour écrire dans un fichier, on peut utiliser au choix la fonction fwrite() ou fputs()

fwrite($fichier,'Texte a ajouter')

La fonction retourne TRUE si l'écriture se passe normalement, sinon elle retourne FALSE.
Attention toutefois : le fichier doit bien être ouvert en mode écriture : w, a ou r+.

fwrite(string pointeur, string chaîne, (string longueur))

fputs(string pointeur, string chaîne, (string longueur))

<?php
$fichier = fopen("essai.txt","w");
if(fwrite($fichier, "TEXTE A ECRIRE"))
{
echo "OK !";
}
else echo "Erreur";
fclose($fichier);
?>

Exercice file01.php

Exercice compteur

Vérifier l'existence d'un fichier

file_exists("fichier.txt")

Pour vérifier si un fichier existe, on utilise la fonction file_exists()

file_exists(string fichier)

<?php
if(file_exists("fichier.txt")) {
echo "Fichier existant";
}
else echo "Introuvable !";
?>

Copier coller des fichiers

Pour copier un fichier, il faut utiliser la fonction copy()

copy(fichier_depart,fichier_destination)

La fonction retourne TRUE si tout se passe correctement et sinon FALSE.
<?php
if(@copy("essai.txt","complet/copy_fichier.txt"))
{
Echo "Le fichier essai.txt a été copié dans le répertoire complet/copy_fichier.txt.";
}
else echo "Erreur";
?>

Exercice file02.2.php

Renommer un fichier

il faut utiliser la fonction rename()

rename(nom_depart, nom_nouveau)

rename(string nom_depart, string nom_nouveau)

<?php
if(@rename("essai.txt","nouveau_fichier.txt")) {
Echo "Le fichier essai.txt a été renommé en nouveau_fichier.txt.";
}
else echo "Erreur";
?>

Exercice file02.3.php

Supprimer un fichier

C'est la fonction unlink() que l'on utilise

unlink(fichier)

unlink(string fichier)

<?php
if(@unlink("essai.txt"))
{
Echo "Le fichier essai.txt a été supprimé.";
}
else echo "Erreur";
?>

Exercice file02.4.php

PHP (acronyme récursif pour PHP: Hypertext Preprocessor, est un langage de scripts libre principalement utilisé pour produire des pages web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet complètes. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.

Plan du site | Contact | Flux RSS | Création LCFormateur

Ce site est liste dans la categorie Enseignement et formation : Formations professionnelles de l'annuaire Referencement et Dictionnaire

Arrep | Développement de logiciel sur mesure | Bois et vie | Formation management | Graphiste Powerpoint | Informatique Zen | Glam Bar | Formation webmaster | Formation bureautique | Le Kervegan | 3 MI | Fitness Valenciennes | Zumba Valenciennes | Test de personnalité | Recherche sur le cancer | Mise en plan 3D | Proflex services | Repar Coudre | Top auto