Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: php и локальная сеть
 
 автор: Антоха   (15.12.2006 в 02:41)   письмо автору
 
 

Здраствуйте. Хотел по интересоваться. Возможно ли при обращении кого-то на мою страницу, вытащить (не только его ip), но и сетевое имя. Или на php такого не удастся сделать?
Спасибо.

   
 
 автор: tuder   (15.12.2006 в 06:58)   письмо автору
 
   для: Антоха   (15.12.2006 в 02:41)
 

У меня так. Если кто-то из локалки - считать адрес.

   if (substr($REMOTE_ADDR, 0, 10)=="192.168.1.") {
      $name=gethostbyaddr($REMOTE_ADDR);
   }


Но чревато тормозами.

   
 
 автор: Антоха   (16.12.2006 в 18:27)   письмо автору
 
   для: tuder   (15.12.2006 в 06:58)
 

Странно, но
substr($REMOTE_ADDR, 0, 10)=="192.168.1."

не работает.

$name=gethostbyaddr($REMOTE_ADDR);

работает.
Спасибо за ответ.

Но интересно, почему же substr() не работает?

   
 
 автор: Trianon   (16.12.2006 в 18:39)   письмо автору
 
   для: Антоха   (16.12.2006 в 18:27)
 

а зачем строку с адресом ограничивать десятью символами? А если там больше?

   
 
 автор: Антоха   (16.12.2006 в 19:19)   письмо автору
 
   для: Trianon   (16.12.2006 в 18:39)
 

>а зачем строку с адресом ограничивать десятью символами? А если там больше?
Тут вроде всё правильно, мы ведь проверяем если ip начинается с 192.168.1. , тогда только выполняем код, а цифр конечно же больше (локалка работает в диапазоне 192.168.1.[0-255]).
Понял почему не работает у меня
<?php
 substr
($REMOTE_ADDR010)=="192.168.1.";
?>

Почему то не работают переменные окружения, например:
<?php
echo $DOCUMENT_ROOT;  //ничего не выдает
echo $REMOTE_ADDR;  //ничего не выдает
?>

хотя phpinfo() - работает.
Может php.ini надо настроить или что-нить другое сделать?
А если делать так
<?php
 substr
($_SERVER['REMOTE_ADDR'], 010)=="192.168.1.";
?>

то работает

   
 
 автор: Trianon   (16.12.2006 в 19:34)   письмо автору
 
   для: Антоха   (16.12.2006 в 19:19)
 

>Почему то не работают переменные окружения, например:
>echo $DOCUMENT_ROOT; //ничего не выдает
>echo $REMOTE_ADDR; //ничего не выдает


Я таких переменных не знаю. Я знаю суперглобальный массив $_SERVER, чего и Вам желаю.

   
 
 автор: Антоха   (16.12.2006 в 19:43)   письмо автору
 
   для: Trianon   (16.12.2006 в 19:34)
 

Раньше на пхп4 $DOCUMENT_ROOT и $REMOTE_ADDR -работали, поставил пхп5, теперь не работают. Значит, или я что-то не доделал при установки пхп5 или теперь надо использовать суперглобальный массив $_SERVER.

   
 
 автор: Антоха   (16.12.2006 в 20:01)   письмо автору
 
   для: Антоха   (16.12.2006 в 19:43)
 

Вот теперь на ум мне пришло еще кое-что.
Люди добрые, вы не знаете как бы мне просканировать всю сеть, на наличие работающих компов в данный момент. Я конечно и сам предполагаю как его написать, но нужно, чтобы скрипт как-то мгновенно определял, если, например ip - 192.168.1.135 не отвечает перерейти к следующему ip. В общем, нуно быстро просканировать диапазон 192.168.1.[0-255] и выдать результат.

   
 
 автор: cheops   (17.12.2006 в 00:25)   письмо автору
 
   для: Антоха   (16.12.2006 в 19:43)
 

Дело в том, что в PHP 5 по умолчанию отключена директива register_globals - её нужно либо включить, а лучше сразу использовать суперглобальный массив $_SERVER, так как директиву register_globals исключат в PHP 6. Подробнее о массиве можно почитать в статье http://www.softtime.ru/info/articlephp.php?id_article=69.

   
 
 автор: Антоха   (17.12.2006 в 07:16)   письмо автору
 
   для: cheops   (17.12.2006 в 00:25)
 

Спасибо учту.

   
 
 автор: Антоха   (17.12.2006 в 07:21)   письмо автору
 
   для: Антоха   (17.12.2006 в 07:16)
 

