php实现购物车程序代码

 更新时间:2016年11月25日 16:19  点击:1410
购物车是现在电商开发者必须要做的一个功能了,下面我来给大家整理两个可用于电商网站的简单购物车程序代码,有兴趣的同学不防进入参考一下

例子1

最近在写一个电子商务的网站,在做购物车的时候才发现php里面没有map这种数据结构,我们不能简单的通过一个hashmap来实现购物车,于是我想到到数组,通过数组的值的格式化来进行编写。
也就是说,我们是通过循环数组的值,通过拆分值来判断数据是不是重复,比如我现在浏览的商品的id是4,添加的数量是3,我就在数组里面存放4-3,以后如果当遇到是id是4的时候,我们只是需要时改变数组里面这个位置的数值,如果id在数组里面拆分比较都不存在,则往数组里面添加数据。删除购物车制定id 的商品也是循环数组,这个值,使用unset()来释放这个值。
具体的实现代码:
—————————————————————————————————————————–

 代码如下 复制代码
<?php
session_start();
if($_SESSION['carts']==””){
$carts=array();
array_push($carts, “0-0″);
$_SESSION['carts']=$carts;
}
$method=$_GET['method'];
if($method==”add”){
$productId=$_GET['productid'];
$number=$_GET['number'];
$carts=$_SESSION['carts'];
$flag=”false”;
for($i=0;$i<sizeof($carts);$i++){
$pn=$carts[$i];
$pns=split(“-”, $pn);
if($pns[0]==$productId){
$carts[$i]=$productId.”-”.$number;
$flag=”true”;
$location=$i;
}
}
if($flag==”true”){
$carts[$location]=$productId.”-”.$number;
}else{
array_push($carts, $productId.”-”.$number);
}
$_SESSION['carts']=$carts;
}
if($method==”delete”){
$productId=$_GET['productid'];
$carts=$_SESSION['carts'];
for($i=0;$i<sizeof($carts);$i++){
$pn=$carts[$i];
$pns=split(“-”, $pn);
if($pns[0]==$productId){
unset($carts[$i]);
}
}
$_SESSION['carts']=$carts;
}
?>

———————————————————————————————————–
php实现购物车程序代码

上面电子商务课程的时候做的一个简单的程序了,就是一个在线购物,不过还是90多分的哦!~ 其实只要是这种类似的程序,都是简单的增删改查系统,无非就是就对数据库的操作,我们要做的就是很好的实现这个业务逻辑,以及能很好的设计相关的字段来控制,比如是商品的状态的控制,是上线还是下线,还是推荐的。
    现在看看连接数据库的代码吧!~
数据库配置代码,其实这个可以在xml配置文件里面设置:

 代码如下 复制代码
class DbConfig{
var $databaseAddress="180.153.178.89";
var $dataBaseUser="pantingwen";
var $databasePassword="753116";
var $database="sqlpantingwen";
/**
* @return the $databaseAddress
*/
public function getDatabaseAddress() {
return $this->databaseAddress;
}
/**
* @return the $dataBaseUser
*/
public function getDataBaseUser() {
return $this->dataBaseUser;
}
/**
* @return the $databasePassword
*/
public function getDatabasePassword() {
return $this->databasePassword;
}
/**
* @return the $database
*/
public function getDatabase() {
return $this->database;
}
/**
* @param field_type $databaseAddress
*/
public function setDatabaseAddress($databaseAddress) {
$this->databaseAddress = $databaseAddress;
}
/**
* @param field_type $dataBaseUser
*/
public function setDataBaseUser($dataBaseUser) {
$this->dataBaseUser = $dataBaseUser;
}
/**
* @param field_type $databasePassword
*/
public function setDatabasePassword($databasePassword) {
$this->databasePassword = $databasePassword;
}
/**
* @param field_type $database
*/
public function setDatabase($database) {
$this->database = $database;
}
}
?>
数据库连接代码:
include_once 'DbConfig.php';
define("conn", getcon());
function getcon(){
$dbConfig=new DbConfig();
$con=mysql_connect($dbConfig->getDatabaseAddress(),$dbConfig->getDataBaseUser(),$dbConfig->getDatabasePassword());
return $con;
}
/**
* 选择一款数据库
* Enter description here ...
*/
function _select_db(){
$dbConfig=new DbConfig();
if(!mysql_select_db($dbConfig->getDatabase())){
exit('找不到指定的数据库');
}
}
/**
* 设置字符集
* Enter description here ...
*/
function _set_names(){
if(!mysql_query('set names utf8')){
exit('字符集错误');
}
}
function _query($_sql){
_select_db();
_set_names();
if(!$result=mysql_query($_sql,conn)){
echo mysql_error();
}
return $result;
}
/**
* 只能是获取一个数据组
* Enter description here ...
* @param unknown_type $_sql
*/
function _fetch_array($_sql){
return mysql_fetch_array(_query($_sql),MYSQL_ASSOC);
}
/**
* 返回数据组
* Enter description here ...
* @param unknown_type $_sql
*/
function _fetch_array_list($_result){
return mysql_fetch_array($_result,MYSQL_ASSOC);
}
/**
* 影响到到的记录数
* Enter description here ...
*/
function _affect_rows(){
return mysql_affected_rows();
}
/**
* 判断是不是存在数据
* Enter description here ...
* @param unknown_type $_sql
* @param unknown_type $_info
*/
function _is_repeat($_sql,$_info){
if(_fetch_array($_sql)){
}
}
function _close(){
if(!mysql_close(_conn)){
exit('关闭异常');
}
}
?>

效果截图:php实现购物车程序代码

现在用php做模仿用户登录我们都会使用到PHP curl函数了,因为只有它才可以实现像用户一样的去访问别人网站了,下面给大家介绍一下curl登陆新浪微博发微博应用例子,希望对各位有帮助。

前天接到一个需求需要模拟登陆微博然后进行发微博,以前干过很多的模拟登录阿里妈妈,微信,还有些其他的内部系统,至今没有出现不能登录的,哈哈,所以也就没有当一回事情,可是当分析新浪的登陆过程的时候才感觉到压力,?澹?苈氲募用芊绞礁悴欢ò。??虾芏嗟亩际侵?暗募用芩惴 sha1(sha1(sha1(pwd)).once.servertime) ,肯定都用不了,主要使这个加密算法搞不定所以密码都搞不定别谈登录的,接着就在网上各种找代码,一个小时毫无所获,?辶耍?獯胃迷趺窗炷兀?氨吲6即党鋈チ恕M蝗幌氲降锹嫉氖焙蛴幸桓龃?so,是不是我用微博的帐号密码也能登录到新浪邮箱或者其他新浪产品去,感觉希望很大,哈哈,果然微博的帐号可以直接登录所有的新浪产品,再次访问微博我已经在登录状态了,证明这个有神马用呢?

其实吧很有用的,一个大公司在一个项目投入的技术和这个项目盈利和前景有很大关系,微博他可以花很大的心思去做,但是其他不一定就,哈哈,万一找到那个地方的密码没有加密那岂不是很好说了。(PS:对网络安全比较感兴趣,这个方式对黑客来说叫做旁注,旁注就是,当黑客在攻击一个网站的时候,这个网站安全做的非常好,没有什么已知漏洞,攻破难度较大,所以黑客会找找该网站下服务器下其他网站,然后找一个比较容易攻破的,通过这个网站挂马,shell,提权,然后目标网站也就沦陷,以为在同一个服务器,所以….目标就是拿到目标站,无论哪种方法只要拿下就行,很淫荡的想法有没有)


https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543简单抓抓包发现密码并没有加密,哈哈,我们不是能模拟登录了吗? 嗯,其实这里高兴的有点早了

先登录新浪的吧,代码分分钟就搞定了。返回的是一个json数组

 代码如下 复制代码


$password = $p;
$username = base64_encode($u);
$loginUrl = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543';
$loginData['entry'] = 'sso';
$loginData['gateway'] = '1';
$loginData['from'] = 'null';
$loginData['savestate'] = '30';
$loginData['useticket'] = '0';
$loginData['pagerefer'] = '';
$loginData['vsnf'] = '1';
$loginData['su'] = base64_encode($u);
$loginData['service'] = 'sso';
$loginData['sp'] = $password;
$loginData['sr'] = '1920*1080';
$loginData['encoding'] = 'UTF-8';
$loginData['cdult'] = '3';
$loginData['domain'] = 'sina.com.cn';
$loginData['prelt'] = '0';
$loginData['returntype'] = 'TEXT';

//var_dump($loginData);exit;

$login = json_decode(loginPost($loginUrl,$loginData),true);
var_dump($login);exit;function loginPost($url,$data){
global $cookie_file ;
//echo $cookie_file ;exit;
$tmp = '';
if(is_array($data)){
foreach($data as $key =>$value){
$tmp .= $key."=".$value."&";
}
$post = trim($tmp,"&");
}else{
$post = $data;
}
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$return = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
return $return;

 }返回的是一个json数据转成数组即可

 代码如下 复制代码

 

array (size=4)
  'retcode' => string '0' (length=1)
  'uid' => string '1920109964' (length=10)
  'nick' => string '毕姥爷讲故事' (length=18)
  'crossDomainUrlList' =>
    array (size=2)
      0 => string 'https://passport.weibo.com/wbsso/login?ticket=ST-MTkyMDEwOTk2NA%3D%3D-1403228192-gz-AB37DC0C18BA3BFCD90AEFAC6115149D&ssosavestate=1434764192' (length=140)
      1 => string 'https://crosdom.weicaifu.com/sso/crosdom?action=login&savestate=1434764192' (length=74)

这个时候说明我们登录成功了,但是其实我们的微博首页的地址并不是weibo,com,而是 http://weibo.com/bipeng0405/home?wvr=5 这样地址,我们怎么获取这个地址了,很简单,直接抓取weibo。com然后他会自动给你跳转回去的,你只需要把跳转的地址记录下来即可

 代码如下 复制代码


$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://weibo.com"); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file); 
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); 

$return = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);这里还有一个问题,这个时候你可能发现没有跳转到自己微博的首页,这是什么原因呢,可以看看登陆时候有两个连接地址,其中有一个weibo域下的一个地址,猜测应该是进行了cookie的设置所以先获取一边他吧。

 代码如下 复制代码

get($login['crossDomainUrlList'][0]);

这个代码要在刚才weibo.com获取之前,否则会出现问题的哦

这就是登录的逻辑了,过程很漫长花了差不多一天的时候,唉。。没有心情写文章了

原文来自:http://www.mapenggang.com

 

前面写过了一篇文章是图片反盗链的,我自己弄得单独的页面就采用了sina的短连接,对于短连接来说还是方便的,地址太长占地方。下面分享源码,有注释,非原创
 代码如下 复制代码

<?php
//Sina App_Key
define('SINA_APPKEY', '31641035');

function curlQuery($url) {
 //设置附加HTTP头
 $addHead = array(
 "Content-type: application/json"
 );

 //初始化curl,当然,你也可以用fsockopen代替
 $curl_obj = curl_init();

 //设置网址
 curl_setopt($curl_obj, CURLOPT_URL, $url);

 //附加Head内容
 curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);

 //是否输出返回头信息
 curl_setopt($curl_obj, CURLOPT_HEADER, 0);

 //将curl_exec的结果返回
 curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);

 //设置超时时间
 curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);

 //执行
 $result = curl_exec($curl_obj);

 //关闭curl回话
 curl_close($curl_obj);

 return $result;
}

//简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误
function filterUrl($url = '') {
 $url = trim(strtolower($url));
 $url = trim(preg_replace('/^http:///', '', $url));
 if ($url == '')
 return false;
 else
 return urlencode('http://' . $url);
}

//根据长网址获取短网址
function sinaShortenUrl($long_url) {
 //拼接请求地址,此地址你可以在官方的文档中查看到
 $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY . '&url_long=' . $long_url;

 //获取请求结果
 $result = curlQuery($url);

 //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西
 //print_r($result);exit();

 //解析json
 $json = json_decode($result);

 //异常情况返回false
 if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '')
 return false;
 else
 return $json[0]->url_short;
}

