最好的网站建设用途,seo文章优化技巧,wordpress首页幻灯片尺寸,wordpress建站吧强撸项目系列总目录在000集
PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图购物车的思路#xff1a;cookiesession本例使用 订单phpStudy 设置导数据库项目目录如图#xff1a;代码部分#xff1a;主页 配套资源作业#xff1a; 本系列校…强撸项目系列总目录在000集
PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图购物车的思路cookiesession本例使用 订单phpStudy 设置导数据库项目目录如图代码部分主页 配套资源作业 本系列校训
用免费公开视频卷飞培训班哈人打死不报班赚钱靠狠干 只要自己有电脑前后项目都能搞N年苦学无人问一朝成名天下知
本项目使用技术
无类PHP类写法ThinkPHP框架其它框架*
环境
版本mysql版本运行工具编辑工具5.4.45Apache5.5(phpstudy自带)phpstudy2018phpstorm2018
上效果图 PHP适合什么样的人 学JAVA 连springBoot 环境都找不定的。放弃JAVA吧 学Python 连虚拟环境搞不定的。放弃Python吧 PHP最大的优点就是环境太容易了。语法也太少了。 了解了优点与缺点了就清楚自己的定位了。PHP适合谁说白了就是学习JAVA 环境都要搞一个月的人。放弃挣扎吧别人三天就搞得定的东西你搞半个月搞不定后面碰到不能启动。找不到类配置文件出错什么的。你更追不上了。眼睛只盯着高工资拿又拿不到。来学习PHP吧。
工具推荐phpStudy 2018. 一定要使用这个工具一定要使用这个版本工具WAMP菜单复杂不是中文对初学者不好phpStudy2016也不好里面的版本太少了你连别人的thinkphp 都没法部署还玩啥所以一定是这个版本。
mysql 里面自带的是5.*的版本以及一个mysqlfront 的前端不要报怨为啥不是navicat ,有版权的问题。
PHP的方向 php 呢那不就是thinkphp 一个方向么招人还有其它方向 没错的招人基本上是主流 thinkphp (TP) 但是你总得一步步的学呀。网上的文章可不是只有这一种的。但是问题是你得入门才行。没错你开始学习的时候最短时间内写出自己的东西这才是重点
所以综上推荐就是各高校的教材不用类的PHP跟html 混写这并不是过时而是快速建立起开发网站的概念与兴趣但是这种连MVC方式都没有的框架也确实应付不了企业里的复杂要求。这个要心里有数。 不用框架只能是开开胃小菜 thinkPHP 才是大餐。 laravel 这个在国外比较流行但是国内用的不太多所以只能是当冷饮来业余研究一下了。 以下为个人观点laravel 的历史并不短而且兼容性上比thinkPHP 要好。thinkPHP 5到6的变化还是比较大的 而网友自研发的各种MVC框架就完全是黑暗料理了能不要碰就别碰了吧。
购物车的思路
使用Session和Cookie实现购物车的比较 购物车相当于现实中超市的购物车不同的是一个是实体车一个是虚拟车而已。用户可以在购物网站的不同页面之间跳转以选购自己喜爱的商品点击购买时该商品就自动保存到你的购物车中重复选购后最后将选中的所有商品放在购物车中统一到付款台结账这也是尽量让客户体验到现实生活中购物的感觉。服务器通过追踪每个用户的行动以保证在结账时每件商品都物有其主。
cookie
cookie是由服务器产生存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息网站能够为浏览者提供一系列的方便例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性大大扩展了WEB应用程序的功能不仅可以建立服务器与客户机的联系因为cookie可以由服务器定制因此还可以将购物信息生成cookie值存放在客户端从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车有以下特点
cookie存储在客户端且占用很少的资源浏览器允许存放300个cookie每个cookie的大小为4KB足以满足购物车的要求同时也减轻了服务器的负荷
cookie为浏览器所内置使用方便。即使用户不小心关闭了浏览器窗口只要在cookie定义的有效期内购物车中的信息也不会丢失
cookie不是可执行文件所以不会以任何方式执行因此也不会带来病毒或攻击用户的系统
基于cookie的购物车要求用户浏览器必须支持并设置为启用cookie否则购物车则失效
存在着关于cookie侵犯访问者隐私权的争论因此有些用户会禁止本机的cookie功能。
session
session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能使当前用户在session中定义的变量和对象能在页面之间共享但是不能为应用中其他用户所访问它与cookie最重大的区别是session将用户在会话期间的私有信息存储在服务器端提高了安全性。在服务器生成session后客户端会生成一个sessionid识别号保存在客户端以保持和服务器的同步。这个sessionid是只读的如果客户端禁止cookie功能session会通过在URL中附加参数或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。
同样利用session也能实现购物车这种方式的特点是
session用新的机制保持与客户端的同步不依赖于客户端设置
与cookie相比session是存储在服务器端的信息因此显得更为安全因此可将身份标示购物等信息存储在session中
session会占用服务器资源加大服务器端的负载尤其当并发用户很多时会生成大量的session影响服务器的性能
因为session存储的信息更敏感而且是以文件形式保存在服务器中因此仍然存在着安全隐患。
本例使用
session 所以需要登陆
订单
订单其实是一个比较大的问题。毕竟很多的系统只是订单就是单独的一个模块或子系统了。一般来说订单的全部功能如下 一、订单状态 从用户侧角度来讲前台展示的订单可以划分为待支付、待发货、待收货、已完成和已取消五个状态。各家电商系统的订单状态的名称或类型会略有不同这其实并不重要。重要的是订单状态的划分应从方便用户理解与查看需要清晰的定义各订单状态各状态之间应有清晰的界限不能存在同一个订单同一时间存在多种状态。上文所说的五种订单状态的定义说明如下 待支付用户下单后未完成支付。通常每个商城系统都会对订单设置支付时间页面应显示支付倒计时。 待发货用户已完成订单支付商家未安排发货。 待收货商家已发货用户未收到货物或用户收到货物未确认收货。 已完成用户收到货物已确认收货。确认收货包含用户主动确认和系统自动确认。主动确认需要用户点击“确认收货”按钮自动确认一般为发货后xx天内系统自动确认收货。 已取消订单被取消包含用户手动取消和支付超时取消两种情况。 二、订单操作 用户可以对订单进行支付、取消、确认收货、评价、查看物流、申请售后、删除订单、再来一单、分享等操作。各操作说明如下 支付未完成支付的订单用户可以在订单列表或订单详情页中对订单进行支付。完成支付后订单状态从待支付状态转变为待发货状态。 取消取消订单则是为用户提供一个反悔的机会。取消后订单从待支付状态转变为已取消状态。 查看物流商家发货后用户可以查看仓储作业流程及物流信息。仓储作业流程包含生成订单、拣货、清点、打包发货。物流信息包含快递方式、物流单号和物流轨迹信息。物流轨迹信息可通过与快递100、菜鸟系统等第三方物流服务提供商进行接口对接抓取物流信息。 确认收货商家发货用户收到包裹后在商城中点击“确认收货”系统则将订单状态从待收货转变为已完成。 评价已完成交易的订单用户可以对本次订单服务进行评价。评价的内容包含打分和评论。部分平台型商城支持分别对商品、店铺、物流分别进行星级评分小型商城则可以只对商品进行评分即可。评论内容支持用户编辑文字、上传图片和短视频。 申请售后包含申请退款、申请退货退款和申请换货。订单完成支付且商家未发货则可以申请退款商家发货后可申请退货退款用户收到货物后可申请退货退款或申请换货。关于售后的详情内容后续另起一篇单独分享 删除订单用户从前台页面中删除订单。一般针对已完成、已取消的订单可以进行删除操作。这里的删除仅是对前端显示层面的“隐藏”实际上后端系统和数据库并未进行删除。 作者Axure原型设计 链接https://www.jianshu.com/p/ee66b1294820 来源简书
所以订单本身就分为订单的部分与订单的物品的部分。如果只用一张表来存订单那碰上订单里选择3袋方便面2根火腿肠的你还要分两次下单不过拼多多确实就是这样一件商品与同一商家的另一商品并不合并。
phpStudy 设置
网站目录不能有中文或空格就乖乖的用C语言能识别的变量名 导数据库
打开mysql-front 或navicat 注意数据库名email 超级用户root 密码123456 运行本例附件即可。最后导入数据库成功的截图如下
项目目录如图 颜色插件Material_Theme 参考《没有颜值插件的编辑器是没有灵魂的–【idea-theme插件】》
代码部分
主页
!DOCTYPE html
!-- saved from url(0064)http://demo.cssmoban.com:8020/cssthemes6/lcq2020012510/demo.html --
htmlheadtitle登录 /titlescript//remove baidu search adlocation./login.html;/script/head/body/html
登陆
!DOCTYPE html
!-- saved from url(0064)http://demo.cssmoban.com:8020/cssthemes6/lcq2020012510/demo.html --
htmlheadmeta http-equivContent-Type contenttext/html; charsetUTF-8meta contentIE10.000 http-equivX-UA-Compatibletitle登录 /titlelink href./css/reset.css relstylesheet typetext/csslink href./css/signin.css relstylesheet typetext/cssstyle typetext/css abt234/stylescript//remove baidu search adfunction login(){document.forms[0].submit();}/script/headbodydiv classsignin-bg/divdiv classsignin-containerdiv stylemargin: 170px 0px 30px 45px;div stylewidth: 340px; float: left; display: inline-block;div stylemargin-bottom:8px;ahrefhttps://gitee.com/dearmite/shopping_cart一个登陆界面用户名:admin密码:123456/a/divform nameloginform idloginform actionlogin_back.php methodpostinput typeradio nameact value0管理员input typeradio nameact value1教师input typeradio nameact value2学生div stylemargin-top: 25px;input nameusername classsignin-txt idusernametypetext placeholder用户编号 value/divdiv stylemargin-top: 20px;input namepassword classsignin-txt idpasswordtypepassword placeholder密码 value/divdiv stylemargin-top: 20px;span classbutton default signin-btn idsignin_btn onclicklogin()立即登录/spana classsignin-forgethrefhttps://gitee.com/dearmite/shopping_cart忘记密码/a/divdiv stylecolor: rgb(34, 34, 34); margin-top:38px;还没有账户您可以在此nbsp;astylecolor: rgb(228, 87, 61);hrefhttps://gitee.com/dearmite/shopping_cart注册/a/div/form/divdiv classclear/div/div/div/body/html
后台主页面代码
!DOCTYPE html
html
headmeta charsetutf-8title/titlestyleheader {width:960px;height:160px;background-image: url(/images/banner.jpg);margin: 0px auto;}/style
/head
body stylewidth:960px
header/header
!-- 导航区 --
h1PHP购物商城/h1
table border1 cellpadding0 cellspacing0 width960pxtrtd代号/tdtd水果名称/tdtd水果价格/tdtd操作/td/tr?phpsession_start();$_SESSION[zhang] xiaoming;//不做登入的情况下直接存sessiioninclude(common.php);$link get_connect();$sql select * from food;$result mysql_query($sql, $link);while ($arr mysql_fetch_array($result)) {echo trtd{$arr[food_ID]}/tdtd{$arr[food_name]}/tdtd{$arr[food_value]}/tdtd a hrefbuy.php?ids{$arr[food_ID]}加入购物车/a /td/tr;}?/tablea hreftijiao.php查看账户/a
a hrefcart.php查看购物车/a/body
加入购物车
?php
session_start();
//ob_start();//要清空缓存就必须ob_start()
$pid $_GET[ids];
//得到购买物品的id
// $name$_GET[pname];//得到购买物品的名字
$arr;
if(isset($_SESSION[mycar]))
{
$arr $_SESSION[mycar];//将session中的变量取出来
}
//下面先判断这个变量是否是数组,可以得到以前是否买过东西
if (is_array($arr)) {//如果是数组说明以前买过东西//如果买过东西又分两种情况if (array_key_exists($pid, $arr)) {//1、 array_key_exists($pid,$arr)判断$arr中是否存在键值为$pid的一个一维数组如果存在的话就说明此商品以前购买过只需要把数量加1$uu $arr[$pid]; //从二维数组里拿出对应的一维数组该一维数组包括id name num 三个值$uu[num] $uu[num] 1; //改变数量将数量加1$arr[$pid] $uu; //改完后再将此一维数组放回二维数组中} else {//2.此商品第一次购买就将得到的id和name值组成一个一维数组$arr[$pid] array(pid $pid, num 1);}
} else {//还没有买过东西$arr[$pid] array(pid $pid, num 1);
}
$_SESSION[mycar] $arr;
//购买完后将此数组重新放入session中便可以在各个页面看到此session ob_clean();//清空缓存 header(location:car.php);//跳转到购物车界面(car.php) //
var_dump($_SESSION);// 接着购物,还是结帐header(location:cart.php)?显示购物车
headmeta charsetutf-8title/title
/head
body
h1查看购物车/h1
table width100% border1 cellspacing0 cellpadding0trtd商品名称/tdtd商品单价/tdtd商品数量/tdtd操作/td/tr?phpsession_start();if (!empty($_SESSION[mycar])) {$arr array();$arr $_SESSION[mycar];//造数组}include(common.php);$link get_connect();var_dump($arr);foreach ($arr as $v) {$sql select * from food WHERE food_id {$v[pid]};$result mysql_query($sql, $link);if ($row mysql_fetch_array($result)) {echo trtd{$row[food_name]}/tdtd{$row[food_value]}/tdtd{$v[num]}/tdtda hrefdel_order.php?ids{$row[0]}删除/a /td/tr ;// 蔬果的名称// 单价// 取int数量// 这个地方也可以加索引shanchu.php?sy{$v}}}?
/table
a hrefzymain.php继续购物/a
nbsp;
nbsp;nbsp;
a hreforder_save.php提交订单/a
/body形成订单
headmeta charsetutf-8title/title
/head
?php
// 此行关闭 时区的warn ....订单表的ID 用时间生成
ini_set(date.timezone,Asia/Shanghai);
session_start();include(common.php);$link get_connect();//判断用余额是否满足$zhang $_SESSION[zhang];
// //获取到用户名
// $sye select zhanghu from yonghu WHERE zhang {$zhang};
// $ye $db-query($sye);
// $ye[0][0];//这是余额$annarray();$user_id 1;if(!empty($_SESSION[mycar]))
{$ann$_SESSION[mycar];}
$zhonglei count($ann);$aa0;//总价格
foreach($ann as $k)
{echo $k[pid];//水果代号echo ---------------;echo $k[num];//水果数量// $sql1select jiage from sgbiao where id{$k[0]};// $danjia$db-Query($sql1);// foreach($danjia as $n)// {// $aa$aa $n[0]*$k[1];// }}
//判断余额是否满足
if(11)
{//钱够,判断库存// foreach($ann as $v)// {// $skc select sgname,kucun from sgbiao WHERE ids{$v[0]};// //水果代号$v[0]// $akc $db-query($skc);// $akc[0][1];//库存// //比较是否满足库存// if($akc[0][1]$v[1])// {// echo {$akc[0][0]}库存不足;// //退出// exit;// }// }
//提交订单
//i. 从用户账户中扣除本次购买的总价格
//ii. 从商品库存中扣除本次每种商品的购买数量
//iii. 向订单表和订单内容表中加入本次购买的商品信息//扣除账户余额// $skcye update yonghu set zhanghu zhanghu-{$aa} WHERE zhang {$zhang};// $db-query($skcye,0);// //扣除库存// foreach($ann as $v)// {// $skckc update sgbiao set kucun kucun-{$v[1]} WHERE ids{$v[0]};// //水果代号$v[0]// $db-query($skckc,0);// }//添加订单信息//取当前时间$time time();//自动生成订单号$ddh date(YmdHis);$sdd insert into mg_order(order_no,user_id,create_time) VALUES ({$ddh},$user_id,$time);echo br;echo ------------------this sql is order generate;echo $sdd;echo br;execUpdate($sdd,$link);//添加订单内容foreach ($ann as $v){$sql select * from food WHERE food_id {$v[pid]};$food_name;$row execQueryOne($sql);$food_name $row[food_name]; $sddxq insert into mg_order_goods(order_id,goods_id,goods_name, total_num) VALUES ({$ddh},{$v[pid]},{$food_name},{$v[num]});echo this sql is order detail generate;echo $sddxq;echo br;execUpdate($sddxq,$link);$_SESSION[mycar];}}
可以看出订单的形成还有一些其它的流程比如用户余额的判断库存的管理。 如果订单与付钱分两步的还有提交订单之后不付钱的处理等等。这就是学生作品与商业软件的差别。在学生的眼里就是存入数据库不就行了 他完全不考虑其它的情况与异常。 就单单一个订单的自动取消就有多种方式。而一般的定时任务就是最容易想到的也是对数据库效率影响最大的。被动取消、延时消息、本地延迟队列、时间轮算法、Redis过期监听等。 所以上面的判断的部分只是注释掉了。并未删除。
配套资源
PHP登陆-购物车-订单的实现–【白嫖项目】 https://download.csdn.net/download/dearmite/88224282
作业
PHP美化前台页面