$id=$_POST["id"]; //获取商品id
$num=$_POST["goodsnum"]; //获取商品数量
$preg="/^[0-9]*[0-9]$|^[0-9]*[0-9]$/"; //编写正则表达式
if($num==""){ //判断提交的值是否为空
echo "<script>alert('数量不能为空!');history.back();</script>";
exit;
}else if(!preg_match($preg,$num,$str)){ //判断提交的数据是否是正整数
echo "<script>alert('数量只能为正整数!');history.back();</script>";
exit;
}
preg_match()函数,在字符串中搜索所有与给出的正则表达式匹配的内容,如果存在则返回True,否则返回False。语法如下:
语法:int preg_match(string pattern,string sbuject[,array matches[,int flags]])
参数说明:
pattern:必要参数,需要匹配的正则表达式
subject:必要参数,输入的字符串matches:可选参数。输出的搜索结果的数组,例如$out[0]将包含与整个模式匹配的结果,$out[1]将包含与第一个捕获的括号中的子模式所匹配的结果,一次类推
flags:可选参数,标记:PREG_OFFSET_CAPTURE,对每个出现的匹配结果页同时返回共附属的字符串偏移量
三,函数实现过程
1,添加商品功能
添加商品功能的实现原理是:首先创建一个购物车,然后以商品展示页中“购买”链接传递的商品ID($_GET[id])为依据,向购物车中添加商品(商品ID),并且不允许重复添加。向购物车中添加商品的操作通过by_commodity.php文件来完成。
首先,创建一个购物车。
然后,判断购物车中是否为空,如果为空,则将商品的ID和数量添加到购物车中;如果不为空,则要判断添加商品的ID是否在购物车中已经存在,如果存在则不能重复添加,否则将商品ID添加到购物车中。
添加商品程序代码如下:
复制代码 代码如下:
<?php
header("Content-type:text/html;charset= utf-8");
session_start(); //初始化session变量
session_register("goodsid"); //定义session变量用于存储商品ID
session_register("goodsnum"); //定义session变量用于存储购买商品的数量
if($_SESSION["goodsid"]=="" && $_SESSION["goodsnum"]==""){ //判断session变量是否为空
$_SESSION["goodsid"]=$_GET["id"]."@"; //如果session变量为空,则为其赋值为商品的ID,并以@分隔
$_SESSION["goodsnum"]="1@"; //如果session变量为空,则为其赋值为1,并以@分隔
}else{ //如果session变量不为空
$array=explode("@",$_SESSION["goodsid"]); //则以@为分隔符,将session变量中的数据写入到数组中
if(in_array($_GET["id"],$array)){ //如果判读数组中是否存在指定的ID
echo "<script>alert('该商品已经被放入购物车!');history.back();</script>";
exit;
}
//如果数组中不存在指定的ID,则说明该商品还没有放入购物车中
$_SESSION["goodsid"].=$_GET["id"]."@"; //将该商品添加到购物车中
$_SESSION["goodsnum"].="1@"; //更改商品数量
}
echo "<script>window.location.href='shopping_car.php';</script>";
?>
2,删除购物车中商品功能的实现
删除购物车中商品的操作是根据“删除该项”超级链接中传递的商品ID($_GET[id])执行的。在delete_commodity.php文件中,根据$_GET[id]传递的值,执行删除购物车中商品的操作。
首先,获取$_GET[id]传递的值。然后,应用explode()函数,将Session变量中存储的商品ID和数量的数据写入数组,并以@作为分隔符。
接着,应用array_search()函数,获取数组中指定ID商品的键名,并根据获取的键名将数组中指定的数据赋值为空。
最后,将数组中重新赋值的空数据写入购物车中,从而完成删除购物车中指定商品的操作。
复制代码 代码如下: