×
Покер бот на Ruby on Rails (12 сен 2018)

Третья ипостась покера на ruby. Искреннее спасибо всем, кто прислал замечания по предыдущим релизам.

Вопрос Геолокция по ip на форуме kunena

Больше
5 года 7 мес. назад #1 от Jannet
Hi, подскажите как сделать чтобы на форуме отображалось , откуда пришел посетитель.

Еще немного - и я всему научусь. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 7 мес. назад - 4 года 3 мес. назад #2 от Aleksej
Aleksej ответил в теме Геолокция по ip на форуме kunena
Скриптов таких, да и модулей - масса, попробуй для начала просто прописать в mod_custom вот такой, скажем, код:

<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>

<br>Country Code:
<script language="JavaScript">document.write(geoip_country_code());</script>
<br>Country Name:
<script language="JavaScript">document.write(geoip_country_name());</script>
<br>City:
<script language="JavaScript">document.write(geoip_city());</script>
<br>Region:
<script language="JavaScript">document.write(geoip_region());</script>
<br>Region Name:
<script language="JavaScript">document.write(geoip_region_name());</script>
<br>Latitude:
<script language="JavaScript">document.write(geoip_latitude());</script>
<br>Longitude:
<script language="JavaScript">document.write(geoip_longitude());</script>
<br>Postal Code:
<script language="JavaScript">document.write(geoip_postal_code());</script>


Результат может получиться примерно таким, как чуть выше этого сообщения, на желтеньком фоне... это не текст, это я реально модуль сюда засунул, все отображенные данные - возвращаются с сервера maxmind. Ну, кроме директа, естесственно.

Ну и стили там, css приложить. Убери ненужное, засунь то, что останется - в модуль и опубликуй в одной из позиций моделей kunena, подробности по ссылке .
Последнее редактирование: 4 года 3 мес. назад пользователем p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 7 мес. назад #3 от serge
serge ответил в теме Геолокция по ip на форуме kunena
Дополню, про maxmind
Прикольный скрипт видел в Сети. У буржуя одного типа два продающих сайта, в америке и в канаде, и он перенаправляет трафик с одного на другой таким вот макаром:

<script language="JavaScript" src="http://j.maxmind.com/app/country.js" type="text/javascript"></script>

<script language="JavaScript" type="text/javascript">// <![CDATA[
if(geoip_country_code() == "CA"){
    document.write("");
    window.location = 'http://www.myCanadaianWebsite.com';
}
// ]]></script>

Появятся сайты в разных частях света когда - берите на вооружение.

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 7 мес. назад #4 от Aleksej
Aleksej ответил в теме Геолокция по ip на форуме kunena
Продолжение темы... вот этот код визуально смотрится вот эдак, велкам по ссылке . Демку разместил в блоге.


<!DOCTYPE>
<html>
<head>
<title>Geo data</title>
<script src="http://maps.google.com/maps?file=api&v=2&amp;sensor=true" type="text/javascript"></script>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>
<script>
google.load("jquery", "1.4.4");
</script>
</head>

<body>
<script type="text/javascript">
$(document).ready(function(){
if(google.loader.ClientLocation) {
// Google has found you
visitor_lat = google.loader.ClientLocation.latitude;
visitor_lon = google.loader.ClientLocation.longitude;
visitor_city = google.loader.ClientLocation.address.city;
visitor_region = google.loader.ClientLocation.address.region;
visitor_country = google.loader.ClientLocation.address.country;
visitor_countrycode = google.loader.ClientLocation.address.country_code;

$("#user_method").html("Google Geo");
$("#user_latlong").html(visitor_lat + " / " + visitor_lon);
$("#user_town").html(visitor_city); $("#user_county").html(visitor_region);
$("#user_country").html(visitor_country + " (" + visitor_countrycode + ")");
}
else {
// Google couldnt find you, Maxmind could
visitor_lat = geoip_latitude();
visitor_lon = geoip_longitude();
visitor_city = geoip_city();
visitor_region_code = geoip_region();
visitor_region = geoip_region_name();
visitor_country = geoip_country_name();
visitor_countrycode = geoip_country_code();
visitor_postcode = geoip_postal_code();

$("#user_method").html("MaxMind");
$("#user_latlong").html(visitor_lat + " / " + visitor_lon);
$("#user_postcode").html(visitor_postcode);
$("#user_town").html(visitor_city); $("#user_county").html(visitor_region + " ("+visitor_region_code+")");
$("#user_country").html(visitor_country + " (" + visitor_countrycode + ")");
}

if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
var latlng = new GLatLng(visitor_lat, visitor_lon);
map.setCenter(latlng, 13);
map.addOverlay(new GMarker(latlng));

var center = latlng;
var radius = 0.65;

//convert kilometers to miles-diameter
var radius = radius*1.609344;
var latOffset = 0.01;
var lonOffset = 0.01;
var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;
// nodes = number of points to create circle polygon
var nodes = 40;
//Loop
var points = [];
var step = parseInt(360/nodes)||10;
for(var i=0; i<=360; i+=step) {
var pint = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), center.lng() + (radius/lngConv * Math.sin(i * Math.PI/ 180)));
// push pints into points array
points.push(pint);
}
var polygon = new GPolygon(points, "#f33f00", 1, 1, "#ff0000", 0.1);
map.addOverlay(polygon);
}
});
</script>
</body>
<div id="geoData">
<table style="width: 560px;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>Geocode Method:</td>
<td><span id="user_method"> </span></td>
</tr>
<tr>
<td>Your Latitude/Longitude:</td>
<td><span id="user_latlong"> </span></td>
</tr>
<tr>
<td>Town / City:</td>
<td><span id="user_town"> </span></td>

</tr>
<tr>
<td>Post Code:</td>
<td><span id="user_postcode"> </span></td>
</tr>
<tr>
<td>Approximate County:</td>
<td><span id="user_county"> </span></td>
</tr>
<tr>
<td>Country and Code:</td>
<td><span id="user_country"> </span></td>

</tr>
<tr>
<td colspan="2">
<div id="map_canvas" style=" margin:10px; border:1px solid #007; width: 540px; height: 360px;">Enable Javascript to view this map</div></td>
</tr>
</tbody>
</table>
</div>


</html>

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 11 мес. назад #5 от Jannet
Jannet ответил в теме Геолокция по ip на форуме kunena

Aleksej пишет: Демку разместил в блоге.


демка перестала работать, и у меня на сайте тоже.

Еще немного - и я всему научусь. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 11 мес. назад #6 от serge
serge ответил в теме Геолокция по ip на форуме kunena

Jannet пишет: демка перестала работать, и у меня на сайте тоже.


вероятно, maxmind перекрыл кислород и бесплатное использование сервиса геолокации maxmind более не доступно. Используйте sypex geo , подробности по ссылке.

Например могу предложить вот этот код: выводит приветствие в зависимости от локального времени пользователя сайта (реализовано на js), название местности, откуда пришел посетитель, и краткие сведения о погоде в местности посетителя (php, используется погодный сервис WWO). Небольшая модификация этого продукта . Не забудьте в самом верху скрипта два раза изменить "path_to.…" и вписать свой "lichnuy_key_wwo":

<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("path_to_SxGeo.php");
$SxGeo = new SxGeo('path_to_SxGeoCity.dat');
$city = $SxGeo->get($ip);

$loc_array = array($city['city']['lat'],$city['city']['lon']);

$api_key="vash_lichnuy_key_wwo"; 
$num_of_days=1; 

$loc_safe = array();
foreach($loc_array as $loc){
$loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

//To add more conditions to the query, just lengthen the url string
$basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));

$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);

$ss = array();
foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{

$ss[$name1] = $val1;
}
}


?>
<script language="JavaScript">
var h=(new Date()).getHours();
if (h > 23 || h <7) document.write("<? echo 'Доброй ночи, ' . $city['city']['name_ru']; ?>");
if (h > 6 && h < 12) document.write("<? echo 'Доброе утро, ' . $city['city']['name_ru']; ?>");
if (h > 11 && h < 19) document.write("<? echo 'Добрый день, ' . $city['city']['name_ru']; ?>");
if (h > 18 && h < 24) document. write("<? echo 'Доброго вечера, ' . $city['city']['name_ru']; ?>"); 
</script>

<?
echo "<br>";
echo " У вас ";
echo "{$ss["temp_C"]} °С";
echo ', ';
echo "скорость ветра {$ss["windspeedKmph"]} м/сек.";
echo $ss["weatherDesc"];
echo '. ';

?>

А я смогу! - А поглядим! - А я упрямый!
Спасибо сказали: Aleksej

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 11 мес. назад - 3 года 11 мес. назад #7 от Aleksej
Aleksej ответил в теме Геолокция по ip на форуме kunena

serge пишет: Например могу предложить вот этот код...]


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

<?php
$ip = $_SERVER['REMOTE_ADDR'];
include("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$city = $SxGeo->get($ip);


$loc_array = array($city['city']['lat'],$city['city']['lon']);

$api_key="vash_api_key"; 
$num_of_days=1; 

$loc_safe = array();
foreach($loc_array as $loc){
    $loc_safe[] = urlencode($loc);
}
$loc_string=implode(',', $loc_safe);

//To add more conditions to the query, just lengthen the url string
$basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days));


$xml_response = file_get_contents($basicurl);
$xml = simplexml_load_string($xml_response);



$ss = array();
foreach ($xml[0] as $name => $val) { 
foreach ($val as $name1 => $val1)
{

$ss[$name1] = $val1;
}
}
?>

<style type="text/css">
.title_weather {
color: #006699;
   }
</style>
<div class="title_weather">
<script language="JavaScript">
var h=(new Date()).getHours();
if (h > 23 || h <7) document.write("<? echo 'Доброй ночи, ' . $city['city']['name_ru']; ?>");
if (h > 6 && h < 12) document.write("<? echo 'Доброе утро, ' . $city['city']['name_ru']; ?>");
if (h > 11 && h < 19) document.write("<? echo 'Добрый день, ' . $city['city']['name_ru']; ?>");
if (h > 18 && h < 24) document. write("<? echo 'Добрый вечер, ' . $city['city']['name_ru']; ?>"); 
</script>
</div>

<?
echo "<br>";
echo '<img src="' . $xml->weather->weatherIconUrl . '"/>';
echo "<br>";
echo "<br>";
echo $ss["date"];
echo "<br>";
echo "Координаты {$ss["query"]}";
echo "<br>";
echo ($city['city']['name_en']);
echo "<br>";
echo ($city['country']['iso']);
echo "<br>";
echo "<br>";
echo "<div style='color:#006699;'> У вас сегодня:</div>";
echo "Температура {$ss["temp_C"]} С";
echo "<br>";
echo "Мин. температура сегодня {$ss["tempMinC"]} С*";
echo "<br>";
echo "Макс. температура сегодня {$ss["tempMaxC"]} С*";
echo "<br>";
echo "Скорость ветра {$ss["windspeedKmph"]} м/сек";
echo "<br>";
echo "Направление ветра {$ss["winddirection"]}";
echo "<br>";
echo "Пасмурно {$ss["cloudcover"]}%";
echo "<br>";
echo "Давление {$ss["pressure"]} mb";
echo "<br>";
echo "Влажность {$ss["humidity"]}%";
echo "<br>";
echo "Видимость {$ss["visibility"]} км";
echo "<br>";
echo $ss["weatherDesc"];
echo "<br>";
Последнее редактирование: 3 года 11 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.