Maison  >  Article  >  développement back-end  >  Que faire si la session php ne peut pas transmettre de valeur

Que faire si la session php ne peut pas transmettre de valeur

藏色散人
藏色散人original
2021-09-19 10:36:232736parcourir

Solution au problème selon lequel la session php ne peut pas transférer de valeur : 1. Vérifiez la configuration des paramètres du serveur ; 2. Modifiez la valeur de "session.use_trans_sid" dans le fichier de configuration php.ini à 1. Vérifiez le "var/tmp" " fichier Vérifiez simplement si le dossier est accessible en écriture et peut être modifié.

Que faire si la session php ne peut pas transmettre de valeur

L'environnement d'exploitation de cet article : système Windows 7, PHP7.1, ordinateur Dell G3.

Que dois-je faire si la session php ne peut pas transmettre la valeur ?

Solution à l'échec et au non-passage d'une session PHP

En PHP, la session ne peut pas être passée à la page suivante. Il existe généralement deux situations :

Écrivons d'abord un fichier php : , transmettez-le au serveur pour voir la configuration des paramètres du serveur.

Allez dans la section session et voyez que le paramètre session.use_trans_sid est défini sur zéro.

Ce paramètre spécifie s'il faut activer la prise en charge transparente du SID, c'est-à-dire si la session est transmise avec l'URL. Ma compréhension personnelle est qu'une fois ce paramètre défini sur 0, une session sera démarrée pour chaque URL. De cette façon, les pages suivantes ne peuvent pas suivre la session de la page précédente, ce que nous appelons non livrable. Les deux pages génèrent deux fichiers de session côté serveur et ne sont pas liées. (Je ne sais pas si c'est correct ? Veuillez me donner quelques conseils.)

Une solution consiste donc à changer la valeur de session.use_trans_sid à 1 dans le fichier de configuration php.ini.

Bien sûr, nous savons que tout le monde n'a pas le pouvoir de modifier la configuration de php, alors quelles sont les autres solutions indirectes ?

Utilisons deux exemples pour illustrer :

Fichier 1 test1.php

//Indique que la session est identifiée par l'ID utilisateur
session_id(SID);
//Démarrer la session
session_start();

//Attribuer le nom de la session à Havi
$_SESSION ['name']=”Havi”;
//Sortie de session et définir un lien hypertexte vers la deuxième page test2.php
echo “”.$_SESSION['name'] . "";
?>

Fichier 2 : test2.php

indique que la session est identifiée par l'ID utilisateur
session_id (SID);
//Démarrer la session.
session_start ();

//Sortez la session réussie dans test1.php.
echo « Ceci est « .$_SESSION['name'];
?>

Chaque page doit écrire pour ouvrir la session. . Sinon, cela ne fonctionnera toujours pas correctement

Donc, le point clé est d'ajouter session_id(SID); avant session_start();, afin que lorsque la page est convertie, le serveur utilise la session enregistrée par l'utilisateur dans le dossier de session du serveur, ce qui résout le problème du problème de transfert.

Cependant, certains collègues signaleront que si les sessions de plusieurs utilisateurs sont écrites dans un seul SID, la valeur de la session ne sera pas pleinement exploitée. Il existe donc une autre façon de résoudre ce problème. Il n'est pas nécessaire d'ajouter session_id (SID) ; le principe est que vous disposez des autorisations de configuration sur le php.ini du serveur :

output_buffering est modifié sur ON. La vérité n'est pas évidente.

La deuxièmeraison possible est qu'il n'y a pas d'autorisation de lecture sur le dossier où le serveur enregistre la session, ou retournez sur phpinfo.php et vérifiez l'adresse où la session est enregistrée :

session .save_path : var /tmp

Vérifiez simplement si le dossier var/tmp est accessible en écriture.

Écrivez un fichier : test3.php pour le tester :

echo var_dump(is_writeable(ini_get(“session.save_path”)));
?>

Si bool(false) est renvoyé, prouvez le fichier Le dossier et les autorisations d'écriture sont restreints, puis modifiez le dossier et ajoutez :

//Définissez le sous-dossier de session dans le répertoire actuel comme chemin d'enregistrement de session dans la page Web que vous avez écrite.
$sessSavePath = dirname(__FILE__).’/session/’;

//Si le nouveau chemin est lisible et inscriptible (peut être obtenu en changeant l’attribut du dossier en 777 sur FTP), alors rendez le chemin efficace.
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn