当前位置:Gxlcms > PHP教程 > 【学习札记】session机制实现PHP购物车

【学习札记】session机制实现PHP购物车

时间:2021-07-01 10:21:17 帮助过:4人阅读

【学习笔记】session机制实现PHP购物车

使用到session的页面必须要有session启动函数session_start();清空系统中session可以用session_destroy();函数。

在php.ini文件中关于session的配置:session.save_path定义了存放session 的路径;session.name定义了sessionID的名称。

下面是练习的例子,列出代码。

index.html页面:


	
		商品分类列表
	
	
		运动器材
办公用品
烟酒副食
查看购物车

文件a.php页面代码:






购物街



	请选择商品

文件b.php页面代码:




	购物街



	请选择商品

文件c.php页面代码:




	购物街



	请选择商品

index.php数据处理页面:

 $value)
		statement
	*/

	if(isset($_POST['d'])){				//是否从购物车管理界面提交过来的
		foreach($_POST['d'] as $c){		//如果是,则将提交过来的商品序号从购物车数组中删除
			unset($_SESSION['cart'][$c]);
		}
	
	}

?>
运动器材
办公用品
烟酒副食
查看购物车

购物车管理页面cart.php,这里主要实现删除商品、撤销购物页面:


这里要注意php中form表单中enctype属性的设置。

form表单中的enctype属性指定将数据发回到服务器时浏览器使用的编码类型。
下面是取值说明:
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,不对字符编码。当使用有文件上传控件的表单时,该值是必需的。。
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。在发送前对所有字符进行编码(默认)。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。将空格转换为 "+" 符号,但不编码特殊字符。抓包可见数据形式。

说明:

1)如果表单中有文件要上传,表单中form标签必须设置enctype="multipart/form-data"来确保匿名上传文件的MIME编码。默认情况下,表单的编码格式是 application/x-www-form-urlencoded,不能用于文件上传;

2)进行session处理时,如果将表单设置enctype="text/plain",则通过$_POST,$_GET,$_REQUEST等是无法取到值的。这点一定要小心!!!

对于三种类型的进一步解释,实质参考如下:

enctype defines how the data should be formatted before sending. the two correct formats are application/x-www-form-urlencoded (which essentially sends things as key=valye&anotherkey=anothervalue, with http headers) and multipart/form-data (which splits each key up into a distinct section of data). text/plain means nothing should be done - its behaviour is essentially undefined between browsers, and was only ever used for automated email forms in the days before spam. use application/x-www-form-urlencoded for text forms (or leave this to use the default setting) and multipart/form-data for file attachment uploads


text/plain:

Content-Type: text/plain
================================================================================
foo=bar
baz=The first line.
The second line.


application/x-www-form-urlencoded:
Content-Type: application/x-www-form-urlencoded
================================================================================
foo=bar&baz=The+first+line.%0D%0AThe+second+line.%0D%0A
multipart/form-data:
Content-Type: multipart/form-data; boundary=---------------------------314911788813839
================================================================================
-----------------------------314911788813839
Content-Disposition: form-data; name="foo"

bar
-----------------------------314911788813839
Content-Disposition: form-data; name="baz"

The first line.
The second line.

-----------------------------314911788813839--
you can see how the first one is useful for passing values UNCHECKED directly into an email program (e.g. if your form uses a mailto: address, so it uses your visitor's email program to send) but is largely useless for programmatic access to fields. only the bottom 2 examples are valid for actual form-based form data


人气教程排行