//根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数
function sinaExpandUrl($short_url) {
 //拼接请求地址,此地址你可以在官方的文档中查看到
 $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY . '&url_short=' . $short_url;

 //获取请求结果
 $result = curlQuery($url);

 //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西
 //print_r($result);exit();

 //解析json
 $json = json_decode($result);

 //异常情况返回false
 if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '')
 return false;
 else
 return $json[0]->url_long;
}

//要缩短的网址
$url = $long; //这里自己看着办,修改成你要缩短的网址还是获取post的数据还是怎么滴。

$url = filterUrl($url);
$short = sinaShortenUrl($url);
$ulong = sinaExpandUrl($short);
?>

本文中短连接已经附带的一个appkey不用再自己申请KEY当然你如果需要使用你自己的您也可以自己去替换。至于用法就看你了,镶入到其他程序使用啊?单独做个生成短连接的页面都不管我的事啊。使用方法不多说。最近比较懒。

本方法使用PHPEXCEL插件读取excel文件转化为数组了,后期还有没有完成的我们可以把转换成数组之后再保存到mysql数据库这个就非常的方便了。
 代码如下 复制代码

<?php
/**
 * @desc PHPEXCEL导入
 * return array();
 */
function importExcel($file)
{
    require_once 'PHPExcel.php';
    require_once 'PHPExcel/IOFactory.php';
    require_once 'PHPExcel/Reader/Excel5.php';
    $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
    $objPHPExcel = $objReader->load($file);
    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow(); // 取得总行数
    $highestColumn = $sheet->getHighestColumn(); // 取得总列数
    $objWorksheet = $objPHPExcel->getActiveSheet();
 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $excelData = array();
    for ($row = 1; $row <= $highestRow; $row++) {
        for ($col = 0; $col < $highestColumnIndex; $col++) {
            $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
        }
    }
    return $excelData;
}
 
//用法:
importExcel('test.xsl');
从phpMyAdmin4.2.0开始,phpMyAdmin 高级功能的默认数据库 phpmyadmin 中又新增了一张表 pma__savedsearches。所以利用升级脚本 update.sh 将 phpMyAdmin 从 4.1.x 升级到 4.2.x 后,登录 phpMyAdmin 会出现以下提示

phpMyAdmin 高级功能尚未完全设置,部分功能未激活。
点击查看提示信息,就会发现 $cfg['Servers'][$i]['savedsearches'] 出现错误提示。

 

备注:如果是全新安装LAMP一键安装脚本,则不受影响。

解决办法:
1、删除 phpMyAdmin 安装目录 /data/www/default/phpmyadmin 下旧的配置文件 config.inc.php,再下载最新的文件。
命令如下:
rm -f /data/www/default/phpmyadmin/config.inc.php
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/lamp/master/conf/config.inc.php -O /data/www/default/phpmyadmin/config.inc.php
chown apache:apache /data/www/default/phpmyadmin/config.inc.php
2、导入最新的 sql 文件,将数据库 phpmyadmin 中新增的一张表 pma__savedsearches 创建出来。在安装最新版 phpMyAdmin 时,update.sh 脚本已经把最新的 create_tables.sql 复制到网站服务器上传文件夹 upload/ 中。在 phpMyAdmin 的导入标签中,执行该 sql 文件即可。
phpMyAdmin从4.1.x升级到4.2.x注意事项
3、退出 phpMyAdmin,重新登录后,错误提示已经不存在了。
phpMyAdmin从4.1.x升级到4.2.x注意事项

 

 

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • SQLMAP结合Meterpreter实现注入渗透返回shell

    sqlmap 是一个自动SQL 射入工具。它是可胜任执行一个广泛的数据库管理系统后端指印, 检索遥远的DBMS 数据库等,下面我们来看一个学习例子。 自己搭建一个PHP+MYSQ...2016-11-25
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24