| |
?
foreach($check_ips as $check_ip) {
// Если нашли, то $host достоверен — возвращаем его.
if($ip==$check_ip) return $host;
}
// Иначе, если ни один адрес не совпал, выходим
return false;
}
// Теперь посмотрим, что из себя представляет наш адрес...
echo safe_gethostbyaddr("195.84.12.34");
?>
Вот теперь все будет работать корректно. Однако за все приходится платить:
safe_gethostbyaddr() требует гораздо больших затрат времени, чем
gethostbyaddr(), потому что нам приходится дополнительно обращаться еще как
минимум к одной машине. Если безопасность для вас важнее, чем какие-то пара се-
кунд простоя, используйте safe_gethostbyaddr().
ЧАСТЬ V.
ПРИЕМЫ
ПРОГРАММИРОВАНИЯ
НА PHP
Глава 28
Загрузка файлов
на сервер
Иногда бывает просто необходимо позволить пользователю не только заполнить тек-
стовые поля формы и установить соответствующие флажки и радиокнопки, но также
и указать несколько файлов, которые будут впоследствии загружены с компьютера
пользователя на сервер. Для этого в языке HTML и протоколе HTTP предусмотрены
специальные средства.
Чтобы не применять двусмысленной терминологии, я буду использовать слово
"закачать" для обозначения загрузки файла клиента на сервер, и термин "ска-
чать" для иллюстрации обратного процесса (с сервера — клиенту). Я уже
предчувствую, как будет недоволен, услышав об этом, редактор книги, и он в
чем-то прав. Так что, уважаемый читатель, если вы читаете здесь эти рассуж-
дения, — значит, я победил в споре, а если не читаете… Что ж, вы об этом и
не догадаетесь.1
Мы уже рассматривали механизм, который применяется при закачке файлов, в главе
3. Вы, возможно, помните, что он выглядел не очень-то привлекательно. На мой
взгляд, закачка файлов и вообще работа с multipart-методом передачи формы — до-
1 Русский язык, изначально обладающий гигантской свободой в выборе слова,
постоянно раз-
вивается. То, что казалось неприемлемым вчера, сегодня становится нормой, и
наоборот.
Безусловно, у любого обратившего внимание на эти строки при прочтении слов
"закачать" и
"скачать" вряд ли возникнут ассоциации с бригадой мускулистых администраторов,
придаю-
щих передаваемым по сети файлам необходимую кинетическую энергию для
последующего
перемещения под напором, или другие неверные мысли, несмотря на большое
количество
смысловых оттенков употребления этих слов (убаюкивать, вызвать головокружение,
или же
в понимании "подлого приема садовников, торговцев присадками (раскачивать
деревце, не
давая ему укорениться)"). Вообще говоря, о твердых правилах в условиях
возрастающего
слияния разговорных терминов и литературного языка говорить не приходится. В
толковом
словаре С. И. Ожегова и Н. Ю. Шведовой дано пояснение идиоме "Закачаешься!" как
выра-
жения высокой оценки чего-либо. Редакторы вовсе не стремятся убивать живое
изложение, и
поэтому если вы, уважаемые читатели, также видите эти строки, значит было
решено —
"быть закачиваемому" (из примеров к статье "Закачать" толкового словаря живого
велико-
русского языка В. И. Даля). — Ред.
Часть V. Приемы программирования на PHP
390
вольно нетривиальные задачи. Однако спешу обрадовать: в PHP все это давно
реали-
зовано и отлажено. Но обо всем по порядку.
Multipart-формы
Мы помним, что в большинстве случаев данные из формы в браузере, передающиеся
методом GET или POST, приходят к нам в одинаковом формате:
поле1=значение1&поле2=значение2&...
При этом все символы, отличные от "английских" букв и цифр (и еще некоторых)
URL-кодируются: заменяются на %XX, где XX — шестнадцатеричный код символа.
Это сильно замедляет закачку больших файлов.
В принципе, multipart-формы призваны одним махом решить эту проблему. Нам нуж-
но в соответ
|
|