Михаил Юрьевич Лукьянов - РНР. Полное руководство и справочник функций
Название: | РНР. Полное руководство и справочник функций | |
Автор: | Михаил Юрьевич Лукьянов | |
Жанр: | PHP | |
Изадано в серии: | Полное руководство | |
Издательство: | Наука и Техника | |
Год издания: | 2020 | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "РНР. Полное руководство и справочник функций"
Наша книга поможет вам освоить язык РПР практически с нуля - от самыхсамых основ до создания своих собственных приложений и библиотек кода. Пошаговые примеры помогут вам разобраться с многочисленными функциями РНР; вы узнаете, как правильно использовать строки; что такое массивы и какие действия с ними можно выполнять; вы узнаете, как используется ООП (объектно-ориентированное программирование) в РНР; научитесь использовать РНР-сеансы и получать доступ к параметрам формы и загруженным файлам; узнаете, как отправить Cookies и перенаправить браузер или как получить доступ к базам данных из РНР; поработаете с графикой в РНР и научитесь динамически генерировать изображения с помощью РНР; узнаете, как сделать свои веб-приложения безопасными и защитить их от наиболее распространенных и опасных атак и многое-многое другое. Большая часть книги посвящена подробному Справочнику функций РПР - для каждой функции в этом справочнике будет указано: ее имя, принимаемые параметры с типами данных, будет сказано, какой из параметров обязательный, а какой - нет, также будут приведены краткое описание функции, побочные эффекты, ошибки и возвращаемые функцией структуры данных. Для удобства справочник составлен в алфавитном порядке. Книга будет полезна программистам любого уровня - от самых начинающих до продвинутых пользователей, каждый найдет здесь для себя много полезного.
Читаем онлайн "РНР. Полное руководство и справочник функций". [Страница - 8]
,_ ----
.. -- ------- ---- -- - -----.... -- - ---- -.... ·- ---- -- - - -· -. -....... -- - --.. -.. -·
---
РНР. Полное руководство и справочник функций
чае она алфавитная, то есть не содержит каких-либо специальных симво
лов, то ее безопасно использовать в обоих контекстах без экранирования.
Однако, когда вы не можете гарантировать корректное соответствие кон
тексту (значение $var не может быть безопасным в каком-либо контексте),
значение должно экранироваться каждый раз для каждого контекста: в на
шем примере оно должно быть экранировано дваждьi:
$url = array(
'value' => urlencode($value),
);
$link = "http://host/script.php?var={ $url['value']}";
$html = array(
'link' => htmlentities($link, ENT_QUOTES, 'UTF-8'),
);
echo "Щeлкнитe здесь";
Таким образом вы гарантируете, что ссылка может безопасно использовать
ся и в НТМL-контексте HTML и в URL-контексте когда пользователь щел
кает по ней (первое URL-кодирование (по сути экранирование) гарантиру
ет, что значение $var будет сохранено).
Для большинства баз данных существует "родная" функция экранирова
ния, специфичная для этой базы данных. Например, расширение MySQL
предоставляет функцию mysqli_real_escape_string{):
$mysql = array(
'usernam�• => mysqli_real_escape_string($clean['username']),
);
$sql = "SELECT * FROM profile
WHERE username = '{ $mysql['username']}'";
$result = mysql_query($sql);
Более безопасная альтернатива - использовать абстрактную библиотеку баз
данных, которая управляет экранированием для вас. Следующий пример
иллюстрирует данную концепцию с PEAR::DB:
$sql = "INSERT INTO users (last_name) VALUES (?)";
$db->query($sql, аггау($clean['last_name']) );
Хотя это не полный пример, он демонстрирует использование заполните
ля (вопросительного знака) в SQL-зaпpoce. Здесь PEAR::DB должным обра
зом экранирует данные в соответствии с требованиями вашей базы данных.
Более полное экранирование вывода включало бы экранирование НТМL
элементов, НТМL-атрибутов,JаvаSсriрt-кода, CSS и URL. Пример 12.1 со
держит демонстрационный класс, предназначенный для экранирования
ВI--...................---· ...........---------..------------.--.------------..----'
Глава 12. Безопасность
вывода в различных контекстах на основании правил экранирования кон
тента, подготовленных проектом Open Web Application Security Project.
Пример 12. 1 . Экранирования вывода дnя разных контекстов
class Encoder
const ENCODE_SТYLE_НТML = О;
const ENCODE_SТYLE_JAVASCRIP T = 1;
const ENCODE_SТYLE_CSS = 2;
const ENCODE_SТYLE_URL = З;
const ENCODE_SТYLE_URL_SPECIAL = 4;
private static $URL_UNRESERVED_CHARS =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz-_. ~•;
puЬlic lunction encodeForHTML($value)
{
$value = str_replace('&', '&', $value);
$value = str_replace('', '>', $value);
$v�lue = str_replace("", '"', $value);
$value = str_replace('\", '&#х27;', $value);
// ' не рекомендуется
$value = str_replace('/', '/', $value);/ / прямой слеш может помочь
//завершить НТМL-сущность
return $value;
puЬlic funclion encodeForHTMLAttribute($value)
{
return $this->_encodeString($value);
puЬlic lunction encodeForJavascript($value)
{
return $this->_encodeString($value, self::ENCODE_SТYLE_JAVASCRIPT);
puЬlic lunction encodeFor_URL($value)
{
.
return $this->_encodeString($value, self::ENCODE_SТYLE_URL_SPECIAL);
puЬlic lunction encodeForCSS($value)
{
relurn $this->_encodeString($value, self::ENCODE_SТYLE_CSS);
: .. ·-------········-····---·······-··---···--··········--········-·-·····---·-----&1
РНР. Полное руководство и справочник функций
/**
* Кодирует любые специальные символы в пути URL. Не изменяет прямой слеш,
* используемый для обозначения каталогов. Если ваши имена каталогов содержат
* слеши (редко), и·спользуйте urlencode но каждом компоненте каталога и затем
* соедините их вместе с помощью прямого слешо.
*
* Основано но http://en.wikipedio.org/wiki/Percent-encoding и
* http://tools.ietf.org/html/rfc3986
*/
puЬlic function encodeURLPoth($volue)
{
$1ength = mb_strlen($value);
if ($1ength == О) {
return $volue;
$outpul = ";
for ($i = О; $i < $1ength; $i++) {
$chor = mb_substr($volue, $i, 1 );
if ($chor == '/') {
// слеши разрешены в путях
$output .= $chor;
}
else if (mb_strpos(self::$URL_UNRESERVED_CHARS, $chor) == folse) {
// Не находится в незорезервировонном списке, поэтому
// будет закодировано
$output .= $this->_encodeChorocter($chor, self::ENCODE_SТYLE_URL);
}
else {
//Символ находится в незорезервировонном списке, поэтому пропускаем его
$output .= $chor;
relurn $output;
privote function _encodeString($volue, $style = self::ENCODE_SТYLE_НТML)
{
if (mb_strlen($volue) == О) {
return $volue;
$chorocters = preg_split('/(?
ServerName domainA.com
DocumentRool /web/siles/domainд
php_admin_value open_basedir /web/siles/domainд
Аналогично, вы можете настроить ее отдельно для каждого каталога или
URL в вашем файле httpd.conf:
# no каталогу
php_admin_value open_basedir /home/httpd/html/арр 1
# по URL
php_admin_value open_basedir /home/httpd/html/арр2
Директива open_basedir может быть установлена только в файле httpd.
conf, а не в файле .htaccess, и вы должны использовать опцию php_admin_
value --">
Книги схожие с «РНР. Полное руководство и справочник функций» по жанру, серии, автору или названию:
Мэтт Стаффер - Laravel. Полное руководство Жанр: PHP Год издания: 2020 Серия: Бестселлеры o’reilly |
Никита Денисович Левицкий - Справочник системного администратора. Полное руководство по управлению Windows-сетью Жанр: Сети Год издания: 2020 Серия: Полное руководство |
Денис Николаевич Колисниченко, Питер В Аллен - Linux: Полное руководство Жанр: Сети Год издания: 2006 Серия: Полное руководство |