В процессе оформления заказа пользователь может начать заполнять форму рассылки / выставления счетов, прежде чем понять, что ему следует войти в систему — если он является постоянным клиентом. (Это подсвеченная область в верхней части, говорящая им об этом, но вы не можете быть слишком уверены, что они ее используют.)
Сценарий таков:
Пользователь проверяет. Они начинают заполнять форму. Затем они вспоминают, что у них уже есть учетная запись в компании, или замечают уведомление «войти» вверху, а затем входят в систему.
Теперь, когда пользователь вошел в систему, мы хотим заполнить форму для возвращающегося клиента, чтобы ускорить процесс, но мы не хотим перезаписывать то, что пользователь уже набрал. Поэтому нам нужно сделать несколько сопоставлений на полях, а затем спросить, хочет ли пользователь изменить или сохранить. Также мы не хотим подсказать пользователю, если нет никакой разницы.
Сначала я взял все не пустые поля в комбинированную строку и использовал strcasecmp()
сравнить его с равной строкой из базы данных. Но оказывается, что php не думает, что «y» и «Y» — это одна и та же буква, поэтому это приводит к несоответствию. Кроме того, поскольку это норвежский сайт, использование нордических символов (например, «æ ø å») делает это довольно трудным.
Любые идеи о том, как это может быть достигнуто хорошим способом?
Я думаю, что самый простой способ — это html локальное хранилище, так что если пользователь заполняет форму, то браузер будет хранить данные до завершения формы, например stackoverflow. Если по какой-то причине страница была отменена или по какой-либо другой причине закрыта, вы можете просто получить эти данные и снова заполните форму этими данными, чтобы не тратить время. Это очень хорошая методика, которую вы можете хранить на локальном компьютере до 5 МБ без каких-либо вызовов на стороне сервера.
для более подробной информации см. это
Когда вы берете свои не пустые поля в комбинированную строку
$_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.
}