PHP 세션 실패 및 전달되지 않는 해결 방법: 먼저 "<?=phpinfo()?>" 콘텐츠로 PHP 파일을 작성한 다음 이를 서버에 전달하여 사용자 ID를 나타내는 서버의 매개변수 구성을 확인합니다. 식별된 세션입니다. 마지막으로 Havi에 세션 이름을 할당하고 세션을 출력합니다.
PHP에서는 세션을 다음 페이지로 전달할 수 없습니다. 일반적으로 두 가지 상황이 있습니다.
먼저 PHP 파일을 작성해 보겠습니다. <?=phpinfo( ) ?>
, 서버에 전달하여 서버 매개변수 구성을 확인합니다. <?=phpinfo()?>
,传到服务器去看看服务器的参数配置。
转到session
部分,看到session.use_trans_sid
参数被设为了0。
这 个参数指定了是否启用透明SID支持,即session
是否随着URL传递。我个人的理解是,一旦这个参数被设为0,那么每个URL都会启一个 session
。这样后面页面就无法追踪得到前面一个页面的session,也就是我们所说的无法传递。两个页面在服务器端生成了两个session
文 件,且无关联。
所以一个办法是在配置文件php.ini
里把session.use_trans_sid
session
섹션으로 이동하여 session.use_trans_sid
매개변수가 0으로 설정되어 있는지 확인하세요. 이 매개변수는 투명한 SID 지원을 활성화할지 여부, 즉 세션
이 URL과 함께 전달되는지 여부를 지정합니다. 개인적으로 이해하기로는 이 매개변수가 0으로 설정되면 각 URL이 세션
을 시작한다는 것입니다. 이러한 방식으로 후속 페이지는 이전 페이지의 세션을 추적할 수 없으며, 이를 전달할 수 없다고 합니다. 두 페이지는 서버측에 두 개의 세션
파일을 생성하며 서로 관련이 없습니다.
한 가지 방법은 php.ini
구성 파일에서 session.use_trans_sid
값을 1로 변경하는 것입니다.
파일 1 test1.php
<?php //表明是使用用户ID为标识的session session_id(SID); //启动session session_start(); //将session的name赋值为Havi $_SESSION['name']=”Havi”; //输出session,并设置超链接到第二页test2.php echo “<a href=\”test2.php\”>”.$_SESSION['name'].”</a>”; ?>
파일 2: test2.php
<?php 表明是使用用户ID为标识的session session_id(SID); //启动session session_start(); //输出test1.php中传递的session。 echo “This is “.$_SESSION['name']; ?>
세션을 열려면 모든 페이지를 써야 합니다. 그렇지 않으면 여전히 제대로 작동하지 않습니다
장소 그래서 핵심은 session_start();
앞에 session_id(SID)
;를 추가하여 페이지가 변환될 때 서버가 사용자의 < 서버의 폴더에 있는 session
에 저장된 code>세션을 사용하면 전송 문제가 해결됩니다. session_start();
前加上session_id(SID)
;,这样页面转换时,服务器使用的是用户保存在服务器session
文件夹里的session
,解决了传递的问题。
不过有同鞋会反映说,这样一来,多个用户的session
写在一个SID里了,那Session的价值就发挥不出来了。所以还有一招来解决此问题,不用加session_id(SID);
前提是你对服务器的php.ini有配置的权限:
<span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;">output_buffering</span><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;"></span>
改成ON,道理就不表了。
第二个可能的原因是对服务器保存session
的文件夹没有读取权限,还是回到phpinfo.php
中,查看session
세션
이 하나의 SID에 작성되면 세션의 가치가 완전히 실현되지 않을 것이라고 보고할 것입니다. 따라서 이 문제를 해결하는 다른 방법이 있습니다. session_id(SID);
를 추가할 필요는 없습니다. 전제는 서버의 php.ini에 대한 구성 권한이 있다는 것입니다. 🎜🎜🎜🎜output_buffering🎜🎜🎜</code >🎜ON으로 변경하면 더 이상 진실이 표현되지 않습니다. 🎜🎜🎜🎜🎜두 번째 가능한 이유는 서버가 <code>세션
을 저장하는 폴더에 대한 읽기 권한이 없거나, phpinfo.php
로 돌아가서, 🎜View < code >session저장된 주소: 🎜🎜<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”))); ?>
如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯,在你编写的网页里加入:
//设置当前目录下session子文件夹为session保存路径。$sessSavePath = dirname(__FILE__).’/session/’; //如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。if(is_writeable($sessSavePath) && is_readable($sessSavePath)){session_save_path($sessSavePath);}
위 내용은 PHP 세션 실패 및 전달 불가에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!