示例#1
0
    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>';
示例#2
0
    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";
示例#3
0
 /**
  * Сохранение голоса в БД
  * @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;
 }
示例#4
0
 public function getClientIP()
 {
     $o = array();
     $geo = new Geo($o);
     return $geo->get_ip();
 }