【问题标题】:PHP how to identify user items in cart for rest apiPHP如何为rest api识别购物车中的用户项目
【发布时间】:2018-03-11 06:41:00
【问题描述】:

我正在为电子商务应用程序在 php 中创建一个基于令牌的 rest api。

场景: 任何访问者都可以在不登录的情况下将商品添加到购物车。这些商品存储在 mysql 数据库的购物车表中,user_id 值默认为 1。 // 由于用户未登录。

问题: 用户登录后,我可以在解码为用户生成的令牌后获取用户 ID,但想知道,我如何识别购物车表中的哪些项目属于哪个用户,以便针对这些产品更新实际用户 ID ?

表格:
customer_id int(11),
item_id        int(11),
数量          int(11),
date_added    日期时间

提前感谢您的帮助!

【问题讨论】:

    标签: php rest authentication cart


    【解决方案1】:

    你根本不能这样做。您显然在数据库中的一个字段在用户登录之前和之后都是相同的。例如,您可以在用户未登录时尝试存储 IP 地址或 MAC 地址。然后当用户登录时,您搜索购物车表上的相同值(在 IP 或 Mac 地址上),并将所有匹配的元素设置为用户 ID。

    无论如何,您显然需要存储一些独特的东西,以便在购物车和用户之间建立关系。

    另一种可能最符合您需求的解决方案是将未识别用户的购物车存储在 cookie 中。然后,当用户登录时,您必须浏览存储在 cookie 中的所有项目,以使用正确的用户 ID 将它们添加到您的数据库中。

    【讨论】:

    • cookie 可以跨域工作吗?另外创建rest api的主要目的是,它也可以用于从移动应用程序中拨打电话。
    【解决方案2】:

    您应该生成一个(临时)标识。我会在您的数据库id 中添加一个自动递增的列。创建数据库后,您可以使用 PDO mysqli_insert_id($conn) 之类的内容检索 id。将该 id 存储在 PHP 会话中,您就拥有了!

    【讨论】:

    • 在创建 rest api 和基于令牌的身份验证时使用 session 是否很好。尝试一下,我正在使用 session_id,但是,在每次请求时,它都会生成一个新的会话 ID。 :(
    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多