php проверка адреса страницы

Website-create.ru

Сегодня поговорим о том, как получить адрес страницы в php.

Зачем это может быть нужно?

Сценарии могут быть разными. Например, у нас используется один и тот же шаблон для разных разделов. Но в одном из разделов нам необходимо вывести (или не вывести) какой-то специфичный блок, которого в других разделах быть не должно.

Вероятно мы захотим сделать это по условию. И именно в условии мы и будем проверять тот ли это раздел.

Возможно с архитектурной точки зрения — это не самое лучшее решение. Однако, очень часто нам достаются уже готовые проекты, с которыми нужно что-то делать.

Получаем URL текущей страницы

Если вы хотите посмотреть всё, что хранит этот массив, то можете воспользоваться следующим кодом, который в читабельном виде выведет все значения:

Итак, давайте представим, что у нас есть веб страница следующего вида: http://localhost/php-lessons/url/?name=anna&city=Valencia.

Я тестирую на локальном сервере. Когда вы будете работать с реальным сайтом, который лежит в сети, то вместо localhost у вас будет имя вашего сайта (например exmple.ru).

Что мы видим в нашем подопытном url?

Давайте разберемся с каждой ситуацией.

Получаем полный URL страницы в php

Чтобы получить полный URL страницы вместе с GET-параметрами, воспользуемся следующим кодом:

Сначала мы проверяем, какой протокол используется: https или http.

Далее мы присоединяем двоеточие и 2 слэша, имя домена (хоста) и остальную часть нашего URL.

Результат будет вот таким:

Если протокол нам получать не нужно, то можно сократить код до такого:

Результат тогда будет следующим:

Получаем URL страницы без GET-параметров в php

Иногда нас не интересуют GET-параметры, которые передаются как часть URL, и нам нужно получить адрес без них.

GET-параметры в нашем случает — это name=anna&city=Valencia

Чтобы отсечь их мы можем использовать php-функцию explode, которая разбивает строку по разделителю.

Наш URL — это ни что иное, как строка. GET-параметры всегда начинают передаваться после знака «?». Следовательно разделителем будет вопросительный знак.

Функция explode превратит строку в массив с двумя элементами. В первом будет содержаться наш искомый url без GET-параметров, а во втором останутся GET-параметры.

Результат будет таким: http://localhost/php-lessons/url/

Получаем GET-параметры из URL

Здесь совсем все просто. Чтобы получить только GET-параметры будем использовать следующий код:

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

А у меня на сегодня всё!

Ставьте лайки, оставляйте комментарии, подписывайтесь на обновления!

Источник

В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной $_SERVER.

Первое, о чём следует сказать, — зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести — зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.

В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.

Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи — получению ссылки в PHP.

Получение ссылки текущей страницы в PHP

Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид: http://localhost/php-lessons/url/?name=anna&city=Valencia. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) — тот же otus.ru.

Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: — адрес веб-страницы без GET-параметров; — URL с GET-параметрами; — непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).

Лучше всего разобраться с каждым из случаев по отдельности — так будет гораздо понятнее.

Получение полного URL в PHP

Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:

На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.

Итог выполнения кода будет следующим:

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

Если протокол получать не требуется, код на PHP можно немного сократить:

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

Смотрим на результат и видим, что протокол отсутствует:

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

Получение URL в PHP без GET-параметров

Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах: name=anna&city=Valencia.

В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после «?». В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

Получение только параметров GET

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

С помощью этого кода получим:

php проверка адреса страницы. Смотреть фото php проверка адреса страницы. Смотреть картинку php проверка адреса страницы. Картинка про php проверка адреса страницы. Фото php проверка адреса страницы

Источник

Фильтрация и проверка данных PHP. Частые ошибки

Материал предназначен в основном для начинающих веб-программистов.

Введение.

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

Здесь я постараюсь описать как можно подробнее частые ошибки при фильтрации данных в PHP скрипте и дать простые советы как правильно выполнить фильтрацию данных.

В сети много статей по поводу фильтрации данных, но они как правильно не полные и без подробные примеров.

Разбор полетов.

Фильтрация. Ошибка №1

Для числовых переменных используется такая проверка:

Почему она приведет к SQL инъекции? Дело в том, что пользователь может указать в переменной input_number значение:

