Продолжаю тему, которую вкратце можно охарактеризовать как «катехи́зис». Несмотря на то, что некоторые ответы вполне легко можно найти в официальном мане, с удивлением замечаю, что далеко не все умеют им правильно пользоваться. Если знать не только где искать, но и как искать, ответы находятся в кратчайшее время. Так что совет: учитесь пользоваться справочниками, пригодится не раз. а теперь ещё одна порция faq`овых вопросов.
- Как вызвать константу по значению переменной?
- Как автоматически перезагрузить страницу через определённое время?
- Можно ли защитить доступ к директории, если в её названии использовать решётку?
- Как запретить выполнение скриптов?
- Как заставить работать скрипт «до победного»?
Как вызвать константу по значению переменной?
$var = 'CONST_NAME';
echo constant($var);
Такое может понадобиться, если имя константы формируется динамически. Хотя в этом случае не совсем понятно, для чего константы нужны вообще.
Как автоматически перезагрузить страницу через определённое время?
Возможно, удивитесь, но php тут не помощник. Сделать это можно с помощью javascript или html. Второй проще и работает почти всегда (не считая изгальюнских браузеров). Итак, всё, что потребуется, добавить между тегами шапки <head></head> генерируемой html-страницы такую запись:
<meta http-equiv="refresh" content="2,http://ya.ru/">
Это приведёт к тому, что браузер перезагрузить страницу (точнее, перенаправит, в данном случае) через 2 секунды на адрес нашей любимой поисковой системы.
Можно ли защитить доступ к директории, если в её названии использовать решётку?
Нет! Хотя бытует обратное мнение. допустим, Вася подумал: «что произойдёт, если php перестанет обрабатывать файлы? Пользователь же сможет спокойно скачать их себе на компьютер», и решил защитить свои творения. Вася знал, что решётка обрабатывается браузером по особому (это так называемый якорь или анкор — место на странице, куда можно сослаться извне, дабы не утруждать пользователя чтением всего, порой немалого, текста. Для форума это может быть ссылка на конкретное сообщение. Браузер в качестве url будет использовать всё, что расположено до решётки). Поэтому он с чистой совестью создал в корне сайта папку #secret, разместил там свои самые главные скрипты (включая скрипт с данными доступа к базе данных), после чего, для проверки, вбил в браузере путь к файлу конфигурации:
http://site.ru/#secret/config.php
И, убедившись, что происходит обращение к корню сайта, счастливый пошёл спать.
Но Вася не учёл одного: решётка # — спец-символ, и поэтому должна быть закодирована в пути, а не использоваться в «голом» виде. Кодируется она в конструкцию %23. Поэтому, если бы Вася заменил запрос на следующий:
http://site.ru/%23secret/config.php
а также отключил исполнение php-скриптов, то его удивлённому взору предстал бы полный листинг данного файла. Ну а там уже в открытом виде все реквизиты доступа к бд. И если учесть, что почти каждый хостер предоставляет phpmyadmin, путь к которому можно найти в faq того же хостера, Вася может попрощаться со своей уникальной базой, а также доброй порцией скриптов.
Как запретить выполнение скриптов?
Ситуации могут быть разными. Допустим, пользователи могут свободно загружать файлы в какую-либо папку, и поэтому крайне необходимо запретить им залить и запустить php-скрипт. Зачем, думаю, объяснять не требуется. Что же, сделать всё довольно просто. Нужно в данной папке разместить файл .htaccess с таким содержимым:
RemoveHandler .php AddType text/plain .php
Если на хостинге могут выполняться и скрипты с другим расширением, кроме .php, достаточно добавить другие расширения: .php3 .phtml .php5 и т. д. если есть желание, можете проверить работу предыдущего пункта, разместив приведённый .htaccess в директории #secret.
Как заставить работать скрипт до конца?
Таймаут может наступить в случаях, когда закончится время, выделяемое скриптам для выполнения, либо если пользователь нажмёт в браузере крестик (отмену загрузки). В первом случае нужно добавить в начало скрипта такую конструкцию: set_time_limit(0); — благодаря этому время работы скрипта установится в «бесконечность». Чтобы скрипт не прекращал работу в случае отсоединения пользователя, нужно вызвать функцию ignore_user_abort(true);
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости
продлением хостинга на +1 месяц
Я недавно начал изучать пхп. Подскажите, какой есть редактор из подсказками?