微信公眾號開發無法用session保存狀態


公眾號開發今天發現居然不能用session,弄了好半天還以為代碼出問題了。趕緊寫篇博客記錄下。

問題
普通web開發一般這么用session來保存狀態。

session_start();

if(isset($_SESSION['user']))//已經登錄
{
echo '已經登錄';
}
else
{
//跳轉登錄頁面...
//保存狀態
$_SESSION['user'] = $_POST['username'];
}
1
2
3
4
5
6
7
8
9
10
11
12
類似的處理機制,在自己的公眾號服務器上卻發現不生效,session無法保存之前記錄的狀態。打印了session id發現微信服務器每次訪問我的服務器session都不一樣,這樣肯定session的信息沒法保存。

查了一些資料,

由於公眾平台的特殊形式,用戶的消息是通過騰訊服務器直接post的過來的,服務器是不帶cookie過來的,所以當你想用平時直接設置cookie和session是不行的,cookie是徹底沒戲,session的問題是 服務器每次過來不帶session_id 所有我們也無話讀取session文件。

解決問題
網上給的一種解決方案:
用戶post過來的openid當做sessionid ,openid是一個唯一不重復的,這樣每個用戶的狀態是可以獨立的

$wObj = new atweixin();
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$wObj->fromUsername = $postObj->FromUserName;
session_id($wObj->fromUsername);
session_start();
1
2
3
4
5
6
但是接下來怎么做?
我直接用$_SESSION數組還是不能保存

if(!isset($_SESSION['token']))
{
user_dump('acess token');
$_SESSION['token'] = '1234';
}
---------------------
作者:Pony小馬
來源:CSDN
原文:https://blog.csdn.net/pony_maggie/article/details/52462084
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM