PHP SQL
PHP SQL .ru
  Главная  Уроки  PHP  MySQL  jQuery  RegEx  CSS  Книги  Форум  
 Функции


  На главную

  Назад  Вперед

  Печать

Ошибки подключения

Что может пойти не так?

Рассмотрим несколько проблем, возникающих при подключении файла.

Неправильный путь к сценарию

Если вы укажете неправильный путь к сценарию, основный сценарий завершит работу с фатальной ошибкой. Если вы хотите, чтобы ваш основной сценарий продолжил выполнение, даже если дополнительный сценарий не найден, тогда используйте include_once () вместо require_once ().

Путь к сценарию правильный, но сценарий находится в запрещенном каталоге

Такое может случиться, если вы в директиве open_basedir ограничили каталоги, к которым может обращаться РНР. Web-разработчики ограничивают доступ к некоторым важным файлам и каталогам из соображений безопасности. Об этом мы поговорим чуть позже, в пункте #16 («Ограничение доступа РНР к файлам и каталогам»).

В подключаемом файле есть пустая строка или пробелы перед или после РНР-кода

Если ваш сценарий устанавливает Cookies или нестандартно работает с протоколом HTTP, устанавливая его заголовки, то это нужно сделать ДО первого вывода в браузер. Помните, что РНР выводит все, что находится за пределами маркеров ?php и ? файла вложений. Поэтому, если в начале файла есть пустые строки, они будут отправлены в браузер как обычный HTML-код. А как только произойдет любой вывод в браузер, Cookies не могут быть установлены, и вы не сможете запустить сессию. Если вы подключаете сценарий, убедитесь, что до и после PHP-тегов нет пробельных символов. Особенно осторожным нужно быть с пробелами после ?, поскольку они обычно не видны при редактировании.

Примечание.
Cookies используются для отслеживания пользователей и обычно хранят скрытую информацию. Для более подробной информации см. главу 8.

Подключаемый файл может быть просмотрен не РНР-методами

Вы можете хранить ваши PHP-переменные в любом файле, независимо от его имени и расширения, но если вы должным образом не настроите Apache, чтобы он не мог читать такие файлы, то они станут доступны любому желающему - Apache по запросу пользователя будет выводить их в браузер как обычный текст. Поэтому будьте осторожны с нестандартными расширения-ми файлов!

Нужно отметить, что из соображений безопасности имя пользователя и па-роль для подключения к базе данных MySQL нужно хранить в файле, находящемся за пределами досягаемости Internet Explorer.

Для большей безопасности нужно поместить подключаемые файлы за пределы доступа Web-сервера (или в каталог, защищенный паролем), чтобы эти файлы были доступными только по FTP. Особенно важны меры предосторожности при работе с конфиденциальной информацией, например с номерами кредитных карточек.

Примечание.
О том, как проверить номер кредитной карточки, мы поговорим в п. #30 («Проверка кредитных карточек»).

Слишком много подключаемых файлов

Как-то раз я исследовал корзину заказов, написанную на РНР. Я планировал адаптировать ее для моего бизнеса. Представляете, как я был удивлен, когда обнаружил, что главный модуль корзины (где производится добавление, удаление и редактирование элементов корзины) состоит из 7 подключений различных файлов, 12 строк актуального кода и трех Smarty-шаблонов! Я открыл один из подключаемых файлов и обнаружил в нем серию еще из трех дополнительных вложений.

Вложения позволяют сделать код очень компактным. Но мой вам совет. Если вы будете разрабатывать сценарий, в котором будет очень много вложений, пожалуйста, делайте комментарии, объясняющие, для чего делается то или иное подключение файла. Спасибо!

Вы используете непроверенные переменные, задающие имена файлов для подключения

Хотя вы можете использовать следующую конструкцию include ($file) для открытия нужного сценария в зависимости от выбора пользователя, она (конструкция) позволяет хакеру подключить любой файл, находящийся на вашем сервере или даже на его сервере, который может взломать ваш сервер. Фактически все PHP-черви основаны на таких вот «плохо» написанных сценариях.

Если вам нужно подключить один из нескольких файлов в зависимости от значения какой-то переменной, вы можете использовать сценарий, подобный рассмотренному в п. #28, проверяющий имена файлов и предотвращающий открытие главного файла с паролями.

 
Предыдущая   На главную   Следующая          

Ваш комментарий:

'

Реклама на сайте | Обмен ссылками | Ссылки | Контакты
Добавить статью | Добавить исходник
2010-2014 © phpsql.ru