版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TOC\o”1—3"\h\uHYPERLINK\l_Toc22825数据库 PAGEREF_Toc228252HYPERLINK\l_Toc2183PHP会话跟踪ﻩPAGEREF_Toc21838HYPERLINK\l_Toc25434什么是会话控制 PAGEREF_Toc254348HYPERLINK\l_Toc23176会话跟踪技术 PAGEREF_Toc231769HYPERLINK\l_Toc22204隐藏表单域 PAGEREF_Toc222049HYPERLINK\l_Toc4825URL重写ﻩPAGEREF_Toc48259HYPERLINK\l_Toc2694cookie和sessionﻩPAGEREF_Toc26949HYPERLINK\l_Toc9447cookieﻩPAGEREF_Toc944710HYPERLINK\l_Toc315cookie工作原理ﻩPAGEREF_Toc31510HYPERLINK\l_Toc6856定义一个cookie PAGEREF_Toc685610HYPERLINK\l_Toc28596创建cookie数组:ﻩPAGEREF_Toc2859611HYPERLINK\l_Toc17575删除cookieﻩPAGEREF_Toc1757511HYPERLINK\l_Toc24925cookie注意事项ﻩPAGEREF_Toc2492512HYPERLINK\l_Toc13440SessionﻩPAGEREF_Toc1344012HYPERLINK\l_Toc2935实现简单的会话 PAGEREF_Toc293513HYPERLINK\l_Toc28897开始一个会话 PAGEREF_Toc2889713HYPERLINK\l_Toc12131注册一个会话变量ﻩPAGEREF_Toc1213114HYPERLINK\l_Toc24203使用会话变量 PAGEREF_Toc2420314HYPERLINK\l_Toc11325使用会话ﻩPAGEREF_Toc1132514HYPERLINK\l_Toc8220session_idﻩPAGEREF_Toc822015HYPERLINK\l_Toc8782更换session_id,不影响信息 PAGEREF_Toc878215HYPERLINK\l_Toc25657session_name PAGEREF_Toc2565715HYPERLINK\l_Toc24356session跨页传递问题ﻩPAGEREF_Toc2435616HYPERLINK\l_Toc7628解决session跨页传递问题的三条途径 PAGEREF_Toc762816HYPERLINK\l_Toc16207解决会话传递问题 PAGEREF_Toc1620716HYPERLINK\l_Toc16198注销变量ﻩPAGEREF_Toc1619818HYPERLINK\l_Toc23311销毁会话ﻩPAGEREF_Toc2331118HYPERLINK\l_Toc6424删除session的案例 PAGEREF_Toc642418HYPERLINK\l_Toc15743持久化sessionﻩPAGEREF_Toc1574318HYPERLINK\l_Toc15543配置会话控制 PAGEREF_Toc1554319HYPERLINK\l_Toc8698上课案例 PAGEREF_Toc869819HYPERLINK\l_Toc4320第一个项目--电子商城(面向过程)ﻩPAGEREF_Toc432026HYPERLINK\l_Toc20944前台ﻩPAGEREF_Toc2094426HYPERLINK\l_Toc26885商品展示 PAGEREF_Toc2688526HYPERLINK\l_Toc19594向购物车内添加商品 PAGEREF_Toc1959428HYPERLINK\l_Toc16639查看购物车ﻩPAGEREF_Toc1663929HYPERLINK\l_Toc30531删除购物车中的商品 PAGEREF_Toc3053130HYPERLINK\l_Toc1917下定单ﻩPAGEREF_Toc191733HYPERLINK\l_Toc13288查看订单ﻩPAGEREF_Toc1328834HYPERLINK\l_Toc29901查看订单详情ﻩPAGEREF_Toc2990135HYPERLINK\l_Toc1884公共文件ﻩPAGEREF_Toc188437HYPERLINK\l_Toc6375配置文件ﻩPAGEREF_Toc637537HYPERLINK\l_Toc28112验证码ﻩPAGEREF_Toc2811237HYPERLINK\l_Toc25320后台 PAGEREF_Toc2532039HYPERLINK\l_Toc14036登录页面 PAGEREF_Toc1403639HYPERLINK\l_Toc13670验证登录 PAGEREF_Toc1367040HYPERLINK\l_Toc20197后台框架ﻩPAGEREF_Toc2019741HYPERLINK\l_Toc30261顶部页面ﻩPAGEREF_Toc3026142HYPERLINK\l_Toc19085退出处理ﻩPAGEREF_Toc1908542HYPERLINK\l_Toc15775菜单页面ﻩPAGEREF_Toc1577542HYPERLINK\l_Toc26440分页&搜索用户ﻩPAGEREF_Toc2644043HYPERLINK\l_Toc10273分类列表页面ﻩPAGEREF_Toc1027346HYPERLINK\l_Toc6347添加分类页面ﻩPAGEREF_Toc634748HYPERLINK\l_Toc10013删除分类ﻩPAGEREF_Toc1001350HYPERLINK\l_Toc11624商品分类下拉列表 PAGEREF_Toc1162450数据库php链接数据库MySQL,目前有三种方式:一、纯过程化:如链接:mysql_connect()支持版本:(PHP3,PHP4,PHP5)二、半面向过程半面向对象:(其中i表示改进后的)如;连接:mysqli_connect()newmysqli().支持版本:(PHP5)三、纯面向对象:(支持多数据库的(跨数据库))ﻩ如;连接:newPDO()支持版本:(PHP5)mysql连接数据库================================================mysql_connect(主机名,账号,密码)—-连接数据库(返回一个连接)mysql_select_db(库名[,连接符])-—选择数据库mysql_query(sql[,连接符])--发送SQL语句,获取返回结果:若是sql查询语句返回的是结果集,其他返回true(成功)或false(失败)解析结果集(sql查询结果)mysql_fetch_assoc():ﻩ//以关联数组解析结果集mysql_fetch_row() //以索引数组解析结果集mysql_fetch_array() //以索引加关联数组解析结果集mysql_fetch_object()//以对象数组解析结果集mysql_free_result();释放结果mysql_close();关闭数据库还有其他赋值函数mysql_affected_rows()—-获取上一条增、删、改SQL语句影响到的行数mysql_insert_id()--取得上一步INSERT操作产生的ID<?php
//使用php获取mysql数据信息lamp31库中users表数据ﻫ//ﻫ//1.连接数据库
$conn=mysql_connect("localhost","root”,"root”);
//2.选择数据库
mysql_select_db("lamp31”,$conn);ﻫ//3.发送sql语句(查询),并获取结果集
$sql=”select*fromusers";
$result=mysql_query($sql,$conn);
//4.解析结果集ﻫwhile($row=mysql_fetch_assoc($result)){
echo$row["id”]。”:".$row["name”]."<br/>";
}ﻫ//闭链接释放资源
mysql_free_result($result);ﻫmysql_close($conn);
?〉数据添加<?phpﻫ//数据添加
ﻫ//连接数据库ﻫ$link=@mysql_connect(”localhost”,"root","root”)ordie("数据库连接失败!");ﻫﻫ//echo$link;
//选择数据库
mysql_select_db(”lamp31",$link);
//发送sql语句:ﻫ//ﻫ$sql="insertintousers(name,pass,sex,age,email,num)values(’bb','123','1',20,’mail@126.com',20)";ﻫ//对link连接发送一条sql语句
mysql_query($sql,$link);
$m=mysql_affected_rows();ﻫif($m>0){
echo”成功添加{$m}条数据!";
}else{ﻫecho"添加失败!原因”.mysql_errno().":”。mysql_error();ﻫ}ﻫ//关闭ﻫmysql_close($link);数据浏览〈?php
//数据浏览ﻫ
//连接数据库ﻫ$link=@mysql_connect("localhost","root",”root")ordie("数据库连接失败!");
//echo$link;
//选择数据库
mysql_select_db("lamp31”,$link);ﻫﻫ//发送sql语句:ﻫ//
$sql="select*fromusers";ﻫ//对link连接发送一条sql语句ﻫ$result=mysql_query($sql,$link);ﻫ//执行查询会返回一个结果集
ﻫ//使用mysql_fetch_assoc函数,以关联数组的方式解析结果集
$row=mysql_fetch_assoc($result);//解析结果集(读取一行,并数据指针向下移动一行)
echo"<pre〉";ﻫvar_dump($row);
echo”</pre〉";ﻫ
//使用mysql_fetch_row函数,以索引数组的方式解析结果集
$row=mysql_fetch_row($result);//解析结果集(读取一行,并数据指针向下移动一行)ﻫecho"<pre>”;ﻫvar_dump($row);
echo"〈/pre>";
//使用mysql_fetch_array函数,以索引加关联两种数组的方式解析结果集ﻫ$row=mysql_fetch_array($result);//解析结果集(读取一行,并数据指针向下移动一行)
echo"〈pre>";ﻫvar_dump($row);
echo"〈/pre>";
ﻫ//使用mysql_fetch_array函数,以指定第二参数,来选择索引还是关联数组的方式解析结果集
//我们可以使用指定第二参数:MYSQL_ASSOC(关联)/MYSQL_NUM(索引)/MYSQL_BOTH(关联加索引)ﻫ$row=mysql_fetch_array($result,MYSQL_BOTH);//解析结果集(读取一行,并数据指针向下移动一行)
echo”<pre>";ﻫvar_dump($row);ﻫecho"</pre>";ﻫﻫ//使用mysql_fetch_object函数,以对象的方式解析结果集ﻫ$row=mysql_fetch_object($result);//解析结果集(读取一行,并数据指针向下移动一行)
echo”<pre>";ﻫvar_dump($row);ﻫecho"</pre>”;ﻫecho$row-〉name;//输出对象中姓名信息
//关闭
mysql_close($link);〈?phpﻫ//数据浏览ﻫﻫ//连接数据库
$link=@mysql_connect("localhost",”root”,"root")ordie("数据库连接失败!");ﻫﻫ//echo$link;
//选择数据库
mysql_select_db(”lamp31",$link);
//发送sql语句:
//ﻫ$sql=”select*fromusers”;ﻫ//对link连接发送一条sql语句ﻫ$result=mysql_query($sql,$link);
//执行查询会返回一个结果集ﻫﻫ//使用mysql_fetch_assoc函数,以关联数组的方式解析结果集
while($row=mysql_fetch_assoc($result)){//解析结果集(读取一行,并数据指针向下移动一行)
echo$row[’name’]。":".$row[”age”]。"<br/>”;
}ﻫ
//释放结果集
mysql_free_result($result);ﻫ//关闭
mysql_close($link);输出表字段的属性<?php
//ﻫ$link=@mysql_connect("localhost”,"root","root")ordie("数据库连接失败!”);ﻫmysql_select_db("lamp31",$link);//选择数据库。
$sql="select*fromusers”;ﻫ$result=mysql_query($sql,$link);
echo”此表数据的列数:"。mysql_num_fields($result)."<br/>";
echo"当前结果共计有:"。mysql_num_rows($result).”条。〈br/>";
//获取并输出结果集中列信息ﻫ$m=mysql_num_fields($result);
echo"〈pre〉";
for($i=0;$i<$m;$i++){
$field=mysql_fetch_field($result,$i);
echo$field->name.”";
var_dump($field);
}ﻫecho"〈/pre>";
?>输出类似以下的结果:nameobject(stdClass)#2(13){["name"]=〉string(4)”name"["table”]=〉string(5)"users"["def"]=>string(0)""[”max_length"]=>int(8)["not_null”]=>int(1)[”primary_key”]=>int(0)["multiple_key"]=>int(0)["unique_key"]=>int(1)[”numeric"]=〉int(0)["blob”]=>int(0)["type”]=〉string(6)"string”[”unsigned"]=>int(0)[”zerofill"]=>int(0)}使用表格实现结果集的输出(支持所有的—万能的)〈?phpﻫ//使用表格实现结果集的输出(支持所有的-万能的)
$link=@mysql_connect("localhost","root”,”root”)ordie("数据库连接失败!”);
mysql_select_db("lamp31",$link);//选择数据库.
ﻫ$sql=”selectid'编号’,name’姓名',age'年龄’,sex’性别',email’Email'fromusers";
$result=mysql_query($sql,$link);ﻫﻫ//获取并输出结果集中列信息
$m=mysql_num_fields($result);
ﻫecho”<tablewidth='80%'border='1'>";
//动态输出表的字段(列名)
echo"<tr>";
for($i=0;$i<$m;$i++){ﻫ$field=mysql_fetch_field($result,$i);ﻫecho”〈th>{$field—〉name}〈/th>";ﻫ}ﻫecho"</tr>”;ﻫ//遍历输出数据ﻫwhile($row=mysql_fetch_row($result)){
echo”〈tr〉";ﻫforeach($rowas$v){
echo”〈td〉{$v}〈/td>”;ﻫ}ﻫecho”</tr〉”;
}
echo"</table>";ﻫ?>获取结果集中指定位置的内容〈?php
//获取结果集中指定位置的内容ﻫ$link=@mysql_connect("localhost",”root”,”root")ordie("数据库连接失败!”);ﻫmysql_select_db(”lamp31",$link);//选择数据库。ﻫ$sql=”select*fromusers";
$result=mysql_query($sql,$link);
echomysql_result($result,2,1);//输出第三行第二列的数据wangwuﻫ/*
+-——-+-------—---——————---+
|id|name|
+—+-—-----—-—-—--—-——--+
|2|zhangsan|ﻫ|14|hello|ﻫ|4|wangwu|ﻫ+--——+—---—-——-————————+ﻫ*/
echo”<p/〉";ﻫ//获取数据的总条数:ﻫ//============================================
$sql="selectcount(id)fromusers";//ﻫ$result=mysql_query($sql,$link);
echo”共计:”。mysql_result($result,0,0).”条〈p/>”;
//==================================================ﻫ
//获取数据的总条数:(不推荐)ﻫ//============================================ﻫ$sql=”select*fromusers”;//
$result=mysql_query($sql,$link);
echo"共计:”。mysql_num_rows($result).”条”;
//==================================================
echo"〈/table>";ﻫ?>使用移动结果集指针示例:mysql_data_seek(结果集,指针位置);<?phpﻫ//使用移动结果集指针示例:mysql_data_seek(结果集,指针位置);
$link=@mysql_connect("localhost","root”,"root")ordie("数据库连接失败!");
mysql_select_db(”lamp31",$link);//选择数据库。
$sql=”select*fromusers”;
$result=mysql_query($sql,$link);
//输出结果:ﻫwhile($row=mysql_fetch_assoc($result)){
echo$row[”id"]."";ﻫ}
//到了这一步,结果指针已指向最后。ﻫ
$row=mysql_fetch_assoc($result);ﻫecho"<br/>再次取结果:".$row["id”];ﻫ//===========================
mysql_data_seek($result,0);//将结果集指针移至首行(0)ﻫ
$row=mysql_fetch_assoc($result);
echo"〈br/>再次取结果:”.$row[”id"];ﻫ?>注意:在做有上传功能且需要将与上传文件有关的信息插入数据库的程序时,需要判断插入数据库的mysql_insert_id()的值是否大于0,如果不大于0需要将上传的相关文件删除。PHP会话跟踪HTTP协议:===================================================================1.HTTP协议是超文本(静态:html、css、javaScript)传输协议.2。http协议的请求方式:GET和POST3.HTTP协议最大的特点:无状态解决HTTP协议无状态的方式:1.表单隐藏域2。URL重写(参数)3。Cookie:存放才客户端向cookie中写入值:setCookie(名字,值,失效时间(秒:时间戳)); ﻩ注意:setCookie函数前不要有任何内容输出从cookie中取值:$_COOKIE[]数组的方式取值.通过设置失效时间来移除cookie值。4.Session:存在服务器端注意:在要使用session的页面上要使用session_start()函数来开启要使用会话session.向session中放值:$_SESSION["名字"]="值";从session中取值:echo$_SESSION[”名字”];函数:session_id()获取或设置当前sessionid号(32位字串)5.如何解决客户禁用cookie。1.修改配置文件:php.ini:session。use_trans_sid=12.通过手工URL参数传sessionid号。3。可以通过文件或数据库持久存储session6。通过设置Cookie中sessionid号的有效时间来控制session作用域(生命周期),例如关浏览器session会消失的现象。什么是会话控制我们需要一种强有力的解决方案,为了使得网站可以跟踪客户端与服务器之间的交互,保存和记忆每个用户的身份和信息,这样就产生了会话控制。什么是会话控制:HTTP是一个无状态的协议,此协议无法来维护两个事务之间的联系。当一个用户请求一个页面后再请求另外一个页面时,HTTP无法告诉我们这两个请求是来自同一个人。会话控制思想就是能够在网站中跟踪一个变量,我们可以跟踪变量,就可以做到对用户的支持,并根据授权和用户身份显示不同内容,不同页面.会话跟踪技术以下是各种会话跟踪技术:隐藏表单域将会话跟踪字段的隐藏表单域添加到HTML页面,但是不会显示在客户端浏览器中〈formaction=“main。php”method=”POST”〉<inputtype=“hidden”name=“checkid"value=“ZY7K">〈/form〉在GET和POST方法中指定用于存储有关会话消息的名称和值。URL重写URL(统一资源定位)重写技术将一个唯一的会话ID添加到URL结尾,以标识该会话。例如,重写以下URL传递会话ID=1002原始URL:http://www.myphp.com/load.php用添加的参数重写的URL:http://www。myphp.com/load。php?id=1002原始URL:http://www.myph/bookinfo.php用添加的参数重写的URL:HYPERLINK"http://www.myphp.com/bookinfo.php?bookid=1000"http://www.myphp.com/bookinfo.php?bookid=1000cookie和session当我们需要会话可以跟踪的范围更广,时间更长,我们需要用到cookie和session.比如在有些网站下载东西需要会员先登陆。我们想得知顾客是否已经登陆,并可以进行自动登陆怎么办呢?cookie和session就可以知道。比如网上购物,购物车怎么知道顾客挑选过哪些商品呢?cookie和session也可以记录。总而言之,cookie和session就是能够记录顾客状态的技术,尽管二者属于不同的技术,但只要cookie能做到的,session也能做到!cookie什么是cookie:cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。cookie是web服务器保存在用户浏览器上的小甜饼(一个很小的文本文件),她可以包含有关用户的信息,常用于保存用户名,密码,个性化设置,个人偏好记录等。当用户访问服务器时,服务器可以设置和访问cookie的信息.cookie保存在客户端,通常是IE或Firefox浏览器的cookie临时文件夹中,可以手动删除.注意:如果浏览器上cookie太多,超过了系统所允许的范围,浏览器也会自动对它进行删除。cookie工作原理当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:\DocumentsandSettings\用户名\Cookies目录下。cookie是HTTP标头的一部分,因此setcookie()函数必须在HTML本身的任何内容送到浏览器之前调用。这种限制与header()函数一样(如需了解head()函数,请自行查阅)。当客户再次访问该网站时,浏览器会自动把C:\DocumentsandSettings\用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。在PHP5中,客户端发来的cookie将被转换成全局变量。你可以通过$_COOKIE[‘xxx’]读取。定义一个cookie设置cookie:语法:boolsetcookie(stringname,[stringvalue,[intexpire,[stringpath,[stringdomain,[intsecure]]]]]);本cookie函数可以有6个属性,常用的有3个参数.实例:$value="thebestwayisbyyourself";setcookie(”cookiename”,$value,time()+60*60*24*7);参数描述示例name名字调用名为cookiename的cookievalue值假设第一个参为cookiename,通过$_COOKIE[‘name’取得值]exprice有效时间设置cookie的过期时间和日期,用一个标准的Unix时间标记,可以用time()函数取得,以秒为单位.path范围服务器端的有效路径,设置为“/"表示这个域中所有数组都可以被访问读取。domain域名设定cookie有效域名secure指明cookie只能通过安全的https传送设为true时只能使用安全的https,默认为false,即设置是否仅在https安全连接时才发送cookie到客户端,0或1。接收和处理cookiePHP对cookie有很好的支持,和form表单一样,接收的时候PHP会自动从web服务器接收HTTP头并且它。接收的时候和表单接收一样,用$_COOKIE[“cookiename"]或者$HTTP_COOKIE_VARS[“cookiename”](不提倡使用)注意:如果网站有几个不同的文件目录,使用不带路径的cookie,那么只能在设置cookie的文件所在路径下访问到此cookie。如果指定路径,则按照设置时的路径作为访问cookie的指定路径.创建cookie数组:其一:setcookie(”CookieArray[0]”,"Value1");setcookie(”CookieArray[1]”,"Value2”);其二:setcookie("CookieArray['one’]",”Value1");setcookie("CookieArray[’two’]”,”Value2");setcookie()中使用数组〈?phpsetcookie(”cookie[three]”,”cookiethree");setcookie("cookie[two]”,”cookietwo");setcookie("cookie[one]","cookieone”);//刷新页面后,显示出来if(isset($_COOKIE['cookie’])){foreach($_COOKIE[’cookie’]as$name=>$value){echo"$name:$value<br/〉\n";}}?>删除cookie要删除一个已经存在的cookie,有两个办法:1、调用只带有name参数的setcookie,那么名为这个name的cookie将被从客户机上删掉;setcookie(“MyCookie”);//删除MyCookieﻩ2、期时间就行,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了).例如:setcookie(“MyCookie”,”Value”,time()—1);//删除MyCookie。要注意:当一个Cookie被删除时,它的值在当前页仍然有效。如果要把cookie设置成在浏览器关闭后就失效.那么可以直接把expiretime设为0,或者不设置此值。例如:setcookie(“name”,”value”,0)。cookie注意事项1、setcookie()之前不能有任何html输出,就是空格,空白行都不行,必须在html文件的内容输出前设置2、setcookie()后,你在当前页调用echo$_COOKIE[“name"]不会有输出。必须刷新或到下一个页面才可以看到cookie值。3、不用浏览器对cookie处理不同。客户端可以禁用cookie,浏览器也会限制cookie的数量.一个浏览器能创建的cookie数量最多为300个,并且每个不能超过4KB,每个WEB站点能设置的cookie总数不能超过20个。4、cookie是保存在客户端的,用户禁用了cookie,你的cookie自然也就没作用啦!因此,避免过度依赖cookie,要先想好如果cookie被禁用时的解决方案,以备万一Session什么是SessionSession从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分。Session会话时,SessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中.Session通过ID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及Session变量(在Session活动期间,可在Session中存储数字或文字资料),比如session_name等等,这些变量信息保存在服务器端.SessionID可以作为会话信息保存到数据库中,进行Session持久化,这样可以跟踪每个用户的登陆次数、在线与否、在线时间等。cookie和session在php中的使用区别:cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别。cookie存放在客户端浏览器中session保存在服务器上.它们之间的联系是sessionID一般保存在cookie中,或者放在URL上.禁用cookie的方法:(点击IE中的“工具”—“Internet选项”,在弹出的对话框里点击“安全”—“自定义级别"项,将“允许每个对话COOKIE”设为禁用)实现简单的会话使用会话的基本步骤如下:开始一个会话注册会话变量使用会话变量注销变量并销毁会话注意,这些步骤不一定都要发生在同一个脚本中,其中的一些步骤可以在多个脚本中发生。接下来,我们将依次讨论这些步骤。开始一个会话session_start():开始一个会话或者返回已经存在的会话。说明:这个函数没有参数,且返回值均为true.如果你使用基于cookie的session,那么在使用session_start()之前浏览器不能有任何输出,否则会发生以下错误:Warning:Cannotsendsessioncachelimiter-headersalreadysent(outputstartedat/usr/local/apache/htdocs/cga/member/1。php:2)…………注册一个会话变量PHP5使用$_SESSION[‘xxx’]=xxx注册SESSION全局变量。和GET,POST,COOKIE的使用方法相似。注意:session_register(),session_unregister(),session_is_registered()在php5下不再使用,除非在php.ini里把register_globle设为on,不过出于安全考虑,强烈建议关闭register_globle。HTTP_SESSION_VARS也不提倡使用了,官方建议用$_SESSION代替之。使用会话变量要使一个会话变量在某个范围内可以使用,必须首先使用session_start()函数启动一个会话.这样,就可以通过$_SESSION超级全局数组访问这个变量了。如:echo$_SESSION[‘myvar’];使用前,判断变量是否是已注册的会话变量.if(isset($_SESSION[‘myvar’]))……page1.php〈?phpsession_start();//使用SESSION前必须调用该函数。$_SESSION[‘name’]="我是黑旋风李逵!”;//注册一个SESSION变量$_SESSION[‘passwd’]=”mynameislikui”;$_SESSION[‘time’]=time();echo‘<br/><ahref=“page2。php”〉通过COOKIE传递SESSION</a>’;//如果客户端支持cookie,可通过该链接传递session到下一页。echo‘<br/><ahref=“page2.php?’.SID.‘”>通过URL传递SESSION</a>’;//客户端不支持cookie时,使用该办法传递session。?〉page2.php<?phpsession_start();echo$_SESSION[’name’];//echo$_SESSION[’passwd’];//echodate('YmdH:i:s',$_SESSION['time']);echo’<br/〉<ahref="page1。php">返回山一页</a>';?〉使用会话保存基本数据类型保存数组保存对象session_idsession_id()用于设定或取得当前session_id.php5中既可以使用session_id(),也可以通过附加在url上的SID取得当前会话的session_id和session_name。如果session_id()有具体指定值的话,将取代当前的SESSIONID值。当cookie没有被禁用时,如果指定了一个session_id()值,每次启动session_start()都会往客户端发送一个cookie值。不论当前SESSIONID是否与指定值相等。如果session_id()没有指定值,则返回当前SESSIONID,当前会话没有启动的话,则返回空字符串。使用该函数必须在启动会话之前:session_start();查看当前SessionID<?phpsession_start();echo“当前的sessionid为:”.session_id();?〉设置SessionID<?phpsession_id(“ABC2008”);//必须在session_start()之前session_start();echo“修改的sessionid为:”.session_id();?〉更换session_id,不影响信息session_regenerate_id()更改成功则返回true,失败则返回false。使用该函数可以让当前session更换SESSIONID,但不改变当前session的其他信息。<?phpsession_start();$old_sessionid=session_id();session_regenerate_id();$new_sessionid=session_id();echo"原始SessionID:$old_sessionid<br/>";echo”新的SessionID:$new_sessionid<br/>";echo”<pre>”;print_r($_SESSION);echo"</pre>";?>session_namesession_name()返回当前session的name或改变当前session的name。如果要改变当前session的name,必须在session_start()之前调用该函数。注意:session_name不能只由数字组成,它至少包含一个字母。否则会在每时每刻都生成一个新的sessionid.session改名示例:<?php$previous_name=session_name("WebsiteID");session_start();echo"新的session名为:$previous_name<br/〉";?>session跨页传递问题session跨页传递需要考虑三种情况:客户端禁用了cookie。浏览器出现问题,暂时无法存取cookiephp.ini中的session。use_trans_sid=0或者编译时没有打开--enable-trans—sid选项解决session跨页传递问题的三条途径1、设置php.ini中的session.use_trans_sid=1或者编译时打开打开了--enable—trans—sid选项,让PHP自动跨页传递sessionid。2、手动通过URL传值、隐藏表单传递sessionid。3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。解决会话传递问题page1。php〈?phpsession_start();$_SESSION[‘var1’]=“中华人民共和国”;$url=“<ahref=‘s2.php'〉下一页〈/a>”;echo$url;?>page2.php<?phpsession_start();echo“传递的session变量var1的值:”.$_SESSION[‘var1’];?>现在你手动关闭客户端的cookie,再运行就得不到结果了第一种途径设置php.ini中的session.use_trans_sid=1编译时打开打开了--enable-trans-sid选项”注:Linux适用,Windows不适用第二种途径s1。php〈?phpsession_start();$_SESSION[‘var1’]=“中华人民共和国”;$sn=session_id();$url=“<ahref=s2。php?sid=$sn>下一页〈/a>”;//PHP5定义了一个常量SID来表示session_id(),$url还可以写成$url=“〈ahref=page2.php?”.SID。“>下一页</a〉”;echo$url;?>s2。php<?phpsession_id($_GET['sid']);session_start();echo"传递的session变量var1的值为:".$_SESSION['var1'];?〉第三种途径s1.php〈?phpsession_start();$_SESSION[‘var1’]=“中华人民共和国”;$sn=session_id();$fp=fopen("e:\tmp\phpsid。txt","w+”);fwrite($fp,$sn);fclose($fp);$url=“<ahref=s2。php>下一页</a>”;echo$url;?>s2。php<?php$fp=fopen(”e:\tmp\phpsid。txt",”r");$sid=fread($fp,1024);fclose($fp);session_id($sid);session_start();echo”传递的session变量var1的值为:"。$_SESSION['var1'];?〉注销变量1、unset($_SESSION[‘xxx'])删除单个session变量,unset($_SESSION[‘xxx’])用来unregister一个已注册的session变量.其作用和session_unregister()相同。session_unregister()在PHP5中不再使用。注:unset($_SESSION)此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复。用户也不再可以注册$_SESSION变量。2、$_SESSION=array()删除多个session变量3、session_unset()删除所有session变量销毁会话session_destroy()结束当前的会话,并清空会话中的所有资源。该函数不会unset(释放)和当前session相关的全局变量,也不会删除客户端的sessioncookie。返回值:布尔值.功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true,注:PHP默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数.删除session的案例<?php//初始化session.session_start();/*删除所有的session变量。。也可用unset($_SESSION[‘xxx'])逐个删除。*/$_SESSION=array();//或session_unset();/*删除sessinid.由于session默认是基于cookie的,所以使用setcookie删除包含sessionid的cookie.*/if(isset($_COOKIE[session_name()])){setcookie(session_name(),’',time()—42000,'/');}//最后彻底销毁session.session_destroy();?>持久化session请求结束后所有注册的变量都会自动被序列化(为了方便保存到服务器端的会话文本文件中),读取时再进行还原。手动编码与解码:session_encode():序列号-编码session_decode():还原-解码警告:有些类型的数据不能被序列化因此也就不能保存在会话中。包括resource变量或者有循环引用的对象(即某对象将一个指向自己的引用传递给另一个对象)。配置会话控制php.ini配置文件中有一组会话配置选项,可以对其进行设置。如下:session.auto_start=0;在请求启动时初始化sessionsession.cache_expire=180;设置缓存中的会话文档在n分钟后过时session。cookie_lifetime=0;设置按秒记的cookie的保存时间,相当于设置Session的过期时间,为0时表示直到浏览器被重启也可以在php。ini里启动session。auto_start=1,这样就无需每次使用session之前都要调用session_start()。但启用该选项也有一些限制,如果确实启用了session.auto_start,则不能将对象放入会话中,因为类定义必须在启动会话之前加载以在会话中重建对象。session.cookie_path=/;cookie的有效路径session。cookie_domain=;cookie的有效域session。name=PHPSESSID;用在cookie里的session的名字session.save_handler=files;用于保存/取回数据的控制方式session.save_path=/tmp;在save_handler设为文件时传给控制器的参数,这是数据文件将保存的路径.session.use_cookies=1;是否使用cookies上课案例1.php<?phpﻫ
//以cookie方式记录值ﻫsetCookie("userid”,”101234”);ﻫsetCookie("id",”100",time()+10);//设置10秒后失效
setCookie("state”,"1”);
ﻫ$name=”lisi”;ﻫﻫecho”<ahref=’2.php?name={$name}'〉2。php〈/a〉”;ﻫ
echo"〈formaction='2。php'method='get'〉";
echo"〈inputtype=’hidden'name='name'value='{$name}'/>";ﻫecho"<inputtype=’submit'value='跳转到2。php’/>";
echo"</form>”;
ﻫ?>2。php<?php
echo"〈h2〉2.php〈/h2>";ﻫ
//以cookie方式取值ﻫecho”cookie信息<br/>”;
echo"userid:”.$_COOKIE["userid"]。"〈br/〉";
echo”id:".$_COOKIE["id”]。”<br/>";ﻫecho"state:".$_COOKIE[”state"].”<br/〉”;
echo”〈p/>";
$name=$_GET[”name"];//获取url参数的传值ﻫ
echo”name:".$name;
echo"〈ahref='1.php'>1.php</a>";
?>3.php<?php
//使用cookie实现计数器ﻫ//===========================
ﻫ//先从cookie中取出计数器的值ﻫ$m=$_COOKIE[”count"];ﻫ//值加加ﻫ$m++;
//返回cookie中ﻫsetCookie("count",$m);
//输出ﻫecho$m;
echo”<ahref=’delCookie.php'>清空数字</a〉”;
?〉delCookie。php<?phpﻫ//通过设置失效时间,来移除cookie值。
setCookie("count","”,time()—1);ﻫheader('location:3。php');ﻫ?>4.php〈?phpﻫsession_start();
echo”<h2〉4.php</h2>";
$_SESSION[”name"]=”wangwu”;ﻫ
echo"〈ahref='5.php'>5.php〈/a>”;ﻫ
?>5.php〈?phpﻫsession_start();ﻫecho$_SESSION["name"];6.php〈?php
session_start();//开始一个会话sessionﻫﻫ$m=$_SESSION['sum’];//从会话中读取一个信息.
$m++;
echo$m;
$_SESSION["sum"]=$m;//将m的值以sum名放入到session会话中。
$_SESSION[”loginname"]=”zhangsan”;ﻫ
echo”<p/>sessionID:"。session_id();
echo"<ahref='7.php'>查看session值</a>”;
?>7.php<?phpﻫsession_start();ﻫﻫecho"以下是session中的值:<br/>”;ﻫforeach($_SESSIONas$k=>$v){
echo”$k=>$v<p/〉”;
ﻫ}购物车练习shop.php<body>
<h1align="center"〉购物车练习〈/h1>
<divalign=”center”>〈br〉
§<ahref="shop。php">我要购物</a>ﻫ§<ahref=”show。php"〉查看购物车</a>
§<ahref="clear。php"〉清空购物车</a>§
〈/div〉
<hralign="center”width="80%"〉
<center>ﻫ<formaction="addshop。php"method=”post">ﻫ<inputtype="hidden”name=”id"value=”1001"/>
<inputtype="hidden"name=”name"value=”数码照相机"/>ﻫ〈inputtype="hidden"name="price"value="1600.00”/>
数码照相机:1600.00元&nbsp;&nbsp;ﻫ〈inputtype="submit"value=”购买">
〈/form〉〈p/>
〈formaction="addshop.php”method="post">ﻫ〈inputtype=”hidden"name="id"value="1002"/>ﻫ〈inputtype="hidden"name="name"value="MP3播放器"/>ﻫ<inputtype=”hidden”name="price"value="360。00”/>
MP3播放器:360.00元&nbsp;&nbsp;
<inputtype=”submit”value="购买”〉
〈/form〉<p/>ﻫ<formaction="addshop。php"method=”post”〉ﻫ<inputtype="hidden"name="id”value=”1003”/>ﻫ<inputtype="hidden"name=”name"value="笔记本电脑”/〉
〈inputtype="hidden”name=”price"value="12800.00"/>ﻫ笔记本电脑:12800.00元&nbsp;&nbsp;ﻫ<inputtype="submit"value=”购买"〉ﻫ</form><p/>ﻫ<formaction="addshop.php"method="post">
〈inputtype="hidden”name="id”value="1004”/>ﻫ<inputtype="hidden”name="name”value="无线鼠标”/>
<inputtype=”hidden”name="price"value="120.00"/〉ﻫ无线鼠标:&nbsp;120。00元&nbsp;&nbsp;ﻫ<inputtype="submit"value="购买">ﻫ〈/form〉<p/〉
〈/center〉
<hralign="center"width="80%”〉ﻫ〈/body>ﻫ</html〉addshop.php〈?phpsession_start();?>ﻫ<body〉
<h1align="center">购物车练习</h1>
<divalign=”center”〉〈br>
§<ahref="shop.php”〉我要购物〈/a〉ﻫ§<ahref="show.php">查看购物车</a>ﻫ§<ahref=”clear.php”>清空购物车</a〉§ﻫ</div>
〈hralign="center"width="80%">ﻫ<center>
<?phpﻫ//1。获取要购买的商品ﻫ$id=$_POST[”id”];ﻫ$name=$_POST["name”];
$price=$_POST["price”];
//拼装一条商品信息(并附加了一个数量num值,默认为1)
$shop=array("id"=>$id,”name”=〉$name,"price”=>$price,"num"=>1);ﻫﻫ//2。将商品放入购物车shoplist
//先判断shoplist购物车中是否已存在你要购买的商品(判断是根据商品id号)ﻫif(isset($_SESSION["shoplist”][$id])){ﻫ//若是:则在原商品数量上加一。ﻫ$_SESSION["shoplist"][$id][”num"]++;
}else{ﻫ//否则作为新商品添加(以商品id号为数组下标添加)ﻫ$_SESSION["shoplist"][$id]=$shop;ﻫ}ﻫ//ﻫecho"ok";
//var_dump($_SESSION);ﻫ?〉ﻫ〈/center〉ﻫ〈hralign="center"width="80%”>
</body〉ﻫ〈/html〉show.php〈?phpsession_start();?>ﻫ<body>ﻫ〈h1align="center”>购物车练习</h1>ﻫ<divalign=”center”〉<br>
§<ahref="shop。php"〉我要购物</a>ﻫ§<ahref="show。php"〉查看购物车〈/a〉
§<ahref=”clear.php"〉清空购物车〈/a>§ﻫ</div〉
<hralign=”center”width="80%">
<center〉ﻫ〈?phpﻫecho"<tablewidth='70%'border=’1'>";
echo"〈tr〉<th〉商品名称</th〉<th〉单价〈/th>〈th〉数量</th〉〈th>小计</th>〈th>操作〈/th>〈/tr>";ﻫ$sum=0;ﻫ//先判断购物车中是否存在商品ﻫif($_SESSION["shoplist"]&&is_array($_SESSION[”shoplist"])){
//遍历session中购物车shoplist中的商品,并输出详细内容
foreach($_SESSION["shoplist"]as$v){ﻫecho"<tr>”;ﻫecho”<td>{$v['name']}</td〉";ﻫecho"〈td>¥{$v['price']}〈/td>";ﻫecho”〈td>{$v['num']}</td>";ﻫecho"〈td>¥”。($v["price”]*$v["num"])."</td>";
echo"〈td><ahref='delshop.php?id={$v['id']}’>删除</a〉</td〉”;
echo"</tr>";
$sum+=$v["price"]*$v[”num"];
}ﻫ}ﻫecho"〈tr〉〈th〉总计:〈/th><tdcolspan='3'align='right’>¥{$sum}&nbsp;&nbsp;&nbsp;</td><td>&nbsp;〈/td〉〈/tr>”;
echo”</table>";ﻫ?〉
〈/center>
<hralign=”center"width=”80%”>ﻫ</body>
</html>delshop。php<?php
session_start();//开启session会话ﻫ//删除购物车中的某个商品
//
//1.获取要删除商品的id号ﻫ$id=$_GET['id'];
//2.删除指定商品
unset($_SESSION[”shoplist”][$id]);ﻫ
//3.跳回显示页面ﻫheader("Location:show。php");
?>clear。php<?php
//清空购物车
session_start();ﻫunset($_SESSION['shoplist’]);
header(’location:show。php’);ﻫ?〉解决会话传递问题1。php<?php
session_start();ﻫecho"<h2〉1.php〈/h2〉”;
$_SESSION["name"]="zhangsan”;
echo”sessionID:”.session_id()。”<p/〉";
echo”<ahref='2。php?id=100'>获取session值</a>";php<?php
session_start();ﻫecho"<h2>2。php</h2>";
echo"sessionID:".session_id()."<p/>”;ﻫecho”session:"。$_SESSION["name”];
echo"<p/>〈ahref='1.php'>向session中放值</a>";3.php<?phpﻫ//手工设置sessionid通过URL参数传值ﻫsession_start();
echo"〈h2〉3。php</h2>";
$_SESSION["name”]="zhangsan”;
echo”sessionID:".session_id()."<p/>";
echo"〈ahref='4.php?id=100&sessionid=”。session_id()。”'〉获取session值</a〉”;4.php〈?phpﻫ//手工设置sessionid通过URL参数传值
if($_GET[”sessionid"]){
session_id($_GET["sessionid"]);//从get中获取session的id号,并设置到当前页面ﻫ}ﻫsession_start();
echo"〈h2〉4.php〈/h2〉";ﻫecho”sessionID:”.session_id()."<p/>";ﻫecho"session:".$_SESSION[”name”];ﻫecho"〈p/〉〈ahref=’3.php'〉向session中放值</a〉”;当关闭浏览器中的cookie时,点击3.php中的链接到达4.php页面中时sessionid不会发生变化,通过4.php的链接到达3。php文件时sessionid会发生变化。关闭浏览器之后,再打开时,保留会话信息的方法5.php<?php
//手工设置sessionid通过URL参数传值ﻫsession_start();
setCookie(session_name(),session_id(),time()+3600);//每次访问本页面,重新设置sessionid保留时间。ﻫecho"<h2>5.php</h2>";
$_SESSION["name”]="zhangsan";
echo"sessionID:”。session_id()."<p/>";
echo”<ahref='6.php'〉获取session值〈/a>";6.php<?phpﻫ//手工设置sessionid通过URL参数传值ﻫsession_start();
echo"<h2>6.php</h2>”;ﻫecho"sessionID:”.session_id()。"〈p/>";ﻫecho”session:”。$_SESSION["name”];
echo”<p/>〈ahref=’5。php’>向session中放值</a>";第一个项目-—电子商城(面向过程)前台
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年国航股份飞行总队招聘考试真题
- 2024年安全顾问岗位聘用合同
- 2023年大理州鹤庆县紧密型县域医共体招聘编制外人员考试真题
- 2024年工程挡土墙施工合作协议
- 2024年供需协议:木托盘订购与交付
- 2024年创新实践:建筑设计院与科研机构合作协议
- 2024年农用物资购销合同(化肥农药部分)
- 2024年工业用地买卖协议标准格式
- 2024年城市供水供电与基础设施维护合同
- 2024年国营农场存量房买卖合同文本
- 机关工作人员考勤表Excel模板
- 日照市重点支柱产业情况
- 儿童过敏性休克ppt课件
- 三级配电箱电路图(共2页)
- 安全生产文明施工措施费用明细报表范文
- 江西省职业培训补贴范围及标准-江西省职业技能鉴定指导中心
- 七年级生物上册(济南版)知识点归纳
- 腹腔镜设备的使用和保养PPT课件
- D600变频器说明书
- 上海英皇明星城初步设计(图文)
- PRTV方案(完整范本)
评论
0/150
提交评论