PHP5薄荷教程[12]對(duì)頭信息、表單、cookie和session的處理 - 薄荷腦的專...
PHP5薄荷教程[12]對(duì)頭信息、表單、cookie和session的處理 收藏
一、頭信息
頭信息一般指HTML中的meta標(biāo)簽,添加所使用的函數(shù)是:header(string string)。其中string是所要添加的頭信息鍵值。比較常用的有:
header("content-type:text/html;charset=gb2312");
相當(dāng)于<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
header("refresh:3;url=http://zjerryj.yculblog.com");
相當(dāng)于<meta http-equiv="refresh" content="3;url=http://zjerryj.yculblog.com"/>
header("location:http://zjerryj.yculblog.com");
這個(gè)頭信息比較特殊,沒(méi)有對(duì)應(yīng)的HTML,但是可以用上面的header("refresh:0;url=...")來(lái)代替。
另外必須注意的是,header()必須在未輸出任何數(shù)據(jù)前使用,否則將無(wú)效。下面的setcookie()、session_start()等都有這種特性。有一種方法是使用輸出緩存,我將在另外一個(gè)章節(jié)介紹。
二、表單
在預(yù)定義變量一節(jié)中已經(jīng)介紹過(guò)了$_GET、$_POST和$_REQUEST數(shù)組。其中$_GET數(shù)組包含通過(guò)GET方法傳送上來(lái)的數(shù)據(jù),$_POST則包含用POST方法傳送上來(lái)的數(shù)據(jù),如果你不確定用戶是通過(guò)哪種方式上傳數(shù)據(jù)或同時(shí)使用了這兩種方式,那么就可以使用$_REQUEST數(shù)組。如:
index.php:
<html><head><title>GET&POST&REQUEST</title></head>
<body>
<?php
if(isset($_GET['varGET'],$_POST['varPOST'])){
print "varGET={$_GET['varGET']}<br/>varPOST={$_POST['varPOST']}<br/>";
print "From \$_REQUEST:varGET={$_REQUEST['varGET']} varPOST={$_REQUEST['varPOST']}";
}
?>
<form name="form1" method="post" action="index.php?varGET=php5">
<input type="text" name="varPOST"/>
<input type="submit" value="Submit"/>
</form></body></html>
三、Cookies
1、讀取cookie:使用預(yù)定義變量$_COOKIE數(shù)組或$_REQUEST數(shù)組。
2、設(shè)置cookie:
1)bool setcookie(string name [,string value [,int expire]])
name和value分別是cookie的名稱和值。
expire指定cookie的過(guò)期時(shí)間,它是一個(gè)Unix時(shí)間戳,即從Unix紀(jì)元開(kāi)始的秒數(shù),通常用time()函數(shù)再加上秒數(shù)來(lái)設(shè)定cookie的失效期?;蛘哂胢ktime()來(lái)實(shí)現(xiàn)。如把該值設(shè)定為time()+60*60*24的話,則表示該cookie將在1天后失效。如果不設(shè)置,那么該cookie將在會(huì)話結(jié)束(一般是關(guān)閉瀏覽器后)失效。
另外要注意的是,該函數(shù)和header()類似,必須在未輸出任何數(shù)據(jù)前使用,如在PHP開(kāi)頭使用,否則將無(wú)效。
<?php
$curTime=time();
setcookie("lastvisit",$curTime,$curTime+60);
print "已經(jīng)設(shè)置了cookie:lastvisit=$curTime 該cookie將在1分鐘后失效<br/>";
if(isset($_COOKIE['lastvisit'])){
print "上次設(shè)置的cookie:lastvisit={$_COOKIE['lastvisit']}";
}
?>
2)bool setrawcookie(string name [,string value [,int expire]])
setrawcookie()和setcookie()完全相同,只是setrawcookie在向?yàn)g覽器發(fā)送cookie時(shí)不會(huì)自動(dòng)進(jìn)行URL編碼。
四、Sessions
session是基于cookie的,但是僅針對(duì)單一客戶,且數(shù)據(jù)經(jīng)過(guò)加密。session的有效期是瀏覽器關(guān)閉前。
在默認(rèn)設(shè)置下,session不會(huì)被啟用,所以在使用session前必須使用session_start()來(lái)啟動(dòng)session。該函數(shù)和header()一樣,必須在未輸出任何數(shù)據(jù)前使用。訪問(wèn)session時(shí)使用的是$_SESSION數(shù)組,該數(shù)組可讀可寫(xiě),并可直接創(chuàng)建空值。
<?php
session_start();
$curTime=time();
if(isset($_SESSION['lastvisit'])){
print "上次設(shè)置的session:lastvisit={$_SESSION['lastvisit']}<br/>";
}
$_SESSION['lastvisit']=$curTime;
print "已經(jīng)設(shè)置了session:lastvisit=$curTime"
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。