php session不起作用的解決方案:先開啟php的設定檔;然後找到session相關的設定項;接著新建session 文件,並設定權限;最後重新上傳檔案即可。
推薦:《PHP影片教學》
解決php 專案中session 失效的方法
今天下班搭班車,快到站的時候,上家公司的leader 發了個qq 給我,意思是救火,下車後回來在電腦上詳細問了下,leader 的描述如下
這個地址 你幫我看下為啥上傳完試卷發布任務 設定答案卡的時候 session 就沒了
因為這個專案一開始後台都是我一人開發的,因此很快就找到了問題所在。流程為:使用者透過js 元件上傳試卷,在上傳試卷的方法中透過session 儲存剛剛上傳的試卷詳細信息,如名稱、後綴、存入資源表的ID 等,上傳成功後,再點擊頁面上的其他選項,如學校、年級、難易度等,最後點擊提交,在提交處理的方法裡,一開始便判斷剛剛上傳的session 值是否存在,不存在便跳到試卷首頁。我在此方法中印了 $_SESSION,沒有值,奇怪了,以前還是好好的。於是我問了下,啥時候開始的,leader 說下午快下班時,老師打電話說上傳考卷設定答案卡不成功,老跳轉。接著又問了下,動伺服器環境了麼,leader 說沒有。
既然出現了問題,那就解決問題唄。正好這段時間在看《PHP 核心技術與最佳實務》一書,裡面就對 session 和 cookie 有詳細的描述,同時也加深了我對二者的理解。於是我先打開 php 的設定文件,找到 session 相關的配置項,發現 session.save_path為 /data2/session,我記得以前都是設定為 /data1/session 的,怎麼變了。於是我退出來去看看此路徑,一開始我以為是該目錄權限不夠,後來一看,壓根就沒有該目錄,難怪每個 session 不會跨頁面。於是新建文件,設定權限,再上傳,一切又恢復正常了。
寫到這,我也想再嘮叨下 session 相關的技術點。 session 是儲存在伺服器端的,預設是以檔案方式儲存的(session.save_handler = files)。那 session 是如何產生的呢? session 是透過 session_start() 函數產生的 ,當此函數運行時,在 session 儲存的目錄裡產生一個檔案和唯一一個與之對應的 session id,透過 session id 可以取出該 session 檔案的資料。由於每次執行session_start() 都會產生新的seession 文件,那麼如何利用到以前生成session 文件呢,只需session_id($session_id),那麼便不會新產生session 文件了,而會去讀session id 對應的session 檔案。 session id 在預設情況下都是使用在客戶端(瀏覽器)的cookie 來儲存session id(在chrome 瀏覽器上按F12 鍵,點選Resources-cookies,可以看到),使用$_COOKIE['PHPSESSID']可以獲得。那個PHPSESSID是session id 的預設名稱,在 php.ini 裡可以透過 session.name 來設置,在腳本中用 session_name() 來取得 session id 的名稱。每次瀏覽器和伺服器對話時,瀏覽器都會把 session id 傳給伺服器的,伺服器會依據傳遞過來的 session id 找到對應的 session 檔案取得對應資訊進行相關操作。而一旦客戶端(瀏覽器)停用了 cookie,那麼伺服器端變不會接收到 session id,此時需要顯示傳遞 session id 了。兩種方法:手動透過 URL 傳遞 session id;隱藏表單傳遞 session id。上述兩種方法需要服務端的 php 環境中session.use_trans_sid 值為 1。
囉嗦了那麼多,最後還是 linus 那句話,「talk is cheap,show me the code」。
<?php session_start(); $_SESSION['arr'] = array('name' => 'molaifeng', 'hobby' => 'php'); ?> <a href="testSession.php?<?php echo session_name(); ?>=<?php echo session_id()?>">testSession</a>
<?php session_start($_REQUEST[session_name()]); print_r($_SESSION);
程式碼都看懂的吧,就不解釋了。
最後總結吧,一般情況下出現跨頁面 session 失效,基本上就是上述列出的幾點。 1、session.save_path 有誤,如權限不夠,或是目錄不存在;2、伺服器php配置中的 session.use_trans_sid 值為 0;3、客戶端停用了cookie。不過我覺得第一種狀況出現的頻率應該要蠻高的。
【updated 2018-05-21】
週五晚上上線,又踩了個坑。框架是用 CI , session 寫入 MySQL 表。一開始表現形式和上面描述的症狀一模一樣,於是便重新設定了 seesion 的目錄,並賦予了相關的讀寫權限,然並卵。後來發現該表是 memory 表,以為是超出了內存表最大值,於是清空了該表,還是然並卵。最後對比了下兩個版本的差異,發現在保存 session 的時候新增了兩個字段,於是採用排除法,先把兩個都註釋了,然後一個一個打開,最後定位到了問題。原來,新增的一個值是用來保存一個類型表的所有值的,一開始在做測試時,只有幾個值,後來上線時新增了一百多個值,同時那個字段只有3000 大小,應該是撐爆了。於是先把該欄位調大,讓線上驗證,然後改了下相關邏輯,不把表的所有值都寫進去。
以上是php session不起作用怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境