Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 154 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • PHP

PHP: пользовательские данные

  • 25.05.2004

Автор статьи: Дмитрий Турецкий

>

 

PHP: пользовательские данные

[PHP — пользовательские данные]материал подготовил: Дмитрий Турецкий
25.05.2004
 

Каждый веб-сайт по роду своей деятельности должен принимать и обрабатывать данные от пользователей, и чем более динамическим сайт становится, тем больше «чужих» данных он использует в своей работе. Но нередко случается так, что посетители, умышленно или неумышленно, передают сайту совсем не те данные, которые он ожидает, что порой может приводить к весьма неприятным последствиям… И сегодня мы поговорим об основных приемах работы с пользовательскими данными в PHP-скриптах…

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

Рассмотрим простой пример: пользователь запрашивает страницу сайта, передавая в качестве GET-параметра идентификатор статьи, а ваш сервер делает запрос к базе данных и «вытаскивает» эту статью. То есть адрес выглядит как:

  
http://www.mysite.ru/page.php?id=3  

а запрос к базе в скрипте выполняется в виде:

  
$SQL  =  «SELECT  *  FROM  articles  WHERE  id=$_GET[id]»;  

Такой пример будет замечательно работать, до тех пор пока кто-то не запросит страницу без параметров — в этом случае переменная $_GET[id] окажется пустой, и запрос к базе выдаст ошибку. Предположим, что вы эту ошибку решите исправить и напишете что-то вроде:

  
if  ($_GET[‘id’])  
    $SQL  =  «SELECT  *  FROM  articles  WHERE  id=$_GET[id]»;  
else  
    $SQL  =  «SELECT  *  FROM  articles  ORDER  BY  random()  LIMIT  1»;  

Такой скрипт действительно корректно обработает пустой запрос — выдаст случайную статью — но что если посетитель запросит адрес:

  
http://www.mysite.ru/page.php?id=vasya  

 

Снова база отрапортует об ошибке — несоответствие типа данных. Поэтому надо проверять еще и тип. Практика показывает, что удобнее всего бывает вынести в начало скрипта блок кода, занимающийся инициализацией и проверкой переменных, а в самом скрипте уже использовать только их. Например:

  
$id  =  (isset($_GET[‘id’]))  ?  (int)  $_GET[‘id’]  :  0;  
if  ($id)  
    $SQL  =  «SELECT  *  FROM  articles  WHERE  id=$id»  
else  
    $SQL  =  «SELECT  *  FROM  articles  ORDER  BY  random()  LIMIT  1»;  

Необходимо проверять и тип и диапазон разрешенных значений данных

Такая конструкция гарантирует, что переменная $id у вас инициализирована и является целочисленной. Разумеется, она может выходить за пределы имеющихся статей, но тут уже после запроса к базе будет достаточно проверить количество полученных записей — это проще и менее ресурсоемко, чем при каждом вызове страницы проверять, есть ли в базе соответствующая запись.

Однако в некоторых случаях проверка разрешенного диапазона значений является необходимой. Предположим, что у вас есть скрипт, который, в зависимости от переданного пользователем параметра, читает и выдает в браузер какой-то файл:

  
if  (file_exists($_GET[‘page’]))  
    readfile($_GET[‘page’]);  
else  
    readfile(‘default.html’);  

Переменные надо инициализировать перед использованием

Казалось бы, здесь защита предусмотрена — вы честно проверили, что запрошенный файл существует. Но на самом деле подобная конструкция является одной из наиболее типичных «уязвимостей». Дело в том, что по умолчанию PHP разрешает использовать в файло

Алексей Волков

Предыдущий материал
  • Ваш интернет-сайт

инструменты разработчика

  • 21.05.2004
  • Алексей Волков
Read More
Следующий материал
  • CSS

CSS: фон и цвет

  • 27.05.2004
  • Алексей Волков
Read More
Вас также может заинтересовать
Read More
  • Codeigniter

Создание собственного обработчика 404 ошибок в CodeIgniter

  • jokar
  • 07.10.2012
Read More
  • PHP
  • Готовые скрипты

Загрузка нескольких файлов одним браузером

  • jokar
  • 14.06.2010
Read More
  • PHP

Переход на шаблонный дизайн

  • Алексей Волков
  • 10.02.2006
Read More
  • PHP

Экстремальный стиль для PHP

  • Алексей Волков
  • 29.12.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Обработка данных и сортиров

  • Алексей Волков
  • 15.11.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Создание массивов

  • Алексей Волков
  • 31.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 4

  • Алексей Волков
  • 04.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 3

  • Алексей Волков
  • 29.07.2005

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter