购物车以php原生cookie实现
index.php //入口文件
<?php
/**
* @name index.php
* @decs
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 9:49
*/
include "goods.php";
conn.inc.php //数据库连接常量设置
<?php
/**
* @name conn.inc.php
* @decs 数据库常量配置
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 9:43
*/
define("HOST",'13.232.50.253');
define("USER",'liuyu');
define("PWD",'94492474');
define("DBNAME",'onecms');
mysqli.php //数据库连接
<?php
/**
* @name mysqli.php
* @decs 数据库连接
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 9:44
*/
include 'conn.inc.php';
$mysqli=new mysqli(HOST,USER,PWD,DBNAME);
if($mysqli->connect_errno){
die('数据库连接出现错误,请检查配置'.$mysqli->connect_error);
}
goods.php //商品展示
<?php
/**
* @name goods.php
* @decs
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 9:46
*/
header("Content-type:text/html;charset=utf-8");
include "mysqli.php";
?>
<div style='width:800px;float:none'>
<h1>商品列表</h1>
<!-- 显示当前系统时间-->
<h3><p id="demo"></p>
<script>
var myVar=setInterval(function(){myTimer()},1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
</script>
</h3>
<form method="get" action="">
<table style="100%" border="1">
<tr>
<td>
<select name="gid">
<option value="0">请选择商品</option> <?php
/**
* @name show
* @decs 无限级分类
* 关联model:
* @param $fid
* @param $i
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 10:12
*/
function show($fid,$i)
{
global $mysqli;//全球变量关键字,将前面的变量作用域使其在函数内生效
$sql = "select *from goodstype where fid=$fid";
$result = $mysqli->query($sql);
$str=" ";
$i++;
for($n=1;$n<$i;$n++) {
$str .= "---";
}
$id=isset($_GET["gid"])?$id=$_GET["gid"]:"";
?>
<?php
while ($row = $result->fetch_assoc()) {
?>
<option <?php if($id==$row['id']){echo "selected";}?> id="<?php echo $str.$row["classname"] ?>" value="<?php echo $row["id"] ?>">
<?php echo $str.$row["classname"] ?>
</option>
<?php
show($fid=$row["id"],$i);
?>
<?php
}
}
show(0,0); ?>
<input id="select" type="submit" value="查询"></select></td></tr>
</table>
</form>
</div>
<div style="float: none;width: 600px">
<?php
$id=isset($_GET["gid"])?$id=$_GET["gid"]:"";
if(!empty($id)){
$sql="select *from goods where goodstypefid=$id or goodstypefstr like '%$id%' and checkinfo=1 and delstate=0";
}else{
$sql="select *from goods";
}
$result=$mysqli->query($sql);
?>
<table border="1" cellpadding="3" cellspacing="0" width="60%">
<tr bgcolor="skyblue">
<?php
while($row=$result->fetch_assoc()){
?>
<td >
<image width="200px" height="200px" src="<?php echo $row["picurl"]?>"></image>
<a title="查看商品详细信息" href="goodsshow.php?id=<?php echo $row["id"]?>"><?php echo $row["title"]?></a>
</td>
<?php
}
?>
</tr>
</table>
</div>
goodsshow.php //商品详情页展示
<?php
/**
* @name goodsshow.php
* @decs
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 10:15
*/
header("Content-type:text/html;charset=utf-8");
include "mysqli.php";
?>
<?php
$id=isset($_GET["id"])?$_GET["id"]:1;
$sql="update goods set hits=hits+1 where id=".$id;
$mysqli->query($sql);
$sql="select *from goods where id=".$id;
$result=$mysqli->query($sql);
while($row=$result->fetch_assoc()){
?>
<div>
<span><?php echo $row["title"] ?></span>
<hr>
<image src="<?php echo $row["picurl"] ?>" width="200"></image>
<br>
数量:-<input type="text" id="buynum" value="1">+
价格:
<del>市场价:<?php echo $row["marketprice"] ?></del>
出售价:<i style="color: red"><?php echo $row["salesprice"] ?></i>
<input type="hidden" id="id" value="<?php echo $row["id"] ?>">
<hr>
内容:<?php echo $row["content"] ?><br> <a href="javascript:;" onclick="buynow()">立刻购买</a> <a href="javascript:;" onclick="addshoppingcart()">加入购物车</a>
<?php
}
?>
</div>
<script src="jquery.min.js"></script> <script>
//立即购买
function buynow(){
//先添加到购物车再进行跳转到购买页面
addshoppingcart("buy");
}
//添加到购物车
function addshoppingcart(a){
$.ajax({
url:"shoppingcart.php?a=addshoppingcart",
type:"post",
data:{'buynum':$("#buynum").val(),'id':$("#id").val()},
dataType:"html",
success:function (data) {
if(a=="buy"){
location.href="shoppingcart.php?a=buynow";
}else{
if(data){
alert("添加购物车成功!");
}
}
}
})
}
</script>
shoppingcart.php //购物车功能
<?php
/**
* @name shoppingcart.php
* @decs
* @author 老猫 <18368091722@163.com>
* Updated on: 2019/5/30 10:20
*/ header("Content-type:text/html;charset=utf-8");
include "mysqli.php";
$a=isset($_GET["a"])?$_GET["a"]:"";
//添加购物车
if($a=="addshoppingcart"){
$buynum=$_POST["buynum"];
$id=$_POST["id"];
// echo "<script>alert($buynum+$id)</script>";
if(!empty($_COOKIE["shoppingcart"]))
$shoppingcart=unserialize($_COOKIE["shoppingcart"]);
else
$shoppingcart=array();
if(isset($id) && isset($buynum)){
$id=intval($id);
$buynum=intval($buynum);
$shoppingcart[]=array($id,$buynum);
}
setcookie('shoppingcart',serialize($shoppingcart));//商品属性进行序列化保存到cookie中
return true;
}elseif($a=="buynow") {
//下面写购物车页面
if (!empty($_COOKIE["shoppingcart"])) {
?>
<table width="36%" border="1" cellspacing="0" cellpadding="0">
<tr bgcolor="#87ceeb">
<td width="20%">商品ID</td>
<td width="35%" height="30">商品名称</td>
<td width="25%">购买数量</td>
<td width="15%">价格</td>
<td width="5%">操作</td>
</tr>
<tr>
<td height="10" colspan="4"></td>
</tr>
<?php
$totalprice = "";
$shoppingcart = unserialize($_COOKIE["shoppingcart"]);
foreach ($shoppingcart as $key => $value) {
$keys = array($key);
?>
<tr>
<td><?php echo $value[0] ?></td>
<td height="30">
<?php
$sql = "select *from goods where id=" . intval($value[0]);
$result = $mysqli->query($sql);
$row = $result->fetch_assoc();
$totalprice += $row["salesprice"] * $value[1];
echo '<a href="goodsshow.php?cid=' . $row['goodstypeid'] . '&id=' . $row['id'] . '" class="title" target="_blank">' . $row['title'] . '</a>';
?>
</td>
<td><?php echo $value[1] ?></td>
<td><?php echo $row["salesprice"] * $value[1] ?></td>
<td> <a href="shoppingcart.php?a=delone&key=<?php echo $key ?>" onclick="">取消</a></td>
</tr>
<?php
}
?>
</table>
<hr>
<span style="float: left;width: 250px;height: 150px">
总价格:<?php echo $totalprice ?><a href="">下一步</a> <a href="shoppingcart.php?a=empty">清空购物车</a> </span>
<?php
}
}elseif($a=="delone"){
$key=$_GET["key"];
$shoppingcart=unserialize($_COOKIE["shoppingcart"]);
unset($shoppingcart[$key]);
if(empty($_COOKIE)){
setcookie($shoppingcart,"",time()-3600);
}elseif(empty($shoppingcart)){
setcookie("shoppingcart",serialize($shoppingcart));
echo "<div class='shoppingcartempty'>您的购物车目前没有商品!3秒后跳回首页......</div>";
header("Refresh:3;url=goods.php");
}else{
setcookie("shoppingcart",serialize($shoppingcart));
header("location:shoppingcart.php?a=buynow");
} exit();
}//清空购物车
elseif($a=="empty"){
//清除整个cookie保存的商品信息
unset($_COOKIE["shoppingcart"]);
setcookie("shoppingcart","",time()-3600);
echo "<div class='shoppingcartempty'>您的购物车目前没有商品!3秒后跳回首页......</div>";
header("Refresh:3;url=goods.php");
}
以上摘自php中文网
购物车以php原生cookie实现的更多相关文章
- 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...
- 购物车实现思路:cookie + 数据库
一.加入购物车 1.用户未登录 ==> 将商品id和商品数量存为数组 ==>序列化后存到cookie中 代码: if(!isset($_SESSION['uid'])){ if(empt ...
- 模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
Login <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- 原生cookie
出于浏览器的安全性限制,从WEB应用程序中访问用户本地文件系统是有许多限制的.但是WEB站点的开发人员可以使用cookie,将少量信息保存在用户本地硬盘的指定空间中. document对象的cooki ...
- javascript 原生 cookie 处理
来自网络! function getCookie(name) { var start = document.cookie.indexOf(name + "="); var len ...
- Javascript 原生Cookie使用用法
var oCookie = { setCookie: function (name, value, expireDays, path, domain) { var expireDays = expir ...
- iphone原生cookie处理
可以使用NSURLConnection的类来执行HTTP请求,登录该网站,并检索的cookie. 要执行一个请求,只是创建一个NSURLConnection的实例,并分配给它的委托对象. NSURLR ...
- 创建Cookie,简单模拟登录,记录登录名,购物车记录先前添加内容,session控制登录
工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站, ...
- 购物车存到cookie
为什么不存session? 首先,session存在时间限制,会定期清空的,而cookie如果不主动清或者设置定期则不会清楚: session存放在服务器端,cookie存放在客户端浏览器. 购物车存 ...
随机推荐
- 2016 ACM-ICPC NEERC F. Foreign Postcards (概率DP)
2016 ACM-ICPC NEERC F. Foreign Postcards 题意:有一串由C.W组成的字符串,每次截取长度为k(1<=k<=n且k随机)的前缀,如果该前缀首位为W,则 ...
- shell脚本中根据端口号kill对应的应用进程
一.使用情景 在Jenkins的自动部署中,每次重新部署我们都需要先关闭原先的应用进程,然后重新部署启动.在使用tomcat时,我们可以通过startup.sh和shutdown.sh进行对应操作.但 ...
- JS基础_数组的遍历
遍历:将数组中所有的元素都取出来 1.for循环 var arr = ["1","2","3"]; for(let i=0;i<arr ...
- Python 文件writelines() 方法和处理双层列表
概述 writelines() 方法用于向文件中写入一序列的字符串. 这一序列字符串可以是由迭代对象产生的,如一个字符串列表. 换行需要制定换行符 \n. 语法 writelines() 方法语法如下 ...
- vuejs2从入门到精通与项目开发实战
vuejs2从入门到精通:一.基础部分0.课件1.介绍2.vue实例3.模板语法4.计算属性和观察者5.Class与Style绑定6.条件渲染7.列表渲染8.事件处理9.表单输入绑定10.1.组件(1 ...
- 2017-12-3 Crontab(字符串处理)
Crontab 哈哈本人的不及格代码(暂留): #include<iostream> #include<queue> #include<cmath> #includ ...
- Python3+RobotFramewok 快速入门(二)
1. 原理 首先解释一下RF的工作原理,官方文档介绍就不赘述了,笔者就框架架构做出一个更加具体的描述 测试套及测试用例集(Test Data即需要用户编写的脚本)通过RF特定的语法解析,然后知道用户要 ...
- Xib设置label自动换行和Label的顶部对齐
真的是不想说自己了,一个Xib纠结了一天,简直了,整整被虐了一上午啊...... 不知道这是Xcode8的问题呢....还是我的Xib约束什么的问题..... 只想说的是,以前也是这么设置的,明明可以 ...
- Java中的字节,字符与编码,解码
ASCII编码 ASCII码主要是为了表示英文字符而设计的,ASCII码一共规定了128个字符的编码(0x00-0x7F),只占用了一个字节的后面7位,最前面的1位统一规定为0. ISO-8859-1 ...
- linux硬件驱动
今天被问到了一个新问题:linux需不需要安装驱动,就像windows装完系统之后需要安装最新驱动一样? 说实话以前真没想过,都是装完系统update一下就直接用了. 谷歌了一下,发现其实也是需要安装 ...