购物车类

作者: 关于计算机  发布:2019-10-03

至于 SESSION 在 php 中的应用是必不要少的,最重视的职能之一,SESSION 在互连网利用中,称为“会话”,大家常见明白为存款和储蓄特定顾客会话所需的消息,那样,当客商在网址页面之间跳转时,存款和储蓄的 SESSION 值不会屏弃,而是在总体客商会话中央市直机关接并存下来。通俗一点讲,正是当客户A上网时,会创立一个ID(a)值进行封存下来,若是您的ID(A)值未有开展注销,下一次上网时,那么些网址还也许会记得您的ID(A)值,今年就能够在网络开展调用你的ID(A)值了,举例招待您ID(A)值再一次访问。

正文实例叙述了php达成的SESSION类。分享给大家供大家仿效。具体深入分析如下:

关于在 PHP 中运用 SESSION 值是很简短的,只要在上面提前输入 session_start() 起头对话就可以,上面就足以拓宽利用 SESSION 了,那只是小网址的施用措施,实际上,SESSION 本人还应该有比很多性格,比如SESSION周期,调用SESSION,SESSION数据保藏期,SESSION保存,SESSION注销等等,假若有了那么些属性,看起来才终于三个比较正式的SESSION应用会话。

有关 SESSION 在 php 中的应用是必不要少的,是最重大的作用之一。SESSION 在互连网使用中,称为“会话”,大家平日明白为存储特定客户会话所需的消息,那样,当客户在网址页面之间跳转时,存款和储蓄的 SESSION 值不会舍弃,而是在整个客商会话中一贯并存下来。通俗一点讲,就是当客商A上网时,会创设叁个ID(a)值进行封存下去,如若你的ID(A)值未有进展注销,后一次上网时,这么些网址还有只怕会记得你的ID(A)值,这一年就足以在网络海展览中心开调用你的ID(A)值了,例如款待您ID(A)值再一遍访问。

上面是一个完好的 Session 类,整合了 Session 最中央的属性值,个中,展开,关闭与清理是切合php编制程序标准的,那也是三个很好的习于旧贯。小小的说贝拉米下,固然网站不是大批量应用 Session 类,基本上就没须求运用 SESSION 类了。

至于在 PHP 中利用 SESSION 值是很简单的,只要在上方提前输入 session_start() 开端对话就能够,上边就能够开展利用 SESSION 了,那只是小网址的利用措施,实际上,SESSION 本人还应该有非常多质量,比方SESSION周期,调用SESSION,SESSION数据保藏期,SESSION保存,SESSION注销等等,要是有了那个属性,看起来才算是三个相比专门的学问的SESSION应用会话。

 代码如下

下边是一个完好的 Session 类,整合了 Session 最中央的属性值,当中,张开,关闭与清理是顺应php编制程序标准的,那也是一个很好的习贯。小小的说雅培(Karicare)下,假若网址不是大方施用 Session 类,基本上就没须求运用 SESSION 类了。

 <?php
/**
* 文件陈诉 Session类
* =================================================================
* 文件名称 session.class.php
* -----------------------------------------------------------------
* 适用条件: PHP5.2.x / mysql 5.0.x
* -----------------------------------------------------------------
* 作 者 04ie。com
* -----------------------------------------------------------------
* 创造时间 二零零六-2-1
* =================================================================
*/
class Session
{
/**
* session暗中同意有效时间
* @access public
* @var ineger $_expiry
*/
public $_expiry = 3600;
/**
* 有效域名
* @access public
* @var string $_domain
*/
public $_domain = '.phpfamily.cn';
//初始化
public function __construct()
{
ini_set('session.use_trans_id', 0);
ini_set('session.gc_maxlifetime', $this->_expiry);
ini_set('session.use_cookie', 1);
ini_set('session.cookie_path', '/');
ini_set('session.cookie_domain', $this->_domain);
session_module_name('user');
session_set_save_handler(
array(&$this, 'open'),
array(&$this, 'close'),
array(&$this, 'read'),
array(&$this, 'write'),
array(&$this, 'destroy'),
array(&$this, 'gc')
);
session_start();
}
/**
* 打开session
* @access public
* @param string $savePath
* @param string $sName
* @return true
*/
public function open($savePath, $sName)
{
$this->_conn = mysql_connect('localhost', 'root', '');
mysql_select_db('databases');
mysql_query('SET NAMES "utf8"');
return true;
}
/**
* 关闭session
* @access public
* @return bool
*/
public function close()
{
return mysql_close($this->_conn);
}
/**
* 读取session
* @access public
* @param string $sid sessionID
* @return mixed
*/
public function read($sid)
{
$sql = "SELECT data FROM sessions WHERE sessionid='%s'";
$sql = sprintf($sql, $sid);
$res = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($res);
return !$row ? null : $row['data'];
}
/**
* 写入session
* @access public
* @param string $sid sessionID
* @param string $data serialize类别化后的session内容
* @return
*/
public function write($sid, $data)
{
$expiry = time() + $this->_expiry;
$sql = "REPLACE INTO sessions (sessionid,expiratio
n,data) VALUES ('%s', '%d', '%s')";
$sql = sprintf($sql, $sid, $expiry, $data);
mysql_query($sql, $this->_conn);
return true;
}
/**
* 销毁session
* @access public
* @param string $sid sessionID
* @return
*/
public function destroy($sid)
{
$sql = "DELETE FROM sessions WHERE sessionid='%s'";
$sql = sprintf($sql, $sid);
mysql_query($sql, $this->_conn);
return true;
}
/**
* 清理超时session
* @access public
* @param integer $time
* @return
*/
public function gc($time = 0)
{
$sql = "DELETE FROM sessions WHERE expiration < '%d'";
$sql = sprintf($sql, time());
mysql_query($sql, $this->_conn);
mysql_query('OPTIMIZE TABLE sessions');
return true;
}  

复制代码 代码如下:

上边大家再看三个php session购物车类

<?php
/**
* 文件陈说 Session类
* =================================================================
* 文件名称 session.class.php
* -----------------------------------------------------------------
* 适用条件: PHP5.2.x / mysql 5.0.x
* -----------------------------------------------------------------
* 作 者 04ie。com
* -----------------------------------------------------------------
* 创立时间 二〇〇九-2-1
* =================================================================
*/
class Session
{
/**
* session私下认可有效时间
* @access public
* @var ineger $_expiry
*/
public $_expiry = 3600;
/**
* 有效域名
* @access public
* @var string $_domain
*/
public $_domain = '.jb51.net';
//初始化
public function __construct()
{
ini_set('session.use_trans_id', 0);
ini_set('session.gc_maxlifetime', $this->_expiry);
ini_set('session.use_cookie', 1);
ini_set('session.cookie_path', '/');
ini_set('session.cookie_domain', $this->_domain);
session_module_name('user');
session_set_save_handler(
array(&$this, 'open'),
array(&$this, 'close'),
array(&$this, 'read'),
array(&$this, 'write'),
array(&$this, 'destroy'),
array(&$this, 'gc')
);
session_start();
}
/**
* 打开session
* @access public
* @param string $savePath
* @param string $sName
* @return true
*/
public function open($savePath, $sName)
{
$this->_conn = mysql_connect('localhost', 'root', '');
mysql_select_db('databases');
mysql_query('SET NAMES "utf8"');
return true;
}
/**
* 关闭session
* @access public
* @return bool
*/
public function close()
{
return mysql_close($this->_conn);
}
/**
* 读取session
* @access public
* @param string $sid sessionID
* @return mixed
*/
public function read($sid)
{
$sql = "SELECT data FROM sessions WHERE sessionid='%s'";
$sql = sprintf($sql, $sid);
$res = mysql_query($sql, $this->_conn);
$row = mysql_fetch_assoc($res);
return !$row ? null : $row['data'];
}
/**
* 写入session
* @access public
* @param string $sid sessionID
* @param string $data serialize种类化后的session内容
* @return
*/
public function write($sid, $data)
{
$expiry = time() + $this->_expiry;
$sql = "REPLACE INTO sessions (sessionid,expiratio
n,data) VALUES ('%s', '%d', '%s')";
$sql = sprintf($sql, $sid, $expiry, $data);
mysql_query($sql, $this->_conn);
return true;
}
/**
* 销毁session
* @access public
* @param string $sid sessionID
* @return
*/
public function destroy($sid)
{
$sql = "DELETE FROM sessions WHERE sessionid='%s'";
$sql = sprintf($sql, $sid);
mysql_query($sql, $this->_conn);
return true;
}
/**
* 清理超时session
* @access public
* @param integer $time
* @return
*/
public function gc($time = 0)
{
$sql = "DELETE FROM sessions WHERE expiration < '%d'";
$sql = sprintf($sql, time());
mysql_query($sql, $this->_conn);
mysql_query('OPTIMIZE TABLE sessions');
return true;
}

 代码如下

