綠色資源網:您身邊最放心的安全下載站! 最新軟(ruǎn)件|熱門(mén)排行|軟件分類|軟件專題|廠商大全

綠色資(zī)源網

技術(shù)教程
您的位置:首頁網絡編程PHP編程 → 關於PHP編程中session的問(wèn)題集錦及解決方法

關於PHP編程中session的問題集錦及解決方(fāng)法

我要評論 2010/02/07 12:50:35 來源(yuán):綠(lǜ)色資源網 編輯:綠色資(zī)源站 [ ] 評論:0 點擊:373次

PHP的session功能,一直為許(xǔ)多的(de)初學者為(wéi)難。就連有些老手(shǒu),有時都被搞得莫名其妙。本文,將這些問題,做一個簡單(dān)的匯總,以便(biàn)大家查閱。

1、錯誤提示:

Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent

分析(xī)及(jí)解(jiě)決辦法

這一類問題,的原(yuán)因是你在程序中使用(yòng)session_start()時,之前已經有實際的html內容輸出了。或許你說(shuō),我沒有啊,我隻不過是echo或print一條消息了。很抱歉,你的echo或print語句所產生的輸出,就是實際的html內容輸出。解決(jué)此類(lèi)問題的(de)辦法是,將你的(de)session_start()調到程序的第一行。

2、錯誤提示

Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed

分析及解決方(fāng)法:

出現(xiàn)這樣的(de)錯(cuò)誤語句一般是因為你的php.ini中關於session.save_path一項沒有設置好,解(jiě)決的方法是將(jiāng)session.save_path和session.cookie_path 設(shè)置置為

session_save_path = c:\temp
session.cookie_path = \

然後在c:\目錄下建立一個temp目(mù)錄即可。

3、錯誤(wù)提示

Warning: Trying to destroy uninitialized session in

分析及(jí)解決方法出類這樣的提示,一般情況都是你直接調session_destroy()函數造成的。很多的朋友認(rèn)為session_destroy()函數可(kě)以獨立的運行,其(qí)實不(bú)然。解決的方法是在(zài)你調session_destroy()函數之前,要(yào)用session_start()開啟session的功(gōng)能。

4、問題:怎(zěn)麽獲得當前session的id值呢

最簡單的方法是(shì):

echo SID;

5、問題:

我的程序,在調用header函數之前沒有任何的輸出,雖然我(wǒ)include了一個config.php文件,但在config.php文件中也沒有任何的輸出,為什麽session還是會報出與問題1同(tóng)樣的錯誤呢,是不是(shì)因為(wéi)我在header之前用了session_start()的緣故呢?

答:或(huò)許你確實認真的檢查了你的(de)php程序,在(zài)引用header()之(zhī)前確實也沒有任何的輸出(chū),並且在你的include文件中也沒(méi)有任何的輸出!但是你(nǐ)是否用光標鍵在?>這個PHP代碼結束語句後移動檢(jiǎn)查呢?那麽你(nǐ)會發現在?>這個後麵,有一個空(kōng)行(háng)或幾個空格,你刪除了這幾個空(kōng)行或(huò)空格,那麽問題就解決了。

注:此問題,會出PHP4.1.2中,更高版本,沒有(yǒu)測試過。

6、問:用session做登錄主頁麵後(hòu),其(qí)它頁麵怎麽用session限製登錄(lù)?

答:最簡單的方(fāng)法是

session_start();
if(!session_registered('login') ││ $login != true)
{
echo "你沒有(yǒu)登陸";
exit;
}

7、問:我用session_register()注冊了session變量,可是當我(wǒ)用header或用(yòng)javascript的重定(dìng)向語句,那麽在一下頁麵中,我卻訪問不到session所注冊的變量值。請問如何解決?

問題的程序片段(duàn):

<?
session_start();
$ok = 'love you';
session_register('ok');
header("locations : next.php");
?>

next.php

<?
session_start();
echo $ok;
?>

解決的方法:

當你用header函數或window.locations這樣的功能後,你上(shàng)一個頁麵所注冊的session變量,就會容易的丟失,關(guān)於這個問題的原因(yīn),至今仍沒有一個(gè)詳細(xì)的回答。

不過有解決(jué)的方法。如下(xià)所示

header("locations: next.php" ."?" . SID);

在(zài)跳轉到下一頁麵的時候,將session的當前id做為一個(gè)參數,傳到後(hòu)一個頁麵。

8、session如何傳數組

session_register('data');
$data=array(1,2,3,4);

方法是先注冊後賦(fù)值

9、我是不是可以用(yòng)像(xiàng)$HTTP_GET_VARS['**']方(fāng)式來訪問session值呢(ne)?

回(huí)答:可以,你可以使用如下global數組來訪(fǎng)問session,以加強網頁的安全性

$HTTP_SESSION_VARS
$_SESSION

例(lì)程:

關鍵詞:PHP編程,session,解決方法

閱讀本文後您有什麽感想(xiǎng)? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡(chī)
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視(shì)
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