Как получить IP-адрес пользователя, а затем местоположение в форме кэшированного усилителя? - PullRequest
0 голосов
/ 30 апреля 2019

Итак, у меня есть форма AMP, которая, в зависимости от того, где находится пользователь, должна перенаправлять его в разные места. У меня есть установка, которая использует два скрытых поля, например, так:

<input name="ip_address" type="hidden" value="<?php echo getRemoteIPAddress()?>">
<input name="lead_geo" type="hidden" value="<?php echo getGeoByIp()?>">

Наряду с соответствующими функциями, которые, как я знаю, работают правильно, они были опробованы и протестированы на остальной части сайта.

Тогда моя конечная точка настроена с помощью классификатора, например:

if($lead_geo == '' || $lead_geo == 'CA' || $lead_geo == 'AZ' || $lead_geo == 'IL' || $lead_geo == 'TX' || strlen($lead_geo) > 5) {
     header("AMP-Redirect-To: ".$location-specific-destination);
} else {
     header("AMP-Redirect-To: ".$default);
}

И все это прекрасно работает локально, на сцене и на производстве, пока страница усилителя не будет кэширована. Проблема в том, что Google кеширует первый IP-адрес, который его запрашивает. Есть ли способ получить местоположение пользователя на кэшированной стороне? Или даже если бы я мог просто получить их IP-адрес на странице, я бы мог, чтобы конечная точка получила от нее местоположение.

TLDR: Как я могу получить местоположение пользователя или даже просто IP-адрес, когда они отправляют форму AMP.

1 Ответ

2 голосов
/ 30 апреля 2019

Вам необходимо получить IP-адрес пользователя при отправке формы.Кэшированная версия не будет содержать исходную информацию HTTP пользователя.Вам нужно будет получить местоположение на сервере, используя IP-адрес, используя заголовок из отправки формы, а не в самих полях формы (которые теперь недействительны).

...