Ну, а кто-нибудь поможет мне с вопросом, который я задавал:
Нуно быстренько просканировать ip-ки (диапазон 192.168.1.[0-255]), на наличие работающих компов в данный момент.
Спасибо.

   
 
 автор: cheops   (17.12.2006 в 13:29)   письмо автору
 
   для: Антоха   (17.12.2006 в 07:21)
 

Быстренько вряд ли получится... если ли на этих машинах какой-то открытый порт?

   
 
 автор: Антоха   (17.12.2006 в 15:30)   письмо автору
 
   для: cheops   (17.12.2006 в 13:29)
 

Я точно не знаю. Можно наверное проверят по 139 или 445.
Запускаю cmd.exe. Пишу netstat -an 4
Захожу на любой комп, допустим под именем XXX.
В ком. строке высвечивается:
TCP 192.168.1.135:3799 192.168.1.201:139 TIME_WAIT
Где
192.168.1.135:3799 - мой комп
192.168.1.201:139 - XXX комп
Так что может 139 попробовать? Или уж объясните, как определить открытый порт.
Интересно, а как тогда ping работает?
Он ведь тоже наверное по какому-то порту отправляет пакеты?

   
 
 автор: Саня   (17.12.2006 в 15:54)   письмо автору
 
   для: Антоха   (17.12.2006 в 15:30)
 

Для быстренькой проверки используйте программу LanScope.

   
 
 автор: Антоха   (17.12.2006 в 16:18)   письмо автору
 
   для: Саня   (17.12.2006 в 15:54)
 

Программа - это конечно хорошо, но хотелось бы "самому" написать скриптик, чтобы знать как всё работает. А прогу (я считаю) нужно устанавливать если твой код/скрипт очень медленно работает или если это не возможно сделать данным языком программирования.
Все-таки, самому приятнее будет, если это твой код/скрипт.
Так шо, если на пхп такую задачку нельзя сделать или сделать, но с большими жертвами чего-либо, то я только "ЗА" использование определенной программы.
В общем буду ждать, может кто-нибудь сможет мне помочь.

   
 
 автор: cheops   (17.12.2006 в 16:22)   письмо автору
 
   для: Антоха   (17.12.2006 в 16:18)
 

Вы можете запускать любую другую программу из скрипта, правда она должна возвращать результаты работы в стандартный поток вывода, т.е. быть консольной... можно использовать утилиту ping, но она достаточно долго гоняет пакеты.
<?php 
  
echo `ping 127.0.0.1`;
?>

   
 
 автор: z0rg   (17.12.2006 в 23:56)   письмо автору
 
   для: Антоха   (17.12.2006 в 16:18)
 

php не для этих целей, так что не стоит изобретать ручку для космоса со удержанием давления когда можно использовать простой карандаш....

   
 
 автор: Антоха   (18.12.2006 в 11:53)   письмо автору
 
   для: z0rg   (17.12.2006 в 23:56)
 

Ну ладно, буду тогда использовать ping.
Где-то уходит минута на проверку диапазона 192.168.1.[0-255]
В принципе не так критично, при том что результаты выдаются приблизительно каждые 5 сек, так что эффекта зависания нет.

Еще бы сразу выдавать результаты при каждом проходе цикла, а ни копить в буфере (echo).
Может кто-нибудь знает как это сделать.
Пробовал применять flush() - че то не работает.
<?php
for($i 1$i 255$i++) {
    echo `
ping 192.168.1.$i -n 1 -l 1 -w 1`;
    
flush();
}
?>

Наверное неправильно делаю?

   
 
 автор: Shest   (15.12.2006 в 07:08)   письмо автору
 
   для: Антоха   (15.12.2006 в 02:41)
 


//Адрес подсети, может быть недоступна
$subnet=getenv(HTTP_FORWARDED_FOR);

   
 
 автор: Антоха   (17.12.2006 в 09:40)   письмо автору
 
   для: Shest   (15.12.2006 в 07:08)
 

Ну может кто-нибудь даст ответ?

   
 
 автор: PHP 5.2.0   (18.12.2006 в 13:51)
 
   для: Антоха   (17.12.2006 в 09:40)
 

Подскажите установил PHP5 перестали объявляться глобальные переменные. Т.е. запись вида

<?
echo $_GET['var'];
?>

вернет значение переменной var, когда как

<?
$var 
$_GET['var'];
echo 
$var;
?>

возвращает пустое значение.

   
 
 автор: Антоха   (18.12.2006 в 16:00)   письмо автору
 
   для: PHP 5.2.0   (18.12.2006 в 13:51)
 

Автор: PHP 5.2.0 - Ты зачем пишешь вопросы в моей теме. Пожалуйста создай новую тему и опиши там свой вопрос. Тебе же лучше будет, быстрее ответят.
А эту тему можно закрывать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования