第7单元 CooKie和Session、Header
目标内容(第18-20章)
1、CooKie和Session原理与应用–计数器2
2、Header()函数与认证
3、正则表达
第7单元 CooKie和Session、Header
目标内容(第18-20章)
1、CooKie和Session原理与应用--计数器2
2、Header()函数与认证
3、正则表达
第18章 CooKie和Session
18.1 CooKie
1.使用文本记录数据,服务器负担重,cookie就是将少量数据存储在远程用户的计算机中。
2.安全性的原因,需要检查浏览器设置:工具->internet选项->隐私中选取。
18.2 存取 CooKie
boolean Setcookie(变量名[,存入值[,有效时间[,路径[,领域[,安全性]]]])
例1 setcookie("A","10");
setcookie("B","20",time()+3600);
setcookie("C","Hello",time()+7200,"./test/",".abc.def.cn",1);安全性设置1时使用https安全连接,否则设置0
范例 18-1
setcookie("A","10");
setcookie("B","Hello, I am B.");
echo "我已设置 Cookie ";
?>
范例 18-2 使用$_COOKIE数组来获取外部变量
echo "A = ". $_COOKIE[A] . "
";
echo "B = ". $_COOKIE[B] . "
";
echo "取出 Cookie";
?>
18.3 CooKie有效时间
1. time()+秒数
intmktime(时,分,秒,月,日,年) 例:mktime(0,0,0,12,31,2010) 在2010年12月31日前有效
范例 18-3
$nowcnt=$_COOKIE[cnt];
$nowcnt++;
setcookie("cnt",$nowcnt,time()+60);
echo "你是第 $nowcnt 次光临本站";
?>
2. setcookie()使用的注意事项。必须 在输出(echo,print)及
之前,有效的Cookie必须等到下次读取网页!setcookie("A","",time()-60);设置失效
范例 18-4
$nowcnt=$_COOKIE[cnt];
$nowcnt++;
setcookie("cnt",$nowcnt,time()+60);
if ($nowcnt>=5) setcookie("cnt",$nowcnt,time()-60);
echo "你是第 $nowcnt 次光临本站";
?>
18.4 Session
允许不定数量的变量存储在服务器端,打开一个浏览器连接到服务器浏览网页的操作就是一个简单的Session,不同的Session有唯一的编号ID。
产生ID的两种方式:Cookie和URL传递
18.5 存取Session
1.启动Session:
1)在php.ini中设置参数Session.auto_start为enable
2)session_start()函数
2.变量注册Session_register("user")
变量注销Session_unregister("count")
Session变量要注册后使用,属于外部变量,除非在php.ini中register_globals设置enable,否则用数组$_SESSION['变量名']来操作。
范例 18-5
session_start();
session_register("A");
session_register("B");
$_SESSION['A']=10;
$_SESSION['B']="Hello My ";
?>
echo "Session ID = ".session_id()."
";
echo "运算前
";
echo "A = ".$_SESSION['A']."
";
echo "B = ".$_SESSION['B']."
";
$_SESSION['A']++;
$_SESSION['B'].="Friend.";
echo "运算后
";
echo "A = ".$_SESSION['A']."
";
echo "B = ".$_SESSION['B'];
?>
范例 18-6 如何使不同浏览器共用Session变量
session_start();
if (!session_is_registered('A')) {
session_register('A');
$_SESSION['A'] = 1;
}else{
$_SESSION['A']++;
}
echo "Session id = ".session_id()."
";
echo "变量值 = ".$_SESSION['A']."
";
echo "开新窗口";
?>
范例 18-7
第19章 HEADER
Header()函数
格式: int header (string 标头声明文字 [,bool 置换[,int http 响应码]])
标头声明文字Locaiton Refresh Content-type Expires Last-Modified
1.Location
header("Location:http//绝对网络地址");
范例19-1 (p228)
header("Location: http://www.cepp.com.cn");
exit;
?>
范例19-2 (p229)
if (empty($_GET['choose'])):
?>
您喜欢浏览的运动相关信息是:
else:
$hostname=$_SERVER['HTTP_HOST'];
$abs_path=dirname($_SERVER['PHP_SELF']);
$filename=$_GET['choose'].".htm";
header("Location: http://".$hostname.$abs_path."/".$filename);
exit;
endif
?>
2.Refresh
格式:Refresh("Refresh:N;URL=网址")
范例19-4
header("Refresh: 5 ; URL=http://www.cepp.com.cn");
?>
今日注意事项如下:
1. XXXXXXX
2. XXXXXXX
3. XXXXXXX
5秒后将自动进入首页!
3.Content-type
格式:Content-type="Content-Type:" media-type
用法:
Header("Content-Type: test/html;charset=gb2312") 设置网页内容为gb2312
Header("Content-Type: image/gif") 设置网页内容为gif格式图片
Header("Content-Type: application/pdf") 设置网页内容为pdf文件
4.Expires
CacheControl设置网页的有效时间,解决代理服务器与远程服务器速度差问题
1)Expires设置过期时间
header("Expires: Fri,31 oct 2008 18:00:00 GMT");
2)修改有效日期
header("Last-Modified: Wed,01 Jan 2003 12:00:00 GMT");
header("Last-Modified:" .gmdate("D,d M Y H:i:s"."GMT");目前时间
3)header("Cache-Control: no-store, no-cache,must-revalidate");
Date="Date:" HTTP-date
例:header("Date: sun,15 Feb 2004 08:00:00 GMT");
19.2 使用Header()函数认证
范例19-5
if (($_POST['name'] != "john") or ($_POST['passwd'] != "1234")):
?>
未输入账号或密码, 或账号,密码不正确
else:
echo "登录成功 .....
";
echo "你登录的账号是 ".$_POST['name']."
";
echo "你使用的密码是 ".$_POST['passwd'];
endif
?>
实践与操作:
1.P227 5.利用Session记录用户姓名,读取网页时出现在网页上。
2.实现登录认证