php - 将用户购物篮连接到他们的用户帐户? PHP

标签 php mysql e-commerce shopping-cart

我对如何做到这一点感到困惑。假设用户在我的电子商务网站上创建了一个帐户,然后开始将产品添加到他们的购物篮中。如果我将用户的用户名和密码存储在数据库表中,并使用 session /cookie 来管理他们购物篮中的产品,我需要做什么才能将用户的购物篮连接到他们的帐户,以便当他们登录时他们将能够看到他们之前存储的项目?

我是否首先允许用户登录,查询他们是否登录成功,然后为他们的用户名创建一个 session /cookie 变量?或者我是否必须将用户购物车项目存储在数据库中并将其与用户帐户表连接?

我对如何将购物篮中的元素存储到表格中感到困惑。这甚至是正确的方法吗?

还没有代码,我想在开始编码之前正确创建数据库,只需要一些建议。谢谢

最佳答案

如果您有两张表,一张用于用户,一张用于元素,您可以执行如下操作。

通过在序列化数组中添加和删除 item_id 来管理当前的购物篮商品,您可以将其同时存储在用户表和 session 中,使它们保持同步。例如,如果用户是第一次访问您的商店(未登录且购物篮为空),您可以像这样创建 session 。

session_start();

我们开始 session 。

if (isset($_SESSION['current_basket']) {
    $current_basket = unserialize($_SESSION['current_basket']);
} else {
    $current_basket = array();
}

因为这是我们的访问者第一次访问我们的页面, session 变量 current_basket 将不会被设置,这意味着上面的 if 语句将不会运行,而只是在名为 current_basket 的变量中创建一个空的 PHP 数组。

现在,当访问者将商品添加到购物车时,我们只需要该商品在您的数据库中的 ID 并将其添加到 current_basket 数组中。

$current_basket[] = $item_id;

然后我们立即用新数组更新 session 变量,并在此过程中对其进行序列化。

$_SESSION['current_basket'] = serialize($current_basket);

您现在有一个适当的、可用的数组,其中包含该人购物篮的所有产品 ID。

现在,让我们假设用户已登录。我们会检查这一点,然后再添加一个步骤。

$sql = "UPDATE users SET current_basket=" . serialize($current_basket) . " WHERE id=$user_id"
// Execute that query.

现在相同的数组在数据库中,然后您可以在用户登录时将其提取并设置为 session 变量。

您可以在每次添加或删除产品时运行这一系列步骤,使其在 session 和数据库中保持更新。

为了便于解释,这显然是一个非常淡化的概念。显然,您需要更好地管理阵列。例如,如果产品已经存在,则不将其添加到购物篮中,从数组中删除项目等。

关键是序列化数组,并始终存储在 session 中,如果用户已登录,则存储在用户表中。

然后当用户返回并登录时,您可以使用数据库中的数组为他们设置 session 中的数组,从他们上次访问您的站点开始。

关于php - 将用户购物篮连接到他们的用户帐户? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531774/

相关文章:

php - 为什么 PHP 不处理我的 PHP 脚本?

php - 将返回多个平均值的 SQL 查询

php - 转换MySQL字段中的二进制(16)数据

mysql - 在 MySQL 中,跟踪表中更改(添加列)的时间戳的最佳方法是什么?

php - 销售每月在线服务

codeigniter - 检索 IPN 响应时使用 Codeigniter 的 PayPal IPN 问题

php - 如何显示前 3 里 100% 和每行 2 里 33.33% 宽度?

php - 散列密码 PHP mySQLI

php - SSL 加密问题

javascript - 如何使用 Accept.js 获取两个独立的随机数?