将用户输入和数据库中存储的数据进行比较,并询问如果不匹配该怎么办


Comparing user input with stored data from database, and ask what to do if they do not match?

在结账过程中,用户可能会在意识到他们应该登录之前就开始填写邮件/账单表单——如果他们是回头客的话(顶部有一个高亮区域,告诉他们这样做,但你不能太确定他们使用了它。)

场景如下:
用户正在签出。他们开始填写表格。然后他们记得自己已经在公司有了账户,或者注意到顶部的"登录"通知,然后登录。
现在,当用户登录时,我们希望为返回的客户填充表单,以加快流程,但我们不希望覆盖用户已经键入的内容。因此,我们需要对字段进行一些比较,然后询问用户是希望更改还是保留。此外,如果没有差异,我们不会提示用户。

我的第一个想法是将所有非空字段合并为一个组合字符串,并使用strcasecmp()将其与数据库中的相等字符串进行比较。但事实证明php并不认为"y"answers"y"是同一个字母,所以它产生了不匹配。此外,由于这是一个挪威网站,使用北欧字符(例如"æøå")使这变得相当困难。。

关于如何以一种好的方式实现这一点,有什么想法吗?

我认为最简单的方法是html本地存储,这样,如果用户填写表单,浏览器就会存储数据,直到完成类似stackerflow的表单。如果由于某种原因页面被取消或其他任何原因关闭,您可以只获取数据并用这些数据再次填写表单,这样就不会浪费时间。这是一种非常好的技术,您可以在本地机器上存储高达5 mb的数据,而无需任何服务器端调用。

有关更多详细信息,请参阅本

html5本地存储

本地存储

当您将非空字段放入组合字符串中时

$_SESSION['checkoutForm_fields'] = $combinedFieldNames; // forexample comma seperated or json_encoded()
$_SESSION['checkoutForm_value'] = md5($combinedString);
// After login complete and you fetch the old values from DB
// get the $_SESSION['checkoutForm_fields'] value and gather the values of these fields from DB lets say $combinedStringFromDB;
if ($_SESSION['checkoutForm_value'] != md5($combinedStringFromDB)) {
    // Do what ever you want.
}