希望本文所述对大家的PHP程序设计有所援救。

<?php
class Cart{
 public function Cart() {
  if(!isset($_SESSION['cart'])){
   $_SESSION['cart'] = array();
  }
 }

您或者感兴趣的篇章:

  • php session_start()关于Cannot send session cache limiter - headers already sent错误化解措施
  • 教你什么样使用php session
  • php中达成标准设置session过期时间的秘诀
  • ThinkPHP中Session用法详解
  • php中使用session制止顾客专擅登入后台的方法
  • php清除和销毁session的点子深入分析
  • PHP SESSION的加码、删除、修改、查看操作
  • PHP中SESSION的吊销与解除

 /*
 增多商品
 param int $id 商品主键
    string $name 商品名称
    float $price 商品价位
    int $num 购物数量
 */
 public  function addItem($id,$name,$price,$num,$img) {
  //假如该商品已存在则一贯加其数据
  if (isset($_SESSION['cart'][$id])) {
   $this->incNum($id,$num);
   return;
  }
  $item = array();
  $item['id'] = $id;
  $item['name'] = $name;
  $item['price'] = $price;
  $item['num'] = $num;
  $item['img'] = $img;
  $_SESSION['cart'][$id] = $item;
 }

 /*
 修改购物车中的商品数量
 int $id 商品主键
 int $num 某商品修改后的数量,即直接把某商品
 的数码改为$num
 */
 public function modNum($id,$num=1) {
  if (!isset($_SESSION['cart'][$id])) {
   return false;
  }
  $_SESSION['cart'][$id]['num'] = $num;
 }

 /*
 商品数量+1
 */
 public function incNum($id,$num=1) {
  if (isset($_SESSION['cart'][$id])) {
   $_SESSION['cart'][$id]['num'] += $num;
  }
 }

 /*
 商品数量-1
 */
 public function decNum($id,$num=1) {
  if (isset($_SESSION['cart'][$id])) {
   $_SESSION['cart'][$id]['num'] -= $num;
  }

  //如若收缩后,数量为0,则把那么些商品删掉
  if ($_SESSION['cart'][$id]['num'] <1) {
   $this->delItem($id);
  }
 }

 /*
 删除商品
 */
 public function delItem($id) {
  unset($_SESSION['cart'][$id]);
 }
 
 /*
 获取单个商品
 */
 public function getItem($id) {
  return $_SESSION['cart'][$id];
 }

 /*
 查询购物车中物品的体系
 */
 public function getCnt() {
  return count($_SESSION['cart']);
 }
 
 /*
 查询购物车中货品的个数
 */
 public function getNum(){
  if ($this->getCnt() == 0) {
   //种数为0,个数也为0
   return 0;
  }

  $sum = 0;
  $data = $_SESSION['cart'];
  foreach ($data as $item) {
   $sum += $item['num'];
  }
  return $sum;
 }

 /*
 购物车中货色的总金额
 */
 public function getPrice() {
  //数量为0,价钱为0
  if ($this->getCnt() == 0) {
   return 0;
  }
  $price = 0.00;
  foreach ($this->items as $item) {
   $price += $item['num'] * $item['price'];
  }
  return sprintf("%01.2f", $price);
 }

 /*
 清空购物车
 */
 public function clear() {
  $_SESSION['cart'] = array();
 }
}

本文由金沙澳门官网送注册58发布于关于计算机,转载请注明出处:购物车类

关键词: