PHP預定義變數(二)_PHP教程

來源:互聯網
上載者:User

PHP預定義變數(二)


四、Session變數($_SESSION):由PHP的SESSION函數產生的資料,都以超全域變數的方式,存放在$_SESSION變數中。
1、Session簡介
SESSION也稱為會話期,其是儲存在伺服器上的一小段檔案,用於儲存使用者的相關資訊。SESSION之間使用會話標識來區別,每一個SESSION都有唯一的一個標識。使用SESSION也可以完成類似於COOKIE一樣的工作。session會自動的對要設定的值進行encode與decode,因此session可以支援儲存任意資料類型,包括數組與對象等。
2、使用session_save_path()函數,設定session檔案的儲存目錄,如:
session_save_path("D:/phpnow/Apache2/temp");
//使用session_save_path()函數取得當前session儲存的目錄
echo session_save_path()."
";
註:PHP安裝完成後,由於SESSION的儲存路徑沒有設定,如果直接在指令碼中使用SESSION,會出現因為路徑不存在而產生的錯誤。使用session_save_path()函數,可以修改SESSION檔案的儲存路徑,但是僅限於當前指令碼。如果在PHP設定檔中,已經設定了有效SESSION檔案儲存目錄,那麼在指令碼中可以不使用此函數,此時所有的PHP程式都共用一個目錄存放SESSION檔案。
3、註冊SESSION變數

由於$_SESSION是一個數組,可以使用數組添加單元的方式,來為SESSION增加新變數。如:

session_start();//開啟SESSION,使用前,必須要先開啟

//使用數組添加單元的方法,增加SESSION變數

$_SESSION["username"] = "phpstuer";//儲存字串

$sessionArr = array("1","2","3");
$_SESSION["arr"] = $sessionArr; //儲存數組

NOTE:使用session_register函數也可以,註冊SESSION變數,但此函數從PHP5.3後就已棄用,所以這裡不再舉例。

4、訪問SESSION變數
由於SESSION變數,都是以單元的形式,儲存在$_SESSION全域變數中,所以使用訪問數組的方法,就可以訪問SESSION變數。SESSION變數註冊後,需要經過初始化後才能使用,這一點與COOKIE是不同的。初始化SESSION的函數是session_start()。如:
//使用session_start()函數開啟SESSION
session_start();
//遍曆$_SESSION數組
foreach($_SESSION as $key=>$value){
echo "$key=>$value
";
}
echo "單獨訪問SESSION變數:";
echo $_SESSION["username"]."
";
echo "單獨訪問SESSION變數 :";
echo $_SESSION["arr"][2];

注意:使用session_start()函數時,為防止出現錯誤提示資訊,在頁面最上面添加代碼。

5、刪除SESSION變數
在使用完SESSION變數後,需要對已經註冊的SESSION進行刪除,以減少對伺服器的資源使用。
session_start();
//刪除前:
echo "

";
print_r($_SESSION);
echo "
";
//使用unset()函數刪除一個$_SESSION變數
unset($_SESSION["username"]);
//使用session_unset()函數,刪除當前頁面的$_SESSION變數
//session_unset();
//使用session_destroy()函數,刪除當前頁面的$_SESSION變數並刪除SESSION檔案
//session_destroy();

//刪除後:
echo "

";
print_r($_SESSION);
echo "
";

五、Request變數($_REQUEST)作為超全域變數,$_REQUEST儲存了包括$_POST、$_GET、$_COOKIE變數在內的資料。通過訪問$_REQUEST,也可以實現$_POST、$_GET、$_COOKIE變數的功能。
雖然$_REQUEST在使用時比較方便,但是其提供的資料存在一定的危險性。比如一段程式使用$_REQUEST讀取$_COOKIE值時,那有心的訪客可以通過提供一個$_GET變數來類比$_COOKIE值,從而取得一定的存取權限。
使用執行個體:略。

六、伺服器變數($_SERVER)是由網路伺服器建立的數組,其內容包括頭資訊、路徑、指令碼位置等。不同的網路伺服器提供的資訊有所出入,下面執行個體是以Apache伺服器提供的作為標準。
echo "

";
print_r($_SERVER);
echo "
";
//解釋如下:
echo "顯示指令檔的相對路徑和檔案名稱:\"".$_SERVER["PHP_SELF"]."\"
";
echo "顯示伺服器使用的CGI指令碼規範:\"".$_SERVER["GATEWAY_INTERFACE"]."\"
";
echo "顯示當前運行指令碼所在伺服器的IP地址:\"".$_SERVER["SERVER_ADDR"]."\"
";
echo "顯示當前運行指令碼伺服器名稱:\"".$_SERVER["SERVER_NAME"]."\"
";
echo "顯示當前運行指令碼伺服器標識:\"".$_SERVER["SERVER_SOFTWARE"]."\"
";
echo "顯示請求頁面的通訊協定的名稱和版本:\"".$_SERVER["SERVER_PROTOCOL"]."\"
";
echo "顯示訪問頁面的要求方法:\"".$_SERVER["REQUEST_METHOD"]."\"
";
echo "顯示指令碼開始已耗用時間:\"".$_SERVER["REQUEST_TIME"]."\"
";
echo "顯示URL問號後的字串:\"".$_SERVER["QUERY_STRING"]."\"
";
echo "顯示當前運行指令碼的主目錄:\"".$_SERVER["DOCUMENT_ROOT"]."
";
echo "顯示當前Accept請求的頭資訊:\"".$_SERVER["HTTP_ACCEPT"]."\"
";
echo "顯示當前請求的字元資訊:\"".$_SERVER["HTTP_ACCEPT_CHARSET"]."\"
";
echo "顯示當前當前請求的Accept-Encoding頭資訊:\"".$_SERVER["HTTP_ACCEPT_ENCODING"]."\"
";
echo "顯示當前請求的Accept-Language頭資訊:\"".$_SERVER["HTTP_ACCEPT_LANGUAGE"]."\"
";
echo "顯示當前請求的Connection頭資訊:\"".$_SERVER["HTTP_CONNECTION"]."\"
";
echo "顯示當前請求的Host頭資訊:\"".$_SERVER["HTTP_HOST"]."\"
";
echo "顯示當前頁面的前一個頁面的URL地址:\"".$_SERVER["HTTP_REFERER"]."\"
";
echo "顯示當前請求的User-Agent的頭資訊:\"".$_SERVER["HTTP_USER_AGENT"]."\"
";
echo "顯示指令碼是否可以通過HTTPS協議進行訪問:\"".$_SERVER["HTTPS"]."\"
";
echo "顯示瀏覽當前頁面使用者的IP地址:\"".$_SERVER["REMOTE_ADDR"]."\"
";
echo "顯示瀏覽當前頁面使用者的主機名稱:\"".$_SERVER["REMOTE_HOST"]."\"
";
echo "顯示使用者串連到伺服器時所使用的連接埠:\"".$_SERVER["REMOTE_PORT"]."\"
";
echo "顯示當前執行指令碼的絕對路徑名:\"".$_SERVER["SCRIPT_FILENAME"]."\"
";
echo "顯示Apache設定檔中的SERVER_ADMIN參數設定情況:\"".$_SERVER["SERVER_ADMIN"]."\"
";
echo "顯示網路伺服器使用的連接埠,預設為\"80\":\"".$_SERVER["SERVER_PORT"]."\"
";
echo "顯示伺服器版本和虛擬機器主機名的字串:\"".$_SERVER["SERVER_SIGNATURE"]."\"
";
echo "顯示指令碼在檔案系統中的基本路徑:\"".$_SERVER["PATH_TRANSLATED"]."\"
";
echo "顯示當前指令碼的路徑:\"".$_SERVER["SCRIPT_NAME"]."\"
";
echo "顯示訪問當前頁面的URI:\"".$_SERVER["REQUEST_URI"]."\"
";
七、環境變數($_ENV)是預定義的一個數組,記錄著系統路徑等資訊。
echo "
";
print_r($_SERVER);
echo "
";
//單獨訪問環境變數的數群組成員,可以通過“$_ENV[‘成員變數名’]”的方式實現,如:
echo "伺服器作業系統為:".$_ENV["OS"]."
";
八、 HTTP檔案上傳變數($_FILES):由HTML表單產生的檔案上傳變數,以數組的形式記錄了上傳檔案的詳細資料,其數群組成員包括上傳的檔案名稱:name;檔案類型:type;臨時檔案名稱:tmp_name;錯誤資訊代碼 :error;檔案大小:size。下面介紹使用HTML表單,組建檔案上傳變數的方法,
要使表單產生檔案變數,要滿足三個條件:
1、HTML表單要使用POST方式傳遞資料。
2、表單的“enctype”參數要設定為“multipart/form-data” 。
3、表單中包含一個檔案選擇框。
通過$_FILES變數擷取上傳檔案相關資訊後,就可以配合其他檔案函數實現檔案的上傳。
上傳檔案及$_FILES的用法執行個體:待整理
九、$GLOBALS變數以數組的形式,記錄了所有已經定義的全域變數,而變數名就是這個數組的索引。即然$GLOBALS記錄著所有的全域變數,那麼理所當然的也可以訪問全域變數裡的資訊。下面介紹使用$GLOBALS訪問其他預定義變數的方法,如:
session_start();
$_SESSION["school"] = "大學";
echo $_SESSION["school"]."
"; //輸出 大學
//使用$GLOBALS顯示當前作業系統版本
echo $GLOBALS["_ENV"]["OS"]."
";
//使用$GLOBALS訪問SESSION值
echo $GLOBALS["_SESSION"]["school"]."
"; //輸出大學

echo "

";
print_r($GLOBALS);
echo "
";



http://www.bkjia.com/PHPjc/905598.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/905598.htmlTechArticlePHP預定義變數(二) 四、Session變數($_SESSION):由PHP的SESSION函數產生的資料,都以超全域變數的方式,存放在$_SESSION變數中。 1、Session簡介...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.