請問 我的頁面上的session_id 為什麼在不停的變化 不是固定的 我每重新整理一次它就變化一次 這個應該是固定的啊
是什麼問題導致的啊
回複討論(解決方案)
瀏覽器不支援cookie?
多半是 session.auto_start = 1
也不排除你的瀏覽器不支援 cookie
session.auto_start = 0
我的瀏覽器支援cookie
那隻能貼代碼說話啦
rss.php
session_start();
$_SESSION["name"] = "lifffffff4";
echo $_SESSION["name"];
echo "
";
echo session_id();
?>
先訪問上面的檔案 然後訪問下面的檔案 兩次的session_id 不一樣
index.php
session_start();
echo $_SESSION["name"];
echo session_id();
?>
rss.php加url跳轉過去
不要新開瀏覽器視窗
session_start();
$_SESSION["name"] = "lifffffff4";
echo $_SESSION["name"];
echo "
";
echo session_id();
echo "2222"
?>
一樣的效果
在每段代碼的後面加上
print_r($_COOKIE);
在每段代碼的後面加上
print_r($_COOKIE);
我列印了都是空數組
session_start();
$_SESSION["name"] = "lifffffff4";
echo $_SESSION["name"];
echo "
";
echo session_id();
echo "2222";
print_r($_COOKIE);
?>
session_start();
echo $_SESSION["name"];
echo session_id();
print_r($_COOKIE);
?>
那就是 cookie 不支援了,無論如何 $_COOKIE['PHPSESSID'] 都應該有的
你更改了 php.ini 中 session 相關的設定了嗎?
我沒有改 php.ini 現在要怎麼辦
現在要怎麼解決問題我也鬱悶了 怎麼沒有 phpsession 這個cookie
我的瀏覽器是支援cookie的 這個不用懷疑
弱弱的問一下,session_id 對程式而言有什麼特殊用途嗎?通常是操作$_SESSION就可以了吧
你用 setcookie 設一個 cookie 變數再試試是否能讀回來
同樣的代碼 放在別人的電腦上面都可以的 我的是怎麼回事啊
echo ini_get("session.use_cookies");//這個值多少
你用 setcookie 設一個 cookie 變數再試試是否能讀回來
這個可以 我試過了 沒有問題
注意開啟錯誤提示看有無錯誤資訊
error_reporting(E_ALL);ini_set('display_errors',true);
然後session相關的php.ini配置資訊貼出來,大家好幫你分析。
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
session.save_path = "d:/wamp/tmp"
; Whether to use cookies.
; http://php.net/session.use-cookies
session.use_cookies = 1
; http://php.net/session.cookie-secure
;session.cookie_secure =
; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combatting
; session hijacking when not specifying and managing your own session id. It is
; not the end all be all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1
; Name of the session (used as cookie name).
; http://php.net/session.name
session.name = PHPSESSID
; Initialize session on request startup.
; http://php.net/session.auto-start
session.auto_start = 0
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 1000
; The path for which the cookie is valid.
; http://php.net/session.cookie-path
session.cookie_path = /
; The domain for which the cookie is valid.
; http://php.net/session.cookie-domain
session.cookie_domain =80tao.dev
; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly =
; Handler used to serialize data. php is the standard serializer of PHP.
; http://php.net/session.serialize-handler
session.serialize_handler = php
; Defines the probability that the 'garbage collection' process is started
; on every session initialization. The probability is calculated by using
; gc_probability/gc_divisor. Where session.gc_probability is the numerator
; and gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request.
; Default Value: 1
; Development Value: 1
; Production Value: 1
; http://php.net/session.gc-probability
session.gc_probability = 1
; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using the following equation:
; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
; session.gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request. Increasing this value to 1000 will give you
; a 0.1% chance the gc will run on any give request. For high volume production servers,
; this is a more efficient approach.
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; http://php.net/session.gc-divisor
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm
; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, even when register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled. This feature
; introduces some serious security problems if not handled correctly. It's
; recommended that you do not use this feature on production servers. But you
; should enable this on development servers and enable the warning as well. If you
; do not enable the feature on development servers, you won't be warned when it's
; used and debugging errors caused by this can be difficult to track down.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-42
session.bug_compat_42 = On
; This setting controls whether or not you are warned by PHP when initializing a
; session value into the global space. session.bug_compat_42 must be enabled before
; these warnings can be issued by PHP. See the directive above for more information.
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/session.bug-compat-warn
session.bug_compat_warn = On
; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
; http://php.net/session.referer-check
session.referer_check =
; How many bytes to read from the file.
; http://php.net/session.entropy-length
session.entropy_length = 0
; Specified here to create the session id.
; http://php.net/session.entropy-file
;session.entropy_file = /dev/urandom
session.entropy_file =
; http://php.net/session.entropy-length
;session.entropy_length = 16
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; http://php.net/session.cache-limiter
session.cache_limiter = nocache
; Document expires after n minutes.
; http://php.net/session.cache-expire
session.cache_expire = 180
; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
; http://php.net/session.use-trans-sid
session.use_trans_sid = 0
; Select a hash function for use in generating session ids.
; Possible Values
; 0 (MD5 128 bits)
; 1 (SHA-1 160 bits)
; http://php.net/session.hash-function
session.hash_function = 0
; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
; 4 (4 bits: 0-9, a-f)
; 5 (5 bits: 0-9, a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5
; http://php.net/session.hash-bits-per-character
session.hash_bits_per_character = 5
; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden field with the info which is otherwise appended
; to URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
; http://php.net/url-rewriter.tags
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
session.cookie_domain =80tao.dev
這個值去掉吧,,你確認需要?
這個是我項目的一個 配置 有影響嗎
你說的去掉指的是什麼意思
session.cookie_domain =80tao.dev
把這個去掉就可以了
但是為什麼啊
session.cookie_domain =80tao.dev
把這個去掉就可以了
但是為什麼啊
看命名還不清楚啊,,限制域啦
那個是設定session對應的cookie在什麼域有效
你是本地測試嗎?是http://localhost這麼去訪問你的項目的嗎?是的話就去掉,如果是正式網站,你改成
#注意加的那個點,表明所有子域有效,包括wwwsession.cookie_domain = .80tao.dev
試下。
我填寫那個域為什麼就不行了啊 預設是空的 為什麼 給我解釋一下吧
那個是設定session對應的cookie在什麼域有效
你是本地測試嗎?是http://localhost這麼去訪問你的項目的嗎?是的話就去掉,如果是正式網站,你改成
PHP code
#注意加的那個點,表明所有子域有效,包括www
session.cookie_domain = .80tao.dev
試下。
這個很奇怪啊,我好像沒見過.dev的正式網域名稱,有嗎?
session.cookie_domain =80tao.dev
表示 session 只在 80tao.dev 域有效
所以需要也在這個域中測試你的代碼
引用 24 樓 的回複:
session.cookie_domain =80tao.dev
把這個去掉就可以了
但是為什麼啊
看命名還不清楚啊,,限制域啦
我是本地反問
我填寫那個域為什麼就不行了啊 預設是空的 為什麼 給我解釋一下吧
是我本地的虛擬機器主機 配置的虛擬網域名稱
引用 26 樓 的回複:
那個是設定session對應的cookie在什麼域有效
你是本地測試嗎?是http://localhost這麼去訪問你的項目的嗎?是的話就去掉,如果是正式網站,你改成
PHP code
#注意加的那個點,表明所有子域有效,包括www
session.cookie_domain = .80tao.dev
試下。
這個很奇怪啊,我好像沒……
怎麼一說還真是,有點奇葩了,我也沒見過dev的網域名稱。
這個很奇怪啊,我好像沒見過.dev的正式網域名稱,有嗎?
是我本地的虛擬機器主機 配置的虛擬網域名稱
好吧 表示我不知道
知道這個是個老帖了,可是我最近也遇到這個問題了。也是session_id不段變化,無法做購物車。然後我人為地用session_id("某個值'),可是竟然session不會到期了,無論怎樣關瀏覽器,上一個會話還是存在。希望有大神在這裡給我解答一下。謝謝了