PHP session_start()問題解疑(詳細介紹)_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:淺析PHP的ASCII碼轉換類
      本篇文章是對PHP的ASCII碼轉換類進行了詳細的分析介紹,需要的朋友參考下 復制代碼 代碼如下: class ascii { function decode($str) { preg_match_all( /(d{2,5})/, $str,$a); $a = $a[0]; foreach ($a as $dec) { if ($dec 128) { $utf .= chr($dec); } else if ($dec

      本文,將這些問題,做一個簡單的匯總,以便大家查閱。
      1.
      錯誤提示
      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()調到程序的第一行。

      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()函數之前,要用PHP session_start()開啟session的功能。

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

      5.問題:我的程序,在調用header函數之前沒有任何的輸出,雖然我include了一個config.php文件,但在config.php 文件中也沒有任何的輸出,為什么session還是會報出與問題1同樣的錯誤呢,是不是因為我在header之前用了PHP 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_start()問題。或許是詳述不清,難免有誤所在,請高手指點批評。

      分享:淺析PHP安裝擴展mcrypt以及相關依賴項(PHP安裝PECL擴展的方法)
      一:Mcrypt簡介 Mcrypt是PHP的一個擴展,完成了常用加密算法的封裝。其實該擴展是對 mcrypt標準類庫的封裝,mcrypt完成了相當多的常用加密算法,如DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 和 GOST加密算法,并且提供

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-07-07
      相關PHP教程