PHP session失效不傳遞的解決方法

卡哇伊
發布: 2023-03-02 06:24:01
原創
3385 人瀏覽過

PHP session失效不傳遞的解決方法:先寫個php檔案內容為「<?=phpinfo()?>」;然後傳到伺服器去看伺服器的參數配置,表示使用者ID為標識的session;最後將session的name賦值Havi,輸出session。

PHP session失效不傳遞的解決方法

PHP中,session不能傳遞到下一個頁面去,一般有兩種情況:

我們先寫個php檔案:<?=phpinfo()?>,傳到伺服器去看看伺服器的參數設定。

session部分,看到session.use_trans_sid參數被設定為0。

這 個參數指定了是否啟用透明SID支持,即session是否隨著URL傳遞。我個人的理解是,一旦這個參數被設為0,那麼每個URL都會啟動一個 session。這樣後面頁面就無法追蹤得到前面一個頁面的session,也就是我們所說的無法傳遞。兩個頁面在伺服器端產生了兩個session文 件,且無關聯。

所以一個方法是在設定檔php.ini裡面把session.use_trans_sid的值改成1。

當然我們知道,不是誰都有權限去改php的設定的,那麼還有什麼間接的解決方法呢?

下面就用兩個實例來說明:

檔案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>”;
?>
登入後複製

#檔案2:test2.php

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

每個頁面都要寫開啟session,不然還是無法正常運作

#以,重點是在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儲存的位址:

<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 session失效不傳遞的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!