В таком случаи проверка будет успешно пройдена, т.к. функция intval получает целочисленное значение переменной, т.е. 1, но в самой переменной $number ничего не изменилось, поэтому весь вредоносный код будет передан в SQL запрос.
Правильная фильтрация:

Конечно, условие может меняться, например если вам нужно получить только определенный диапазон:

Если вы используете чекбоксы или мультиселекты с числовыми значениями, выполните такую проверку:

array_map
Так же встречаю фильтрацию в виде:

Ничего кроме улыбки это не может вызвать 🙂

Фильтрация. Ошибка №2.

Для стринг-переменных используется такая фильтрация:

Функция addslashes экранирует спец. символы, но она не учитывает кодировку БД и возможен обход фильтрации. Не стану копировать текст автора, который описал данную уязвимость и дам просто ссылку Chris Shiflett (перевод можно поискать в рунете).

Если вы не предполагаете вхождение html тегов, то лучше всего сделать такую фильтрацию:

strip_tags — убирает html теги.
htmlspecialchars — преобразует спец. символы в html сущности.
Так вы защитите себя от XSS атаки, помимо SQL инъекции.
Если же вам нужны html теги, но только как для вывода исходного кода, то достаточно использовать:

Если вам важно, чтобы значение переменной не было пустой, то используйте функцию trim, пример:

Фильтрация. Ошибка №3.

Она касается поиска в БД.
Для поиска по числам используйте фильтрацию, описанную в первой ошибке.
Для поиска по тексту используйте фильтрацию, описанную во второй ошибке, но с оговорками.
Для того, чтобы пользователь не смог выполнить логическую ошибку, нужно удалять или экранировать спец. символы SQL.
Пример без доп. обработки строки:

На выходе у нас получится запрос вида:

Это значительно увеличит нагрузку на базу.
В своём скрипте я использую функцию, которая удаляет нежелательные мне символы из поиска:

Конечно, не все из выше перечисленных символов представляют опасность, но в моём случаи они не нужны, поэтому выполняю поиск и замену.
Пример использования фильтрации:

Также советую сделать ограничение по количеству символов в поиске, хотя бы не меньше 3-х, т.к. если у вас будет большое количество записей в базе, то поиск по 1-2 символам будет значительно увеличивать нагрузку на БД.

Фильтрация. Ошибка №4.

Не фильтруются значения в переменной $_COOKIE. Некоторые думаю, что раз эту переменную нельзя передать через форму, то это гарантия безопасности.
Данную переменную очень легко подделать любым браузером, отредактировав куки сайта.
Например, в одной известной CMS была проверка, используемого шаблона сайта:

В данном случаи можно подменить значение переменной $_COOKIE[‘skin’] и вызвать ошибку, в результате которой вы увидите абсолютный путь до папки сайта.
Если вы используете значение куков для сохранения в базу, то используйте одну из выше описанных фильтраций, тоже касается и переменной $_SERVER.

Фильтрация. Ошибка №5.

В PHP скрипте переменная $group будет равна 5, если в скрипте она не была объявлена со значением по умолчанию.

Фильтрация. Ошибка №6.
Проверка. Ошибка №1.

Сталкивался со случаями, когда для AJAX запроса (например: повышение репутации) передавалось имя пользователя или его ID (кому повышается репутация), но в самом PHP не было проверки на существование такого пользователя.
Например:

Получается мы создаем запись в базе, которая совершенно бесполезна нам.

Проверка. Ошибка №2.

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

Давно исправлял в одном модуле форума подобную ошибку, когда любой пользователь мог отредактировать сообщение администрации.

Проверка. Ошибка №3.

При использовании нескольких php файлов сделайте простую проверку.
В файле index.php (или в любом другом главном файле) напишите такую строчку перед подключением других php файлов:

В начале других php файлов напишите:

Так вы ограничите доступ к файлам.

Проверка. Ошибка №4.

Используйте хеши для пользователей. Это поможет предотвратить вызов той или иной функции путём XSS.
Пример составления хеша для пользователей:

Далее во все важные формы подставляйте инпут со значением текущего хеша пользователя:

Во время выполнения скрипта осуществляйте проверку:

Проверка. Ошибка №5.

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

