亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

session問題集錦

2024-07-21 02:04:11
字體:
來源:轉載
供稿:網友

  對于PHP的session功能,始終找不到合適的答案,尤其是一些錯誤,還有一些沒有錯誤的結果,最可怕的就是后者,一直為許多的初學者為難。就連有些老手,有時都被搞得莫名其妙。本文,將這些問題,做一個簡單的匯總,以便大家查閱。

1.
錯誤提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解決辦法
這一類問題,的原因是你在程序中使用session_start()時,之前已經有實際的html內容輸出了?;蛟S你說,我沒有啊,我只不過是echo或print一條消息了。很抱歉,你的echo或print語句所產生的輸出,就是實際的html內容輸出。解決此類問題的辦法是,將你的session_start()調到程序的第一行。

2.
錯誤提示
Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解決方法
出現這樣的錯誤語句一般是因為你的php.ini中關于session.save_path一項沒有設置好,解決的方法是將session.save_path和session.cookie_path 設置置為
session_save_path = c: emp
session.cookie_path = c: emp
然后在c:目錄下建立一個temp目錄,即可

3.
錯誤提示
Warning: Trying to destroy uninitialized session in
分析及解決方法
出類這樣的提示,一般情況都是你直接調session_destroy()函數造成的。很多的朋友認為session_destroy()函數可以獨立的運行,其實不然。解決的方法是在你調session_destroy()函數之前,要用session_start()開啟session的功能。

4.問題:怎么獲得當前session的id值呢?
最簡單的方法是:
echo SID;
你會發現的。

5.問題:我的程序,在調用header函數之前沒有任何的輸出,雖然我include了一個config.php文件,但在config.php文件中也沒有任何的輸出,為什么session還是會報出與問題1同樣的錯誤呢,是不是因為我在header之前用了session_start()的緣故呢?
答:或許你確實認真的檢查了你的php程序,在引用header()之前確實也沒有任何的輸出,并且在你的include文件中也沒有任何的輸出!但是你是否用光標鍵在?>這個PHP代碼結束語句后移動檢查呢?那么你會發現在?>這個后面,有一個空行或幾個空格,你刪除了這幾個空行或空格,那么問題就解決了。
注:此問題,會出PHP4.1.2中,更高版本,沒有測試過。

6.問:用session做登錄主頁面后,其它頁面怎么用session限制登錄。。。
答:最簡單的方法是
session_start();
if(!session_registered('login') ││ $login != true) {
echo "你沒有登陸";
exit;
}

7.問:我用session_register()注冊了session變量,可是當我用header或用javascript的重定向語句,那么在一下頁面中,我卻訪問不到session所注冊的變量值。請問如何解決?
問題的程序片段:
session_start();
$ok = 'love you';
session_register('ok');
header("location : next.php");
?>

next.php
session_start();
echo $ok;
?>

解決的方法:
當你用header函數或window.location這樣的功能后,你上一個頁面所注冊的session變量,就會容易的丟失,關于這個問題的原因,至今仍沒有一個詳細的回答。
不過有解決的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳轉到下一頁面的時候,將session的當前id做為一個參數,傳到后一個頁面。

8.session如何傳數組
session_register('data');
$data=array(1,2,3,4);

方法是先注冊后賦值

9.問題9:我是不是可以用像$HTTP_GET_VARS['**']方式來訪問session值呢?

回答:可以,你可以使用如下global數組來訪問session,以加強網頁的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
session_start();
$username = 'stangly.wrong';
session_register('username');

echo $HTTP_SESSION_VARS['username'];
echo '
';
echo $_SESSION['username'];
?>
請參照此例程修改符合您自己的程序。

問題10:session_unregister() 和 session_destroy() 有何區別?
session_unregister()函數主要作用是注消當前的一sion.(譯自于php.net)

例程:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}


以上,所述是一些新手經常遇到的問題。或許是詳述不清,難免有誤所在,請高手指點批評。

 

php中的session的配置

今天調試程序遇到了session的設置問題,網上這篇文章比較好,共拿來學習,并供大家參考。
轉載自旅行論壇 http://www/lvxing.net


首先打開php.ini文件,找到session的部分:(分號后面的是注釋)

[Session]
; Handler used to store/retrieve data.
session.save_handler = files   ;    這個是session的方式,默認的files就可以了,代表用文件儲存

