suchen
HeimBackend-EntwicklungPHP-Tutorialphp SESSION类(购物车类)_PHP教程

php SESSION类(购物车类)_PHP教程

Jul 13, 2016 am 10:43 AM
phpsessionDingunsJa比较Gebraucht购物车

SESSION是php中一个比较常用的东西了,我们经常把它用作记录全局页面信息,如果用户登录,后台管理,还有一个常用的就中购物车类了,下面我来给大家介绍一下。

关于 SESSION 在 php 中的应用是必不要少的,最重要的功能之一,SESSION 在网络应用中,称为“会话”,我们通常理解为存储特定用户会话所需的信息,这样,当用户在网站页面之间跳转时,存储的 SESSION 值不会丢失,而是在整个用户会话中一直存活下去。通俗一点讲,就是当用户A上网时,会创建一个ID(a)值进行保存下来,如果你的ID(A)值没有进行注销,下次上网时,这个网站还会记得你的ID(A)值,这个时候就可以在网上进行调用你的ID(A)值了,比如欢迎您ID(A)值再一次访问。

关于在 PHP 中应用 SESSION 值是很简单的,只要在顶端提前输入 session_start() 开始会话即可,下面就可以进行使用 SESSION 了,这只是小网站的应用方法,实际上,SESSION 自身还有许多属性,比如 SESSION周期,调用SESSION,SESSION数据有效期,SESSION保存,SESSION注销等等,如果有了这些属性,看起来才算是一个比较规范的SESSION应用会话。

下面是一个完整的 Session 类,整合了 Session 最基本的属性值,其中,打开,关闭与清理是符合php编程规范的,这也是一个很好的习惯。小小的说明一下,如果网站不是大量使用 Session 类,基本上就没必要使用 SESSION 类了。

 代码如下 复制代码


  /**
* 文件描述 Session类
* =================================================================
* 文件名称 session.class.php
* -----------------------------------------------------------------
* 适用环境: PHP5.2.x / mysql 5.0.x
* -----------------------------------------------------------------
* 作 者 04ie。com
* -----------------------------------------------------------------
* 创建时间 2010-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 $sql = sprintf($sql, time());
mysql_query($sql, $this->_conn);
mysql_query('OPTIMIZE TABLE sessions');
return true;
}
 

下面我们再看一个php session购物车类

 代码如下 复制代码

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

 /*
 添加商品
 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']    $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();
 }
}

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/633150.htmlTechArticleSESSION是php中一个比较常用的东西了,我们经常把它用作记录全局页面信息,如果用户登录,后台管理,还有一个常用的就中购物车类了,下...
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Jenseits des Hype: Beurteilung der Rolle von PHP heute heuteJenseits des Hype: Beurteilung der Rolle von PHP heute heuteApr 12, 2025 am 12:17 AM

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

Was sind schwache Referenzen in PHP und wann sind sie nützlich?Was sind schwache Referenzen in PHP und wann sind sie nützlich?Apr 12, 2025 am 12:13 AM

In PHP werden schwache Referenzen in der WeaPreference -Klasse implementiert und verhindern nicht, dass der Müllsammler Objekte zurückerobern. Schwache Referenzen eignen sich für Szenarien wie Caching -Systeme und Event -Hörer. Es ist zu beachten, dass es das Überleben von Objekten nicht garantieren kann und dass die Müllsammlung möglicherweise verzögert wird.

Erklären Sie die __invoke magische Methode in PHP.Erklären Sie die __invoke magische Methode in PHP.Apr 12, 2025 am 12:07 AM

Mit der \ _ \ _ -Invoke -Methode können Objekte wie Funktionen bezeichnet werden. 1. Definieren Sie die Methode \ _ \ _, damit das Objekt aufgerufen werden kann. 2. Bei Verwendung der Syntax $ OBJ (...) wird PHP die Methode \ _ \ _ aufrufen. 3.. Geeignet für Szenarien wie Protokollierung und Taschenrechner, Verbesserung der Codeflexibilität und Lesbarkeit.

Erklären Sie Fasern in PHP 8.1 für die Parallelität.Erklären Sie Fasern in PHP 8.1 für die Parallelität.Apr 12, 2025 am 12:05 AM

Fasern wurde in Php8.1 eingeführt, wodurch die gleichzeitigen Verarbeitungsfunktionen verbessert wurden. 1) Fasern ist ein leichtes Parallelitätsmodell, das Coroutinen ähnelt. 2) Sie ermöglichen es den Entwicklern, den Ausführungsfluss von Aufgaben manuell zu steuern, und eignen sich zum Umgang mit E/O-intensiven Aufgaben. 3) Die Verwendung von Fasern kann effizientere und reaktionsschnelle Code schreiben.

Die PHP -Community: Ressourcen, Unterstützung und EntwicklungDie PHP -Community: Ressourcen, Unterstützung und EntwicklungApr 12, 2025 am 12:04 AM

Die PHP -Community bietet umfangreiche Ressourcen und Unterstützung, um Entwicklern zu helfen, zu wachsen. 1) Zu den Ressourcen gehören offizielle Dokumentation, Tutorials, Blogs und Open -Source -Projekte wie Laravel und Symfony. 2) Die Unterstützung kann durch Stackoverflow-, Reddit- und Slack -Kanäle erhalten werden. 3) Entwicklungstrends können durch Befolgung von RFC gelernt werden. 4) Die Integration in die Community kann durch aktive Teilnahme, Beitrag zum Code und Lernfreigabe erreicht werden.

PHP vs. Python: Verständnis der UnterschiedePHP vs. Python: Verständnis der UnterschiedeApr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP: Stirbt es oder passt es sich einfach an?PHP: Stirbt es oder passt es sich einfach an?Apr 11, 2025 am 12:13 AM

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

Die Zukunft von PHP: Anpassungen und InnovationenDie Zukunft von PHP: Anpassungen und InnovationenApr 11, 2025 am 12:01 AM

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.