簡體   English   中英

CodeIgniter會話ID更改但無法正常工作

[英]CodeIgniter session id changing and not working

由於我們的支付系統,我們必須使用第三方網站上的某種中繼系統,才能擁有有效的PCI(HTTPS)。

我們目前正面臨着一個我們已經使用了太多時間的奇怪錯誤。

我們注冊了4個步驟。

  1. 輸入所有數據。
  2. 添加圖片
  3. 付款

我們這樣做:在第1步,我們將所有的帖子數據保存到會話$this->session->set_userdata("campaigncreation", $out); 是的$ out包含所有數據。

在步驟中,我們可以輕松打印出競選創建的會話數據; <?print_r($this->session->userdata)?>

因為我們需要訪問另一個網站,我們將session_id添加到我們的呼叫中,以便將會話保留在第三方網站上。

我們的網址如下: https//relay.ditonlinebetalingssystem.dk/relay/v2/relay.cgi/http : //xxxx.dk/something/controller/a1264526031adb9c71ae433eef44bfa0

如您所見,我們在URL中使用session_id( <?=$this->session->userdata("session_id")?> ),在我們的控制器中,我們將會話ID替換為控制器中的會話ID,如下所示:

$ phpsess是“ a1264526031adb9c71ae433eef44bfa0

if ( !empty($phpsess)){
            $this->session->set_userdata("session_id",$phpsess);
}

當我們現在打印出用戶數據時,我們得到了正確的session_id,但它並沒有從步驟1獲取數據。 怎么辦?

我只能得到

 Array
(
[session_id] => a1264526031adb9c71ae433eef44bfa0
[ip_address] => 87.54.46.121
[user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
[last_activity] => 1383052142
[user_data] => 
[advertiser_id] => 1
[advertiser_name] => xxxx

但在某種程度上,它仍然擁有advertiser_id和advertiser_name的正確數據,所以這是完全奇怪的。

怎么辦?

這就像codeigniter在每個頁面加載時刷新session_id,因此會出現問題。

或者可能是因為域cookie設置? 我不知道,請幫助我們。

它被稱為會話輪換,它實際上是CodeIgniter中的一個安全功能,我不建議禁用它,而是為您的引用創建一個表,並在每個請求中將一個使用授權令牌附加到另一個域。

然后從您的第二個域交叉引用令牌服務器端。

如果您需要更多詳細信息,請告訴我們=]

你可以在這里看到我對同一主題的一個答案:
IonAuth - 似乎是在隨機記錄我

我遇到了同樣的問題(刷新時更改了會話ID),結果發現我沒有在我的測試平台/設備上設置正確的日期時間

嘗試放置您網站的coorect網址。

$config['base_url'] = 'http://www.yoursite.com';

在這個奇怪的情況下,我正在嘗試拾取其他碎片。 我的開發部署測試會因ajax調用的會話不同而失敗。

似乎本地VM的IP不足以匹配此特定CodeIgniter項目的卷積。

只有在我使用正確的域名設置本地DNS服務器后,才允許logged_in識別會話$ username / $ identity。

我想ajax是在外部調用域名,而我是在本地查看使用從VM提供的IP的站點。

根據CI的Session.php,每次更新時ID都會更改,但它們會保留對舊ID的引用,以便他們可以在右側更新它。

另外,根據文檔:“session_id”每五分鍾重新生成一次(默認情況下)“。

如果沒有特定的理由使用“會話ID”,我建議您在userdata中設置另一個唯一變量並將其用作“會話ID”。

$uniqueId = uniqid(time()+$unique_user_variable, TRUE);
$this->session->set_userdata("my_session_id", md5($uniqueId));

因為“唯一用戶變量”可能會根據您的具體情況而有所不同,包括用戶IP,用戶名,用戶ID等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM