Определение своего текущего динамического IP из внешней сети

Здесь описан механизм самостоятельного определения своего внешнего динамического IP адреса, использованный в этом решении.

На сайте, где необходимо знать текущий динамический IP адрес определенного компьютера, размещен следующий скрипт на PHP (этот скрипт написан на скорую руку для интеграции в CMS Drupal с использованием его функций), который размещен в корне сайта и назван script.php:

Цитата:
<?php

include_once 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);

if ($_GET['ключ'] == 'значение') { //"секретный" ключ, который надо указать в параметрах URL. При его (ключа) несовпадении запись в таблицу не производится, а выводится значение последней записи.

db_query("INSERT INTO htpc VALUES('%s', unix_timestamp(), '%s')", $_SERVER['REMOTE_ADDR'], $_GET['name']); //фиксируется именно внешний IP адрес устройства, смотрящего "в мир" - чаще всего это роутер, через который происходит доступ в интернет

db_query("DELETE FROM zvin_htpc_adr where timestamp < (unix_timestamp() - 1209600)"); //удаляет из таблицы записи, старее 2-х недель

echo $_SERVER['REMOTE_ADDR'];
}
else {
echo 'Record not added';
$lastserver = db_fetch_array(db_query("SELECT address, server_name, from_unixtime(timestamp + 25200) AS time FROM htpc ORDER BY timestamp DESC LIMIT 0,1"));
printf("Last record:Time (Kiev): %sIP address: %sServer name: %s", $lastserver['time'], $lastserver['address'], $lastserver['server_name']);
}

?>

Запись производится в следующую таблицу:

Цитата:
CREATE TABLE `htpc` (
`address` varchar(20) NOT NULL,
`timestamp` int(11) NOT NULL,
`server_name` varchar(20) default NULL,
PRIMARY KEY (`timestamp`),
UNIQUE KEY `timestamp` (`timestamp`),
KEY `server_name` (`server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

На компьютере, который должен сообщать свой внешний адрес на сайт, необходимо скачать и распаковать бесплатное приложение cURL. (В примере ниже cURL расположен в папке "C:\admin\curl") Затем надо перейти в "Пуск" - "Панель управления" - "Администрирование" - "Планировщик заданий" и добавить задание "Запуск программы" со следующей строкой запуска: "C:\admin\curl\curl.exe http://example.com/script.php?ключ=значение&name=желаемое_имя_компьютера_для_записи_в_таблицу_сайта" и настроить переодичность его выполнения. Все - теперь компьютер будет по заданному графику "дергать" скрипт на сайте, который будет писать в таблицу время запроса и текущий внешний IP адрес компьютера, по которому к нему можно обратиться из внешней сети.


Re: Определение своего текущего динамического IP из внешней сети

А зачем это лишнее действие в данном случае? Ведь там происходит все тоже самое, что и у меня, только эта информация не пишется в БД, а выводится на экран.

Re: Определение своего текущего динамического IP из внешней сети

внешний IP легко определяется тут http://dns-ip.ru/Home/MoreInfo. также тут много еще полезной информации.

Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can use BBCode tags in the text.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Больше информации о возможностях форматирования

CAPTCHA
Этот вопрос задается для проверки того, не является ли обратная сторона программой-роботом (для предотвращения попыток автоматической регистрации).