; Argument passed to save_handler.  In the case of files, this is the path  where data files are stored.
session.save_path = /tmp ;      這個是session的保存路徑,比如你是c盤,那么默認就是c:/tmp, 所以如果出現“Warning: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR)  failed”這樣子的錯誤,你可以修改這個路徑,或者在根目錄下面建立一個tmp的文件夾

; Whether to use cookies.
session.use_cookies = 1 ;    sessionid的傳遞方式,默認是cookie,推薦使用

; Name of the session (used as cookie name).
session.name = PHPSESSID ;    sessionid的名稱,保存在cookie里面的,要避免同名

; Initialize session on request startup.
session.auto_start = 0 ;    是否自動啟動session,默認為不是,不需要修改

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0 ;    sessionid的cookie生存時間,0代表知道瀏覽器關閉

; The path for which the cookie is valid.
session.cookie_path = / ;    sessionid的cookie路徑,不需要修改

; The domain for which the cookie is valid.
session.cookie_domain = ;   
;sessionid的cookie域名,不需要修改

; Handler used to serialize data.  php is the standard serializer of PHP.
session.serialize_handler = php ;    保存data的默認文件名后綴,不需要修改

; Percentual probability that the 'garbage collection' process is started  on every session initialization.
session.gc_probability = 1

; After this number of seconds, stored data will be seen as 'garbage' and  cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440 ;    session文件的保存時間

; Check HTTP Referer to invalidate externally stored URLs containing ids.
session.referer_check = ; How many bytes to read from the file.
session.entropy_length = 0 ; Specified here to create the session id.
session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom

; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache ; Document expires after n minutes.
session.cache_expire = 180 ; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" ======================================================================
session 的生命周期是多長  

1 瀏覽器結束時其生命周期也同時結束,但是檔案仍然存在于 /tmp/(sess_???)
2 下次重新開瀏覽器時會重新分配 sessionID,如果你使用 session_id() 把以前的 ID 帶回來,
則會去讀取殘存在 /tmp 處的 sess_???, 取回你之前所有已經設定的參數
3 可以在 php.ini 里修改 session 檔案殘存的時間 session.gc_maxlifetime = 1440 ; after this number of seconds, stored
; data will be seen as 'garbage' and
; cleaned up by the gc process 默認是 1440 秒,24分鐘
=========================================================================

使用無限生命期Session的方法
   在PHP4.0中加入了對Session的支持,方便了我們很多程序,比如購物車等等!
   在很多論壇中,Session也用于處理用戶的登陸,記錄下用戶名和密碼,使得用戶不必每次都輸入自己的用戶名和密碼!但是一般的Session的生命期有限,如果用戶關閉了瀏覽器,就不能保存Session的變量了!那么怎么樣可以實現Session的永久生命期呢?
   大家知道,Session儲存在服務器端,根據客戶端提供的SessionID來得到這個用戶的文件,然后讀取文件,取得變量的值,SessionID可以使用客戶端的Cookie或者Http1.1協議的Query_String(就是訪問的URL的“?”后面的部分)來傳送給服務器,然后服務器讀取Session的目錄……
   
   要實現Session的永久生命期,首先需要了解一下php.ini關于Session的相關設置(打開php.ini文件,在“[Session]”部分):
   1、session.use_cookies:默認的值是“1”,代表SessionID使用Cookie來傳遞,反之就是使用Query_String來傳遞;
   2、session.name:這個就是SessionID儲存的變量名稱,可能是Cookie,也可能是Query_String來傳遞,默認值“PHPSESSID”;
   3、session.cookie_lifetime:這個代表SessionID在客戶端Cookie儲存的時間,默認是0,代表瀏覽器一關閉SessionID就作廢……就是因為這個所以Session不能永久使用!
   4、session.gc_maxlifetime:這個是Session數據在服務器端儲存的時間,如果超過這個時間,那么Session數據就自動刪除!
   還有很多的設置,不過和本文相關的就是這些了,下面開始講使用永久Session的原理和步驟。
   
   前面說過,服務器通過SessionID來讀取Session的數據,但是一般瀏覽器傳送的SessionID在瀏覽器關閉后就沒有了,那么我們只需要人為的設置SessionID并且保存下來,不就可以……
   如果你擁有服務器的操作權限,那么設置這個非常非常的簡單,只是需要進行如下的步驟:
   1、把“session.use_cookies”設置為1,打開Cookie儲存SessionID,不過默認就是1,一般不用修改;
   2、把“session.cookie_lifetime”改為正無窮(當然沒有正無窮的參數,不過999999999和正無窮也沒有什么區別);
   3、把“session.gc_maxlifetime”設置為和“session.cookie_lifetime”一樣的時間;
   設置完畢后,打開編輯器,輸入如下的代碼:
------------------------------------------------------------------------------------

<?php  session_start();
session_register(&apos;count&apos;);
$count++;
echo $count;
?>
------------------------------------------------------------------------------------
   然后保存為“session_check.php”,用瀏覽器打開“session_check.php”,看看顯示的是不是“1”,再關閉瀏覽器,然后再打開瀏覽器訪問“session_check.php”,如果顯示“2”,那么恭喜了,你已經成功;如果失敗的話,請檢查你前面的設置。
   
   但是如果你沒有服務器的操作權限,那就比較麻煩了,你需要通過PHP程序改寫SessionID來實現永久的Session數據保存。查查php.net的函數手冊,可以見到有“session_id”這個函數:如果沒有設置參數,那么將返回當前的SessionID,如果設置了參數,就會將當前的SessionID設置為給出的值……
   只要利用永久性的Cookie加上“session_id”函數,就可以實現永久Session數據保存了!
   但是為了方便,我們需要知道服務器設置的“session.name”,但是一般用戶都沒有權限查看服務器的php.ini設置,不過PHP提供了一個非常好的函數“phpinfo”,利用這個可以查看幾乎所有的PHP信息!
------------------------------------------------------------------------------------


------------------------------------------------------------------------------------
   打開編輯器,輸入上面的代碼,然后在瀏覽器中運行這個程序,會見到PHP的相關信息(如圖1所示)。其中有一項“session.name”的參數(圖中已經標出),這個就是我們需要的服務器“session.name”,一般是“PHPSESSID”。
   記下了SessionID的名稱后,我們就可以實現永久的Session數據儲存了!
   打開編輯器,輸入下面的代碼:
------------------------------------------------------------------------------------
session_start();  // 啟動Session
session_register(&apos;count&apos;);  // 注冊Session變量Count
if(isset($PHPSESSID)) {
   session_id($PHPSESSID);
}  // 如果設置了$PHPSESSID,就將SessionID賦值為$PHPSESSID,否則生成SessionID
$PHPSESSID = session_id();  // 取得當前的SessionID
$count++;  // 變量count加1
setcookie(&apos;PHPSESSID&apos;, $PHPSESSID, time()+3156000);  // 儲存SessionID到Cookie中
echo $count;  // 顯示Session變量count的值
?>
------------------------------------------------------------------------------------ 

 保存之后,利用和剛才擁有服務器權限時候的檢測一樣的方法,檢測是否成功的保存了SessionID。
后記:
   其實真正的永久儲存是不可能的,因為Cookie的保存時間有限,而服務器的空間也有限……
