Как Вы обнаруживаете страну посетителя веб-сайта (А именно, США или не)?

Я должен показать различные ссылки для американских и неамериканских посетителей моего сайта. Это для удобства только, таким образом, я не ищу супервысокую степень точности, и безопасность или спуфинг не являются беспокойством.

Я знаю, там геопредназначаются для сервисов и списков, но это походит на излишество, так как я только должен определить (примерно), если человек находится в США или нет.

Я думал об использовании JavaScript получать часовой пояс пользователя, но это, кажется, только дает смещение, таким образом, у пользователей в Канаде, Мексике и Южной Америке было бы то же значение как люди в США.

Есть ли какие-либо другие биты информации, доступной или в JavaScript или в PHP, за исключением захвата IP-адреса и выполнения поиска, для определения этого?

34
задан David Smith 28 January 2010 в 16:49
поделиться

4 ответа

Вызов SCOPE_IDENTITY () не рассматривается как находящийся в той же «области», что и выполняемая команда INSERT.

По существу, необходимо изменить строку

string sqlQuery = "INSERT INTO videos(" + sqlColumnNames + ") VALUES(" + sqlInsertValues + ");";

на

string sqlQuery = "INSERT INTO videos(" + sqlColumnNames + ") VALUES(" + sqlInsertValues + "); SELECT SCOPE_IDENTITY() AS [lastInsertedVideoId]";

, а затем вызвать

int lastVideoInsertedId = Convert.ToInt32(sqlCmd.ExecuteScalar());

вместо .ExecureNonQuery и блока кода после комментария «//getting last inserted video id ».

-121--4780231-

В объявлении, таком как const * const T , первый const (перед * ) означает, что указатель указывает на - const (т.е. это указатель на const ). const после * означает, что сам указатель равен const (т.е. не может быть изменен для указания на что-либо другое).

Можно считать объявление из объекта, объявленного вне, поэтому const unsigned char * const buffer считывается как: «буфер является указателем const на символ const unsigned» (именно поэтому const следует всегда помещать после того, что он изменяет - с помощью него прежде, вы должны переставить вещи, чтобы сделать предложение - с помощью него, объявленного как неподписанный char const * const буфер , перевод на английский является простым и простым (или, возможно, «прямолинейный», поскольку в данном случае вы читаете справа налево).

-121--2755505-

Есть некоторые бесплатные услуги, которые позволяют вам сделать страну и ip-геолокализацию со стороны клиента.

Я использовал wipmania бесплатный сервис JSONP, это действительно просто использовать:

<script type="text/javascript">
  // plain JavaScript example
  function jsonpCallback(data) { 
    alert('Latitude: ' + data.latitude + 
          '\nLongitude: ' + data.longitude + 
          '\nCountry: ' + data.address.country); 
  }
</script>
<script src="http://api.wipmania.com/jsonp?callback=jsonpCallback"
        type="text/javascript"></script>

Или если вы используете рамку, поддерживающий JSONP, как jQuery вы можете:

// jQuery example
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) { 
  alert('Latitude: ' + data.latitude + 
        '\nLongitude: ' + data.longitude + 
        '\nCountry: ' + data.address.country); 
});

Проверьте приведенный выше фрагмент, работающий здесь .

48
ответ дан 27 November 2019 в 16:46
поделиться

Лучшим индикатором, вероятно, является заголовок HTTP Accept-Language. Он будет выглядеть примерно так, как показано ниже в HTTP-запросе:

GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MDDC; OfficeLiveConnector.1.4; OfficeLivePatch.0.0; .NET CLR 3.0.30729)
Accept-Encoding: gzip, deflate
Host: www.google.com
Connection: Keep-Alive

Вы должны получить его в PHP, используя следующее:

<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
?>
6
ответ дан 27 November 2019 в 16:46
поделиться

Я бы сказал, что геотаргетинг - единственный метод, даже отдаленно надежный. Но есть и такие случаи, когда это совсем не помогает. Я постоянно попадаю на сайты, которые думают, что я во Франции, потому что там находится костяк моей компании и через него проходит весь интернет-трафик.

Заголовка HTTP Accept Header недостаточно для определения локали пользователя. Он только говорит вам о том, какой язык выбрал пользователь, что может не иметь никакого отношения к тому, где он находится. Подробнее об этом здесь .

3
ответ дан 27 November 2019 в 16:46
поделиться

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

Вот действительно простой пример того, как это сделать:

http://unmissabletokyo.com/country-detector

1
ответ дан 27 November 2019 в 16:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: