(PHP 4, PHP 5, PHP 7)
session_start — Démarre une nouvelle session ou reprend une session existante
$options
= array()
] )session_start() crée une session ou restaure celle trouvée sur le serveur, via l'identifiant de session passé dans une requête GET, POST ou par un cookie.
Lorsque session_start() est appelée ou lorsqu'une session démarre toute seule, PHP va appeler les gestionnaires d'ouverture et de lecture. Ce sont des gestionnaires internes fournis par PHP (comme fichiers, SQLite ou Memcached) ou encore des gestionnaires personnalisés définis au moyen de session_set_save_handler(). La fonction de lecture va récupérer toute session existante (stockée sous forme sérialisée) et va désérialiser les données pour peupler $_SESSION.
Pour utiliser une session nommée, vous devez appeler session_name() avant d'appeler session_start().
Lorsque session.use_trans_sid est activée, la function session_start() enregistrera un gestionnaire interne de sortie pour la réécriture d'URL.
Si un utilisateur utilise ob_gzhandler ou l'équivalent ob_start(), l'ordre d'appel des fonctions est important pour une sortie correcte. Par exemple, ob_gzhandler doit être enregistré avant de démarrer la session.
options
S'il est fourni, il s'agit d'un tableau associatif d'options qui remplacera les directives de configuration de session actuellement définies. Les clés ne doivent pas inclure le préfixe session..
En plus de l'ensemble normal des directives de configuration, une option
read_and_close peut également être fournie. Si la
valeur est définie sur TRUE
, cela entraîne la fermeture immédiate de
la session après la lecture, ce qui évite tout blocage inutile si les
données de session ne sont pas modifiées.
Retourne TRUE
si une session a pu être démarrée avec succès, et FALSE
sinon.
Version | Description |
---|---|
7.1.0 |
session_start() retourne maintenant FALSE et
n'initialise plus $_SESSION lorsqu'il n'a pas pu
démarrer la session.
|
7.0.0 |
Le paramètre options a été ajouté.
|
5.3.0 |
Si une session n'arrive pas à démarrer, alors FALSE est retourné.
Précédemment TRUE était retourné.
|
4.3.3 |
A partir de PHP 4.3.3, appeler session_start()
après qu'une session sois déjà démarrée émettra une erreur E_NOTICE .
De plus la deuxième session démarrée sera tout simplement ignorée.
|
Exemple #1 page1.php
<?php
// page1.php
session_start();
echo 'Bienvenue à la page numéro 1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// Fonctionne si le cookie a été accepté
echo '<br /><a href="page2.php">page 2</a>';
// Ou bien, en indiquant explicitement l'identfiant de session
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
Après avoir vu la page page1.php avec un navigateur,
la seconde page page2.php (dont le code suit) va magiquement afficher
les données de session. Lisez la référence sur
les sessions pour des informations
sur la propagation des identifiants de session,
et l'utilisation de la constante SID
.
Exemple #2 Récupération de la session : page2.php
<?php
// page2.php
session_start();
echo 'Bienvenue sur la page numéro 2<br />';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// Vous pourriez utiliser la constante SID ici, tout comme dans la page page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
Exemple #3 Remplacement de la durée de vie du cookie
<?php
// Cela envoie un cookie persistant qui dure une journée.
session_start([
'cookie_lifetime' => 86400,
]);
?>
Exemple #4 Lecture de la session et fermeture
<?php
// Si nous savons que nous n'avons pas besoin de changer
// quoi que ce soit dans la session, nous pouvons juste
// lire et fermer tout de suite pour éviter de verrouiller
// le fichier de session et bloquer d'autres pages
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Note:
Pour utiliser des sessions basées sur les cookies, session_start() doit être appelée avant d'afficher quoi que ce soit dans le navigateur.
Note:
L'utilisation de zlib.output_compression est recommandée, à la place de ob_gzhandler().
Note:
Cette fonction va émettre plusieurs entêtes HTTP, en fonction de la configuration. Voyez session_cache_limiter() pour personnaliser ces entêtes.