Вторник , 19 Март 2024
ДомойПубликацииphp: вопросы и ответы, часть 3

php: вопросы и ответы, часть 3

php faq

Продолжаю тему, которую вкратце можно охарактеризовать как «катехи́зис». Несмотря на то, что некоторые ответы вполне легко можно найти в официальном мане, с удивлением замечаю, что далеко не все умеют им правильно пользоваться. Если знать не только где искать, но и как искать, ответы находятся в кратчайшее время. Так что совет: учитесь пользоваться справочниками, пригодится не раз. а теперь ещё одна порция 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
И, убедившись, что происходит обращение к корню сайта, счастливый пошёл спать.

1

Но Вася не учёл одного: решётка # — спец-символ, и поэтому должна быть закодирована в пути, а не использоваться в «голом» виде. Кодируется она в конструкцию %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);

Рейтинг: 0

Автор публикации

2 070
не в сети 11 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

Один комментарий

  1. Я недавно начал изучать пхп. Подскажите, какой есть редактор из подсказками?

    Рейтинг: 0

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

Политика конфиденциальности

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

Принять