echo 'Ваш город ' . $city . '.'; var_dump($city); } // конец примера echo '<hr/>'; echo '<p style="color:blue;">Расширенные данные полученные из ipgeobase:</p>'; echo '<pre>'; echo 'Все данные: ' . "\n"; print_r($data); echo '</pre>'; // также данный класс можно использовать для получения и проверки валидности реального ip адреса посетителя $city = $geo->get_value('city', true); // получаем название города echo 'Достаем город<br />'; echo $city . '<br />'; $ip = $geo->get_ip(); // получаем ip адрес echo 'Достаем IP<br />'; echo $ip . '<br />'; if ($geo->is_valid_ip($ip)) { echo 'IP адрес валиден'; } else { echo 'IP адрес не валиден'; } // Пробуем достать данные из куки //echo "<hr/>Данные из Cookie<br/>"; echo '<hr/><p style="color:blue;">Сохраненные данные из Cookie</p>'; if (isset($_COOKIE['geobase'])) { echo '<p style="color:green">В cookie содержатся гео-данные. Можно их использовать без повторного запроса к ipgeobae!</p>'; $geobase = $_COOKIE['geobase']; echo '<pre>';
function is_valid_ip($ip = null) { if (preg_match("#^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\$#", $ip)) { return true; } // если ip-адрес попадает под регулярное выражение, возвращаем true return false; // иначе возвращаем false } } header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0,pre-check=0"); header("Cache-Control: max-age=0"); header("Pragma: no-cache"); header("Content-type: text/javascript"); $o = array(); $o['charset'] = 'utf-8'; //$o['ip'] = '213.149.3.180'; // для тестирования $geo = new Geo($o); $data = $geo->get_value(false, false); // print ("var client = {lat:0,lon:0,ip:''};\n"); if (count($data) > 0 && $data['lat'] != '' && $data['lon'] != '') { print "var clientLat = " . $data['lat'] . ";\n"; print "var clientLon = " . $data['lon'] . ";\n"; } else { print "var clientLat = 0;\n"; print "var clientLon = 0;\n"; } print "var clientIp = '" . $geo->get_ip() . "';\n";
/** * Сохранение голоса в БД * @param $id * @param $item * @param array $free * * @return int|bool */ function saveVote($id, $item, $free) { $catalog = get('catalog', array(), 'p'); sql_query('BEGIN'); include_once PATH_COMMON . '/classes/geo.php'; $geo = new Geo(array('dbname' => $this->geo_dbname, 'tablename' => $this->geo_tablename)); $real_ip = $geo->get_ip(); $ip_data = $geo->get_value(); $columns = sql_getRows("SHOW COLUMNS FROM `" . $this->table_users . "`", true); if (!isset($columns['region'])) { sql_query("ALTER TABLE `" . $this->table_users . "` ADD region VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['city'])) { sql_query("ALTER TABLE `" . $this->table_users . "` ADD city VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['district'])) { sql_query("ALTER TABLE `" . $this->table_users . "` ADD district VARCHAR( 255 ) NOT NULL;"); } if (!isset($columns['country'])) { sql_query("ALTER TABLE `" . $this->table_users . "` ADD country VARCHAR( 255 ) NOT NULL;"); } // Добавим в список нового проголосовавшего $user_id = sql_insert($this->table_users, array('id_survey' => $id, 'ip' => $real_ip, 'city' => $ip_data['city'], 'region' => $ip_data['region'], 'district' => $ip_data['district'], 'country' => $ip_data['country'])); if (!is_int($user_id)) { sql_query('ROLLBACK'); return false; } touch_cache($this->table_users); // Если пришли оветы в свободной форме if ($free) { foreach ($item as $val) { foreach ($val as $k => $id_var) { if (array_key_exists($id_var, $free)) { $_id = sql_insert($this->table_free, array('id_variant' => (int) $id_var, 'id_user' => $user_id, 'text' => $free[$id_var])); if (!is_int($_id)) { sql_query('ROLLBACK'); return false; } touch_cache($this->table_free); } } } } // Список вопросов $rows = sql_getRows("SELECT id FROM " . $this->table_quests . " WHERE id_survey=" . $id); // Запишем результат в лог foreach ($rows as $k => $v) { foreach ($item[$v] as $variant) { $_id = sql_insert($this->table_log, array('id_survey' => $id, 'id_quest' => $v, 'id_variant' => $variant, 'id_user' => $user_id, 'text' => isset($free[$variant]) ? $free[$variant] : '')); if (!is_int($_id)) { sql_query('ROLLBACK'); return false; } touch_cache($this->table_log); } foreach ($catalog[$v] as $k => $variant) { $_id = sql_insert($this->table_log, array('id_survey' => $id, 'id_quest' => $v, 'id_variant' => $k, 'id_user' => $user_id, 'text' => $variant)); if (!is_int($_id)) { sql_query('ROLLBACK'); return false; } touch_cache($this->table_log); } } $query = 'UPDATE ' . $this->table . ' SET answ_cnt=answ_cnt+1 WHERE id =' . $id; sql_query($query); touch_cache($this->table); sql_query('COMMIT'); return $user_id; }
public function getClientIP() { $o = array(); $geo = new Geo($o); return $geo->get_ip(); }