作者 主題: 請教設定session_id() 的問題  (閱讀 9207 次)

0 會員 與 1 訪客 正在閱讀本文。

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
請教設定session_id() 的問題
« 於: 2012-07-18 11:21 »
為了測試方便,所以小弟寫了一個php頁面,功能是呈現目前的sessionID,並讓使用者可以直接指定新的sessionID 值並生效。
以下是該PHP 的內容

  1 <?php session_start(); ?>
  2 <title> change SessionID.php </title> <center><font size="6">
  3 <?
  4   If ($_GET["sID"]!="") { session_id($_GET["sID"]); }
  5   echo "Session ID will modify from:  ".$_GET["oID"]."<br>to:  ".$_GET["sID"];
  6 ?>
  7
  8 <br> <a href="index.php">Index</a> <br></font>
  9 <hr>
 10   <br> <br> <font size="6"> Session ID now is: <? echo session_id(); ?> </font> <br> <br> <hr> <br> <br>
 11   <form method="get" name="login" action="xid.php">
 12     newSessionID <input type="text" name="sID" size="26" maxlength="26" value="<? echo session_id() ?>" > <br>
 13     oldSessionID <input type="text" name="oID" size="26" maxlength="26" value="<? echo session_id() ?>" readonly> <br>
 14     <br> <br>
 15     <input type="submit">
 16     </form>

運行的結果是;這個頁面本身在user 輸入了新的sessionID 並提交之後,echo session_ID() 這段會輸出指定的sessionID 值。 所以我想設定是有成功的。
但如果我按index 返回到另外的頁面時,其他面頁所輸出的sessionID 值將會是user 設定前的數值(舊的sessionID)。
想請教一下,這個問題是怎麼回事嘞?是這個指定的方法不完整,還是server 端上需要有特別的設定配合才OK?

目前試過chrome/IE ,結果都相同。
還是有什麼東西是小弟需要再去了解的呢? 這次測試主要的目標就是有關session 的修改,只是小弟手上的環境只有php 所以用php 來測試。

謝謝各位前輩的指導。
Knowledge is Power

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
Re: 請教設定session_id() 的問題
« 回覆 #1 於: 2012-07-18 11:59 »
剛剛在chrome 底下,用開發者工具去看才發現PHPSESSID 的數值其實沒有被修改。
八成是方法或是觀念有問題吧,再繼續研究 >"<
Knowledge is Power

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5404
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 請教設定session_id() 的問題
« 回覆 #2 於: 2012-07-18 12:08 »
session_id() 要在 session_start() 之前執行才能設定 Session ID.

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
Re: 請教設定session_id() 的問題
« 回覆 #3 於: 2012-07-18 13:28 »
換了順序之後就可以了,謝謝 twu2 的指點 ^_^

去找session_id(), session_start() 這二個關鍵字。
結果是這樣的:
session_id()    用在session_start()之后
session_id(ID)用在session_start()之前
結果PHP 官網http://php.net/manual/en/function.session-id.php上就有交代了: >"<
If ID is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose.
Knowledge is Power

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
Re: 請教設定session_id() 的問題
« 回覆 #4 於: 2012-07-18 13:42 »
to TWU2 前輩:
小弟的理解是;因為session_id 是透過文件保存的方式進行的,所以在一開始的session_start() 就已經完成了對該文件的操作動作。
使得後續的設定只是針對本地端變數進行修改,但卻無法影響文檔中保存的數據。
因此要先在對保存文件做初始化操作(或讀取…)之前,就先去變更它,然後再去讀取變更後的數據才對。
不知道這樣的理解是否正確?
Knowledge is Power

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: 請教設定session_id() 的問題
« 回覆 #5 於: 2012-07-18 15:32 »
我的需求要不同終端使用同資料,所以我用

memcached   ;D
lifeIsFunWithPHP.