但是對于一些需要保存時間比較長的站點,以上方法就已經足夠了!關于Session的其他應用,可
以參見zphp.com的文章。
   最后,筆者的調試環境:Windows98DigExt(SE)+Apache+PHP 4.04。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人午夜影院| 国产精品羞羞答答| 久热精品视频在线免费观看| 亚洲欧洲第一视频| 国产精品久久久久7777婷婷| 国产美女精品视频免费观看| 国产精品www色诱视频| 欧美在线免费视频| 88国产精品欧美一区二区三区| 亚洲精品美女久久| 国产精品揄拍500视频| 国产精品欧美日韩久久| 欧美亚洲成人网| 欧美在线视频一区| 亚洲少妇中文在线| 日韩美女av在线| 久久成人这里只有精品| 国产精品久久久久久久7电影| 亚洲高清免费观看高清完整版| 精品国产福利视频| 91精品国产电影| 综合网日日天干夜夜久久| 国产日产久久高清欧美一区| 性欧美xxxx| 国产成人精品午夜| 亚洲视频网站在线观看| 日本亚洲欧洲色α| 国产欧美日韩中文| 国产一区二区欧美日韩| 国产精彩精品视频| 国内成人精品一区| 日韩在线观看网站| 亚洲精品91美女久久久久久久| 欧美一乱一性一交一视频| 久久精品美女视频网站| 精品亚洲一区二区三区在线观看| 亚洲精品国精品久久99热| 午夜精品99久久免费| 亚洲色图35p| 久久久久久久网站| 中文字幕欧美在线| 欧美另类暴力丝袜| 黄网站色欧美视频| 在线精品播放av| 2019国产精品自在线拍国产不卡| 日韩av电影手机在线| 午夜精品一区二区三区av| 国产精品户外野外| 日本伊人精品一区二区三区介绍| 在线播放国产一区二区三区| 国产成人精品日本亚洲专区61| 九九九久久国产免费| 久久久亚洲福利精品午夜| 国内精品久久久久久| 亚洲一区999| 日韩高清电影免费观看完整版| 亚洲欧美日韩高清| 日韩av三级在线观看| 亚洲人成在线电影| 亚洲护士老师的毛茸茸最新章节| 久久精品精品电影网| 久久99热这里只有精品国产| 欧美多人爱爱视频网站| 国产免费一区二区三区在线能观看| 成人中心免费视频| 91精品视频免费观看| 精品小视频在线| 国产精品a久久久久久| 国产成人精品久久亚洲高清不卡| 日韩在线观看免费高清完整版| 5566成人精品视频免费| 国产美女久久精品香蕉69| 国产区精品在线观看| 欧美电影在线观看高清| 夜夜嗨av色一区二区不卡| 欧美网站在线观看| 国产成人啪精品视频免费网| 国产精品香蕉av| 国产亚洲人成网站在线观看| 91久久精品久久国产性色也91| 国产亚洲成av人片在线观看桃| 91成人在线观看国产| 日韩成人在线视频观看| 欧美色图在线视频| 亚洲免费电影在线观看| 69久久夜色精品国产69乱青草| 日韩中文字幕不卡视频| 日韩av电影手机在线观看| 国外成人在线视频| 狠狠躁天天躁日日躁欧美| 亚洲国产另类 国产精品国产免费| 亚洲精选在线观看| 亚洲午夜激情免费视频| 色婷婷亚洲mv天堂mv在影片| 亚洲乱码国产乱码精品精天堂| 欧美孕妇毛茸茸xxxx| 2019亚洲日韩新视频| 亚洲影院在线看| 国产欧美亚洲视频| 精品在线小视频| 亚洲精品日韩av| 亚洲女同精品视频| 久久久精品久久| 国产成人av在线| 伊人伊成久久人综合网站| 中文字幕国产精品| 欧美富婆性猛交| 国产69精品99久久久久久宅男| 国产福利视频一区| 色妞欧美日韩在线| 亚洲成人精品视频| 国产精品欧美激情在线播放| 国产经典一区二区| 91丝袜美腿美女视频网站| 国产suv精品一区二区三区88区| 国产精品91久久| 亚州欧美日韩中文视频| 亚洲精品第一国产综合精品| 国产精品日韩欧美综合| 亚洲免费av片| 午夜剧场成人观在线视频免费观看| 国产精品最新在线观看| 中文字幕在线视频日韩| 国产在线观看精品| 亚洲美女视频网站| 一区二区三区视频免费在线观看| 亚洲欧美在线一区二区| 久久精品成人欧美大片| 亚洲国产日韩欧美在线99| 久久网福利资源网站| 欧美日韩国内自拍| 国产精品劲爆视频| 精品国产精品三级精品av网址| 久久99国产精品自在自在app| 亚洲欧洲午夜一线一品| 国产亚洲精品成人av久久ww| 狠狠综合久久av一区二区小说| 91在线观看欧美日韩| 精品性高朝久久久久久久| 亚洲国语精品自产拍在线观看| 96国产粉嫩美女| 欧美特级www| 狠狠色香婷婷久久亚洲精品| 亚洲成色777777女色窝| 97精品久久久中文字幕免费| 亚洲第一天堂无码专区| 国产精品免费视频xxxx| 庆余年2免费日韩剧观看大牛| 亚洲天堂网站在线观看视频| 欧美黑人国产人伦爽爽爽| 久久99精品视频一区97| 日韩欧美极品在线观看| 97国产精品视频人人做人人爱| 国产精品嫩草视频| 青青精品视频播放| 欧美精品少妇videofree| 国产日韩欧美黄色| 日韩女优在线播放| 国语自产精品视频在免费| 黑人狂躁日本妞一区二区三区| 国产福利视频一区二区| 国产精品青青在线观看爽香蕉| 97超视频免费观看| 欧美日韩午夜视频在线观看|