在结帐过程中,用户可能会在意识到他们应该登录之前开始填写邮寄/结算表格 - 如果他们是回头客。 (它是顶部的高亮区域告诉他们这样做,但你不能确定他们使用它。)
场景如下:
用户正在退房。他们开始填写表格。然后他们记得他们已经在公司有账户,或者注意到顶部的“登录”通知,然后登录。
现在,当用户登录时,我们希望为返回的客户填充表单以使流程更快,但我们不想覆盖用户已输入的任何内容。所以我们需要在字段上做一些comapring,然后询问用户是否想要更改或保留。此外,如果没有差异,我们也不会提示用户。
我的第一个问题是将所有非空字段转换为组合字符串,并使用strcasecmp()
将其与数据库中的相等字符串进行比较。但事实证明,php并不认为“y”和“Y”是相同的字母,因此它会产生不匹配。此外,由于这是一个挪威网站,使用北欧字符(例如“æøå”)使得这很难......
关于如何以良好的方式实现这一目标的任何想法?
答案 0 :(得分:0)
我认为最简单的方法是html本地存储,这样如果用户填写表单而不是浏览器将存储数据直到完成形式如stackoverflow.If由于某种原因页面被取消或其他任何原因关闭比你可以获取该数据并使用该数据再次填充表单,以便不会消耗任何时间。这是一种非常好的技术,您可以在本地计算机上存储最多5 MB,而无需任何服务器端调用。
有关详细信息,请参阅此
答案 1 :(得分:0)
当您将非空字段变为组合字符串
时$_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.
}