В принципе в этом скрипте ничего замысловатого нет. Для начала создаются обьекты на форме, конечно это будет сильным отступлением в область веб-дизайна поэтому весь код графических обьектов вы можете взять из приложенного к статье файла. Далее мы создаем переменную и берем данные из тектового поля
$addr = $_POST['Addr'];
После того как мы получили адрес заносим в переменную $ping стандартную системную функцию system с параметрами "ping $addr"
$ping = system("ping $addr");
Уже в переменной $ping хранятся результаты потенциально выполненного действия. Основные действия выполнены, теперь займемся дополнительной функцией вывода результатов в .log файл
$print = $_POST['Print'];
В переменную $pring мы вывели значение обьекта CheckBox на форме (0 выключен, 1 включен) Далее в переменную $results выводим текст, полученный в качестве результата в текстовом поле
$results = $_POST['Text'];
И выводим все это в текстовое поле командой echo $ping После этого идет обрыв php кода и начинается закрытие текстового поля. После анализа кода вы поймете почему. В следующем блоке php кода я написал функцию которая отвечает за вывод результатов в файл. Даже если вы ничего не введи в адресной строке, пинг не произойдет но системная информация с параметрами команды ping все равно будет выведена.
Осталось написать пару обработчиков событий. Сперва я написал обработчик события пинг. Если в адресной строке пусто, скрипт попросит ввести адрес, если нет выведет сообщение об успешно выполненной задаче.
if (empty($ping)) { echo "<H3>Enter the address please!</H3>"; } else { echo "<H3>Pinged succesfully!</H3>"; }
Последний обработчик получает значение из переменной $print и если оно равно 1 начнет выводить результаты в .log
Далее идет благополучное закрытие блока php кода, формы и завершающие страницу теги. P.S. Скрипт написал на английском, потому что в системе возникла проблема с кодировкой юникод. Скрипт очень хотелось выложить. Сразу хочется заметить что я не силен в php, можно сказать доучиваю. Более грамотно и подробно о скриптах знает и может рассказать мой коллега Codeserfer. Благодарю за внимание!
Что-то не получается? Не понятна какая-то часть кода? Напишите комментарий об этом и мы обязательно Вам все объясним! Обязательно напишите отзыв о программе / учебнике. Для выражения благодарностей есть кнопка:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Дело в том что скрипт в данном случае является клиентом, который имеет право отправить команду ping в случае с локальным сервером. Скрипт использует стандартную функцию системы. В случае с сервером сервер становится машиной-клиентом, на которой возможность передачи команды ping запрещена, адрес который мы хотим запинговать становится сервером. Почему была заблокирована стандартная функция system()? Ведь простой пинг не делает ничего плохого? Ответ прост. Несанкционированные операции с пользовательскими файлами, настройками, тот же ping можно запустить на исполнение с параметрами -65000 пакетов в секунду и -t бесконечный пинг. Правильно. Пока мы на своем компьютере слушаем музыку, ваш хостер совершает DDoS аттаку на удаленный сервер. К сожалению альтернативных функций в операционках нет. Преимуществом может являтся если у пользователя есть выделенный ip и возможность построить свой сервер. Благо с сегодняшними linux это не сложно, в принципе виндовый сервер тоже может работать
Ты не совсем понял. Независимо от встроенной в PHP функции system мы так или иначе должны обратится к системной функции операционной системы. Операционной системе не важно на чем был написан алгоритм, если возможность пинговать стандартной командой закрыта по другому ничего не получится. С другой стороны админу сервера требуется эта команда. Это означает что она работает. Это означает что нужны права админа, по другому не получится. Даже если написать скрипт на Perl или любом другом языке который поддерживает сервер, возможность будет скрыта. Разве что есть возможность запустить уже откомпиллированную программу на сервере. Для этого нужен доступ к bash. Вообщем продолжать нет смысла
Тем не менее на сервере все гости кроме админа, если все одновременно или поочередно будут использовать системные команды произойдет большая нагрузка на сервер в целом и превысится лимит использования процессорного времени. Сервер просто ляжет. Админ скорее всего ограничил доступ с хоста к системе в целом. Суперпароль, ограничение root и прочее
Я бы, честно говоря, еще добавил проверку входящих данных. Потому что system () - это не шутка. Не проверишь данные от пользователя, этим смогут воспользоваться. Тут, например, есть проверка входящих данных регулярными выражениями