Dans PHP, session_start () est une fonction clé utilisée pour démarrer une nouvelle session ou restaurer une session existante. La session est un moyen d'économiser et de transmettre des données entre les utilisateurs et les serveurs, en particulier adaptés aux situations où les utilisateurs doivent être suivis en continu sur plusieurs pages, telles que l'état de connexion des utilisateurs, les informations de panier d'achat, etc.
Dans le développement Web, le protocole HTTP lui-même est sans état, c'est-à-dire que chaque demande n'a aucune association avec la demande précédente. Par conséquent, si vous souhaitez maintenir l'état de l'utilisateur entre les différentes pages (comme le maintien des informations de connexion), vous devez utiliser l'aide d'une session pour y parvenir. PHP permet au serveur d'attribuer un identifiant unique à chaque utilisateur visitant le site Web via un mécanisme de session. Cet identifiant est généralement enregistré au navigateur de l'utilisateur via un cookie. Chaque fois qu'un utilisateur initie une nouvelle demande, le serveur peut identifier et restaurer les données de session liées à l'utilisateur en fonction de cet identifiant.
Session_Start () est le point de départ de la gestion de la session PHP. Après avoir appelé cette fonction, PHP essaiera de lire l'identifiant de session et de restaurer les données de session. Si le client ne fournit pas d'identifiant de session valide, PHP créera une nouvelle session pour la demande, générera un ID de session unique et enregistrera cet ID du côté du navigateur (généralement sous la forme d'un cookie). Si le navigateur a déjà un ID de session, PHP restaure les données de session en fonction de cet ID.
Démarrez une session : si la session n'existe pas, une nouvelle session est créée et un ID de session est généré.
Restauration de session : si la session existe déjà, restaurez les données liées à cette session.
Profiter des données de session : stockage et lecture des données dans une session via le tableau $ _Session .
Temps d'appel
La fonction session_start () doit être appelée avant toute sortie de la page. Cela signifie que la page ne peut avoir aucun contenu HTML ou sortie de l'instruction ECHO avant d'appeler session_start () . En effet, PHP doit envoyer un en-tête HTTP pour identifier ou créer un ID de session. Si session_start () n'est pas appelée avant la sortie du contenu, une erreur ou un comportement de session anormal se produira.
Écriture correcte:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>(); </span><span><span class="hljs-comment">// Lancer une conversation</span></span><span>
</span><span><span class="hljs-comment">// Autres codes</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Évitez les appels répétés <br> Dans le même script, session_start () ne peut être appelé qu'une seule fois. Si vous l'appelez accidentellement plusieurs fois dans votre code, PHP lancera un avertissement. Généralement, pour éviter plusieurs appels, vous pouvez déterminer dans le code si la session a commencé.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">session_status</span></span><span>() == PHP_SESSION_NONE) {
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>(); </span><span><span class="hljs-comment">// Appelé uniquement lorsque la session n'est pas démarrée</span></span><span>
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Utilisez $ _SESSION pour stocker les données <br> Une fois la session au début, vous pouvez stocker et accéder aux données via le tableau $ _Session . $ _Session est un tableau global qui peut partager des données sur plusieurs pages.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// Stocker les données de session</span></span><span>
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>] = </span><span><span class="hljs-string">'JohnDoe'</span></span><span>;
</span><span><span class="hljs-comment">// Accéder aux données de session</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Content de te revoir, '</span></span><span> . </span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Mettre fin à la session <br> Lorsque l'utilisateur se déconnecte ou que vous n'avez plus besoin de données de session, vous pouvez détruire la session via la fonction session_destroy () . Session_Destroy () ne supprime pas immédiatement les données du tableau $ _Session , mais marque plutôt la session comme un état détruit. Si vous souhaitez effacer complètement les données, vous devez également supprimer la variable dans $ _Session via unset () .
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// Effacer les données de session spécifiées</span></span><span>
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>]);
</span><span><span class="hljs-comment">// Détruisez toute la session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Session perdue <br> Si les données de session sont perdues entre les pages, cela peut être dû au fait que le navigateur a des cookies désactivés ou que la fonction session_start () n'est pas appelée avant la sortie de la page. Vous pouvez ajuster la durée du stockage de session en vérifiant PHP Session.cookie_lifetime et session.gc_maxlifetime paramètres, ou essayer de passer l'ID de session via l'URL.
Problème de fixation d'ID de session <br> Dans certaines applications ayant des exigences de haute sécurité, un attaquant peut obtenir l'ID de session de l'utilisateur via une attaque de détournement de session. Pour éviter cela, la fonction Session_RegeReate_ID () de PHP peut être utilisée pour remplacer l'ID de session afin de réduire les risques de sécurité.
Exemple de code:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">session_regenerate_id</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// Session de changementID</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
La fonction session_start () est la base de la gestion de ses session PHP. L'utiliser correctement vous permet de maintenir l'état de l'utilisateur dans votre application Web. Pour assurer la progression fluide de la session, n'oubliez pas d'appeler session_start () avant la sortie de la page et évitez plusieurs appels. À la fin de la session, utilisez Session_Destroy () et Unset () raisonnablement pour nettoyer les données de session. En configurant rationnellement les paramètres de session et des mesures de sécurité d'utilisation, l'expérience utilisateur et la sécurité des applications Web peuvent être considérablement améliorées.