Я должен показать различные ссылки для американских и неамериканских посетителей моего сайта. Это для удобства только, таким образом, я не ищу супервысокую степень точности, и безопасность или спуфинг не являются беспокойством.
Я знаю, там геопредназначаются для сервисов и списков, но это походит на излишество, так как я только должен определить (примерно), если человек находится в США или нет.
Я думал об использовании JavaScript получать часовой пояс пользователя, но это, кажется, только дает смещение, таким образом, у пользователей в Канаде, Мексике и Южной Америке было бы то же значение как люди в США.
Есть ли какие-либо другие биты информации, доступной или в JavaScript или в PHP, за исключением захвата IP-адреса и выполнения поиска, для определения этого?
Вызов 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 буфер
, перевод на английский является простым и простым (или, возможно, «прямолинейный», поскольку в данном случае вы читаете справа налево).
Есть некоторые бесплатные услуги, которые позволяют вам сделать страну и 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);
});
Проверьте приведенный выше фрагмент, работающий здесь .
Лучшим индикатором, вероятно, является заголовок 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'];
?>
Я бы сказал, что геотаргетинг - единственный метод, даже отдаленно надежный. Но есть и такие случаи, когда это совсем не помогает. Я постоянно попадаю на сайты, которые думают, что я во Франции, потому что там находится костяк моей компании и через него проходит весь интернет-трафик.
Заголовка HTTP Accept Header недостаточно для определения локали пользователя. Он только говорит вам о том, какой язык выбрал пользователь, что может не иметь никакого отношения к тому, где он находится. Подробнее об этом здесь .
В зависимости от того, какие страны вы хотите различать, часовые пояса могут быть очень простым способом добиться этого - и я полагаю, что это довольно надежно, поскольку у большинства людей часы на компьютерах установлены правильно. (Хотя, конечно, есть много стран, которые нельзя различить с помощью этой техники).
Вот действительно простой пример того, как это сделать: