熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP session

2022-06-13   來源: PHP編程 

  本文將這些問題做一個簡單的匯總以便大家查閱

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

  
錯誤提示
Warning: open(F:/phpsessiondatasess_abfdaecfedcb O_RDWR) failed
分析及解決方法
出現這樣的錯誤語句一般是因為你的phpini中關於sessionsave_path一項沒有設置好解決的方法是將 sessionsave_path和sessioncookie_path 設置置為
session_save_path = c: emp
sessioncookie_path = c: emp
然後在c:目錄下建立一個temp目錄即可

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

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

  問題:我的程序在調用header函數之前沒有任何的輸出雖然我include了一個configphp文件但在configphp 文件中也沒有任何的輸出為什麼session還是會報出與問題同樣的錯誤呢是不是因為我在header之前用了PHP session_start()的緣故呢?

答: 或許你確實認真的檢查了你的php程序在引用header()之前確實也沒有任何的輸出並且在你的include文件中也沒有任何的輸出! 但是你是否用光標鍵在?>這個PHP代碼結束語句後移動檢查呢?那麼你會發現在?>這個後面有一個空行或幾個空格你刪除了這幾個空行或空 格那麼問題就解決了
此問題會出PHP更高版本沒有測試過

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

問:我用session_register()注冊了session變量可是當我用header或用javascript的重定向語句那麼 在一下頁面中我卻訪問不到session所注冊的變量值請問如何解決?
問題的程序片段
    session_start();  
    $ ok  = love you;  
    session_register(ok);  
    header("location : nextphp");  
    ?> 
    nextphp  
    session_start();  
    echo $ok;  
    ?> 
解決的方法
當你用header函數或windowlocation這樣的功能後你上一個頁面所注冊的session變量就會容易的丟失關於這個問題的原因 至今仍沒有一個詳細的回答
不過有解決的方法如下所示
header("Location: nextphp" "?" SID);
在跳轉到下一頁面的時候將session的當前id做為一個參數傳到後一個頁面

  session如何傳數組
    session_register
    (data);  
    $ data = array ();
方法是先注冊後賦值

  問題:我是不是可以用像$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];  
    ?>   
請參照此例程修改符合您自己的程序

  問題:session_unregister() 和 session_destroy() 有何區別?
session_unregister()函數主要作用是注消當前的一sion(譯自於phpnet)
例程
    if(isset($_COOKIE[session_name()])) {  
    session_start();  
    session_destroy();  
    unset($_COOKIE[session_name()]);  
    }
以上所述是一些新手經常遇到的PHP session_start()問題或許是詳述不清難免有誤所在請高手指點批評


From:http://tw.wingwit.com/Article/program/PHP/201311/21013.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.