Это позволит скрыть от хакера информацию, которая может ему помочь во взломе сайта.

Проверка. Ошибка №5.

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

В таком случаи вы предотвратите подключение файлов, которые не были вами предусмотрены.

Совет.

Для большей надежности используйте один из готовых и популярных классов для фильтрации данных, дабы самому не пропустить какие-то вредоносные символы/данные. Также в этих классах часто имеется возможность выбора фильтра данных.

UPD: Поправил пост. Перенес все советы по поводу функций и переменных, которые были в комментариях.

Источник

is_page() WP 1.5

Проверяет отображается ли страница «постоянной страницы». Можно указать ID, ярлык или заголовок страницы для проверки. Условный тег.

Смотрите также похожие функции:

Вернет true при передаче пустых значений

Будьте внимательны, потому что следующие вызовы этой функции вернут true:

Нельзя использовать внутри Цикла WordPress

Из-за того что в при работе цикла переписываются некоторые глобальные переменные, is_page() не получится использовать внутри цикла. Впрочем, в этом нет необходимости. Чтобы использовать этот Тег шаблона после цикла, произвольный цикл (запрос на получение записей) надо сбросить функцией: wp_reset_query()

Возвращает

Использование

ID, ярлык, заголовок страницы, которую нужно проверить. Можно указать массив из любых этих значений, чтобы выставить на проверку несколько разных страниц.

Примеры

#1 Функция в действии

#2 Заметка про кириллицу и ярлык (слаг)

#3 Проверка находимся ли мы на дочерней странице у постоянной страницы

Такую функцию полезно создавать, когда на сайте предполагается делать проверки как в примере 1 много раз.

Чтобы определить страницу «О сайте» или её дочернюю страницу, используйте этот пример. Этот пример может пригодится, когда нужно указать переменную для всей ветки страниц. Здесь мы укажем картинку для ветки:

Создадим функцию, которая проверит все уровни вложенности, всю ветку подстраниц и если мы на одной из страниц ветки, то функция вернет true, в противном случае false. Т.е. предположим у нас есть страница «О нас» у нее есть дочерняя страница «Наши услуги», а у этой страницы есть еще дочерние страницы «Покраска» и «Отделка». В эту функцию передадим ID страницы «О нас» и она будет возвращать true если мы находимся на любой из указанных страниц:

#4 Проверка разделения страницы

Источник

PHP Формы — Проверка имени, E-mail и URL

В данной статье, мы рассмотрим возможности PHP проверить, корректно ли в форме указан адрес электронной почты (email), имя пользователя и URL-адрес.

Проверка валидности имени на PHP

Но что если нужно, чтобы имя было ТОЛЬКО на латинице или ТОЛЬКО на кирилице и ограничить длину до 30 символов? Например, для полных имён типа «Максим Максимов-Суханов» или «Maxim Maximov-Sukhanov», естественно только на одном из языков регулярное выражение примет следующий вид (бонусом можно писать украинские имена):

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

Примечание: Не забывайте про букву «Ё», которая не входит в диапазон «А-Я» и её нужно указывать отдельно!

Проверка правильности email на PHP

Как известно email состоит из двух основных частей — username@hostname. Локальная часть email-адреса — это то, что перед знаком «@»(ASCII-код 64), а часть после знака — это домен получателя. Локальная часть может иметь длину до 64 символов, а имя домена может содержать не более 253 символов.

Реализуем проверку email разложив её на сосотавляющие, алгоритм которых следует предписаниям стандарта RFC 2822:

Данная регулярка удобна тем, что шаблоны для разных частей формата email-адреса объявляются отдельно. Валидацию пройдут email не только с буквенными именами почтового домена, но и почтовым сервером, представленным в виде ip адреса.

Главный минус этой регулярного выражения в том, что его нужно постоянно корректировать в соответствие изменениям в названиях email-адресов. Например, домены с русскими именами в зоне «.рф» регулярка выше уже не пропустит.

Рекомендуем использовать именно этот способ проверки email-адреса, так как сегодня и в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.

Проверка URL-адреса в PHP

Проверка имени, email и URL-адреса в PHP

Объединим все рассмотренные выше все проверки полей ввода в одной форме и напишем следующий код:

Пример

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

В следующем уроке мы выведем введенные пользователем данные на экран.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *