Maison > développement back-end > Problème PHP > Solution à l'échec de la session PHP et à la non-livraison

Solution à l'échec de la session PHP et à la non-livraison

卡哇伊
Libérer: 2023-03-02 06:24:01
original
3455 Les gens l'ont consulté

La solution au problème d'échec de la session PHP et de non-livraison : écrivez d'abord un fichier php avec le contenu "<?=phpinfo()?>" puis transmettez-le au serveur pour voir le configuration des paramètres du serveur, indiquant que l'ID utilisateur est la session identifiée ; attribuez enfin le nom de la session à Havi et affichez la session.

Solution à l'échec de la session PHP et à la non-livraison

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

Écrivons d'abord un fichier php : <?=phpinfo()?> et envoyons-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 0.

Ce paramètre spécifie s'il faut activer la prise en charge transparente du SID, c'est-à-dire si session est transmis avec l'URL. Ma compréhension personnelle est qu'une fois ce paramètre défini sur 0, chaque URL ouvrira un session. 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 session fichiers côté serveur et ne sont pas liés.

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

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

Utilisons deux exemples pour illustrer :

Fichier 1 test1.php

<?php
//表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//将session的name赋值为Havi
$_SESSION[&#39;name&#39;]=”Havi”;
//输出session,并设置超链接到第二页test2.php
echo “<a href=\”test2.php\”>”.$_SESSION[&#39;name&#39;].”</a>”;
?>
Copier après la connexion

Fichier 2 : test2.php

<?php
表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//输出test1.php中传递的session。
echo “This is “.$_SESSION[&#39;name&#39;];
?>
Copier après la connexion

Chaque page doit écrire pour ouvrir la session, sinon elle ne fonctionnera toujours pas correctement

Donc , le point clé Ajoutez session_start(); avant session_id(SID), pour que lors de la conversion de la page, le serveur utilise le session enregistré par l'utilisateur dans le dossier session du serveur, ce qui résout le problème de transmission.

Cependant, certains collègues ont signalé que si le session de plusieurs utilisateurs est écrit dans un seul SID, la valeur de la session ne peut pas être exercée. Il existe donc une autre façon de résoudre ce problème. Vous n'avez pas besoin d'ajouter session_id(SID); Le principe est que vous disposez des autorisations de configuration sur le php.ini du serveur :

<🎜. >output_buffering<code><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;">output_buffering</span><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;"></span>

est remplacé par ON et la vérité est perdue.

sessionphpinfo.phpLa deuxième raison possible est que vous n'avez pas l'autorisation de lecture sur le dossier où est enregistré sur le serveur, ou que vous revenez à session et voir

Adresse enregistrée : <🎜><🎜>

<span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;">session.save_path: var/tmp</span>

所以就是检查下var/tmp文件夹是否可写。

写一个文件:test3.php来测试一下:

<?
echo var_dump(is_writeable(ini_get(“session.save_path”)));
?>
Copier après la connexion

如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯,在你编写的网页里加入:

//设置当前目录下session子文件夹为session保存路径。$sessSavePath = dirname(__FILE__).’/session/’;
//如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。if(is_writeable($sessSavePath) && is_readable($sessSavePath)){session_save_path($sessSavePath);}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal