PHP基础内容七

LAMP15年前 (2010)发布 liyugang
91 0

第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 ";
?>

Session测试

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'])):
?>

多向转址

您喜欢浏览的运动相关信息是:

method=get>
游泳

跑步

登山


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")):
?>

登录画面

未输入账号或密码, 或账号,密码不正确

method=post>
账号

密码



else:
echo "登录成功 .....

";
echo "你登录的账号是 ".$_POST['name']."
";
echo "你使用的密码是 ".$_POST['passwd'];
endif
?>

实践与操作:
1.P227 5.利用Session记录用户姓名,读取网页时出现在网页上。

2.实现登录认证

© 版权声明

相关文章

暂无评论

暂无评论...