Ressources » PHP

Mémo - Espace restreint

Ce tutoriel a pour but de vous faire découvrir d'une manière simple et intuitive les principales possibilités offertes par PHP dans sa version 5 pour manipuler des données XML.

Les sessions en PHP

Une session est un mécanisme géré de manière transparente par le serveur PHP.
Une création de session génère un identifiant unique. Ce dernier est attribué à l'internaute et le suivra tant que la session sera active.
Dès lors, on peut créer des variables, dites de sessions qui seront sauvegardées sous forme sérialisée dans un fichier texte portant le nom de la session.

Deux manières d'assurer le transfert de cette identifiant unique :

  1. Cookie : Un cookie est créé au démarrage de la session. Il permet de sauvegarder la variable PHPSESSID faisant référence à l'identifiant de session (SID).
  2. URL : La variable de session PHPSESSID ou SID est transmise de page en page par l'intermédiaire de l'URL.

Ces deux processus de propagation sont gérés de manière automatique par le seuveur PHP. Si le navigateur du client accepte les cookie, la première méthode sera priviligiée, si non ce sera la deuxième.

Cependant, il est possible de forcer le serveur à utiliser une méthode bien particulière, par exemple les cookies.

ini_set('session.use_trans_sid', false);
ini_set('session.use_only_cookies', false);
session_start();

Astuce : Cette méthode est bien utile, notamment si vous souhaitez que votre site soit reconnu comme valide en XHTML Strict !
Mais ceux qui n'accepte pas les cookies, n'accederons pas à votre espace sécurisé.

  1. session_start()
    Cette fonction permet d'initialiser une session, ou de continuer une session déjà existante.
  2. session_name([opt nomSession])
    Déterminer le nom de la variable transmise via le cookie ou via l'URL (ex:PHPSESSID).
    Optionnel : nomSession change le nom de la session.
  3. session_id([opt idSession])
    Permet de récupérer l'identifiant de la session ou de lui en attribuer un aevc le paramètre idSession.
  4. session_register(nomVariable1[,nomVariable2,...])
    Cette fonction permet de stocker une variable au sein d'une session. En paramètre, le nom des variables à stocker séparer par une virgule.
  5. session_is_registered(nomVariable)
    Teste si une variable fait partie d'une session.
    Equivalent : isset($_SESSION['nomVariable']);
  6. session_unregister(nomVariable)
    Permet de détruire une variable de session.
    Ex : session_unregister('nomVariable');
  7. session_unset()
    Détruit l'ensemble des variables de session
  8. session_destroy()
    Détruit la session

A propos

Il existe différentes manières de protéger l'accès à une partie d'un site internet.
Nous en verrons ici que deux, les sessions PHP et les authenfications serveur.
Cette dernière méthode permet d'émuler le fonctionnement de la protection .htaccess gràce à deux variables serveurs : PHP_AUTH_USER et PHP_AUTH_PW tandis que la première crééra un identifiant unique.

Authentification serveur

if ( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){

    header('WWW-Authenticate: Basic realm="Authentification"');

    header('HTTP/1.0 401 Unauthorized');

    echo 'Acces non autorisé';

    exit;

}else{

    echo 'Utilisateur authentifié';

}

Explication : La fonction header() demande une identification "Authentication Required" au client, générant ainsi l'apparition d'une fenêtre. Cette dernière demande un nom d'utilisateur et un mot de passe au visiteur.

Une fois que ces derniers informés, la page se recharge en passant les variables PHP_AUTH_USER, PHP_AUTH_PW et AUTH_TYPE, contenant respectivement le nom d'utilisateur, le mot de passe et le type d'identification.
Ces variables pré-définies appartiennent aux tableaux $_SERVER.

Note de compatibilité : Afin de garantir un maximum de compatibilité entre les navigateurs, le mot clé "Basic" doit être écrit avec un B majuscule, et le texte de présentation doit être placé entre guillemets simples, et exactement un espace doit précéder le code 401 dans l'en-tête HTTP/1.0 401.
Actuellement, seule l'identification simple "Basic" est supportée.

Plus de codes sources :

En résumé...

A vous de choisir le type d'authentification que vous souhaitez mettre en place, en fonction de vos besoins et/ou de vos contraintes (technique, graphique...).

Quelques bonnes adresses :