php 的session突然怪怪的

edited 十月 2013 in PHP新手區
我的 PHP Version 5.1.1, OS: XP, Server: Apache 2.0.55

不知是否php.ini中改到了什麼,原來都很正常.最近裝XTC時發現SESSION功能似乎失效..

我用以下code做測試,結果永遠是: $_SESSION 尚未註冊,現將自動設定成hello
1 <?php   
2 session_start();   
3 if(!isset($_SESSION['test'])){     
4   echo '$_SESSION[\'test\'] 尚未註冊,現將自動設定成hello';   
5   $_SESSION['test']='hello';   
6 }   
7 else {   
8   echo '$_SESSION[\'test\'] 已經註冊,其值為: '.$_SESSION['test'];   
9 }   
10 ?>   
 開新視窗(view plain) | 列印(print) | 複製(copy to clipboard) | ? 
<?php
session_start();
if(!isset($_SESSION['test'])){  
  echo '$_SESSION[\'test\'] 尚未註冊,現將自動設定成hello';
  $_SESSION['test']='hello';
}
else {
  echo '$_SESSION[\'test\'] 已經註冊,其值為: '.$_SESSION['test'];
}
?>


以下列出執行phpinfo()之結果:
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain 213.104.176.200 213.104.176.200
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path c:\Temp c:\Temp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1604

評論

  • edited 五月 2006
    也許可以檢查一下 session.save_path 指定的位置
  • edited 五月 2006
    多謝幫忙...

    問題出在php.ini中的:
    session.cookie_domain = 213.104.176.200
    我將值改為 domain name 就 OK 了
    ...只是,為何當設成實際之 IP 值時會有問題呢 ??

    另外,容我附帶一問:
    當有多個 domain name 要設時又該如何做?
    (我試過以空格隔開,但似乎是不行的)
  • edited 五月 2006
    b90220208 寫道:

    問題出在php.ini中的:
    session.cookie_domain = 213.104.176.200
    我將值改為 domain name 就 OK 了
    ...只是,為何當設成實際之 IP 值時會有問題呢 ??
    我沒有用過 PHP 的 session, 估計 session.cookie_domain 是設定 cookie 中的 domain, Browsers 靠這個 domain 來決定這個 cookie 應該送到甚麼 server, 所以把 cookie 的 domain 寫成 213.104.176.200, browser 自然不會送到你的網頁 (e.g. www.your-domain.com), 兩個不 match 嘛.

    若果你有數個 domain, 例如 forum.my-domain.com, www.my-domain.com, wiki.my-domain.com 之類, 那麼把 cookie 的 domain 寫成 ".my-domain.com" 便可以了。

    若果全部 domain 的名稱都不同, 應該沒有辦法吧, 因為 browser 一般會限制 server A 的 cookie 不能送給 server B, 那是基於保安的原因.
  • edited 五月 2006
    多謝各位的幫忙...
    (原來 Browsers 僅對 cookie 中的 domain 指定的 domain name 或 ip 與 user 連往的網站做比對而已, 而不求解析)
Sign In or Register to comment.