<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Адепт Мудрости [ v673.com ] - Сострадание, Мудрость, Чистый Ум &#187; phpBB3</title>
	<atom:link href="http://v673.com/category/phpbb3/feed/" rel="self" type="application/rss+xml" />
	<link>http://v673.com</link>
	<description></description>
	<lastBuildDate>Wed, 02 May 2012 21:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Функция request_var ()</title>
		<link>http://v673.com/phpbb3/request_var/</link>
		<comments>http://v673.com/phpbb3/request_var/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 17:19:03 +0000</pubDate>
		<dc:creator>v673</dc:creator>
				<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://v673.com/?p=318</guid>
		<description><![CDATA[В phpBB все данные, отправляемые пользователями, скрипт получает с помощью функции request_var (). Ее использование позволяет в некоторой мере защитить web-приложение от SQL-инъекций, XSS и прочих уязвимостей. Она совершает первичную обработку, проверяя, чтобы значение, переданное пользователем, было нужного нам типа. Все возвращаемые функцией значения также очищаются от посторонних символов с помощью stripslashes () и htmlspecialchars [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 10px;" title="BigBox" src="http://v673.com/wp-content/uploads/icon-058.png" alt="BigBox" width="128" height="128" align="left" />В phpBB все данные, отправляемые пользователями, скрипт получает с помощью функции request_var (). </p>
<p>Ее использование позволяет в некоторой мере защитить web-приложение от <a href="http://ru.wikipedia.org/wiki/Внедрение_SQL-кода">SQL-инъекций</a>, <a href="http://ru.wikipedia.org/wiki/XSS">XSS</a> и прочих уязвимостей. Она совершает первичную обработку, проверяя, чтобы значение, переданное пользователем, было нужного нам типа. </p>
<p>Все возвращаемые функцией значения также очищаются от посторонних символов с помощью <a href="http://php.net/stripslashes">stripslashes ()</a> и <a href="http://php.net/htmlspecialchars">htmlspecialchars ()</a>.</p>
<p><span id="more-318"></span></p>
<p>&nbsp;</p>
<h2>Синтаксис</h2>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> mixed request_var <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$var_name</span> <span style="color: #339933;">,</span> <span style="color: #000088;">$default</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$multibyte</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span></pre></div></div>

<h2>Параметры</h2>
<p><strong>var_name</strong><br />
Имя параметра, который Вы хотите получить от пользователя.</p>
<p><strong>default</strong><br />
Значение по умолчанию. Если получаемый от пользователя параметр будет отсутствовать, то функция вернет значение, установленное в $default.</p>
<p>Интересно, что у $default есть еще одно полезное свойство: с помощью него функция узнает какой тип должен быть у получаемого от пользователя параметра.</p>
<p><strong>multibyte</strong><br />
Необязательный параметр. По умолчанию установлен в false. Установите в true, если получаемая строка может содержать не-ASCII символы.</p>
<p><strong>cookie</strong><br />
Необязательный параметр. Установите в true, если получаемое Вами значение будет передаваться через cookie.</p>
<p><strong>Примечание:</strong> Использовать $_POST, $_GET и $_COOKIE не запрещается, если Вам необходимо проверить наличие параметра, например:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000088;">$submit</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'submit'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p> </p>
<h2>Примеры использования</h2>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #666666; font-style: italic;">// Правильное использование. Переменная типа int.</span>
  <span style="color: #000088;">$start</span> <span style="color: #339933;">=</span> request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Неправильное использование, так как это может привести </span>
  <span style="color: #666666; font-style: italic;">// к SQL-уязвимости, потому что параметр не очистится правильно.</span>
  <span style="color: #000088;">$start</span> <span style="color: #339933;">=</span> request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Правильное использование. Переменная типа float.</span>
  <span style="color: #000088;">$price</span> <span style="color: #339933;">=</span> request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'price'</span><span style="color: #339933;">,</span> <span style="color:#800080;">0.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Получение мультибайтовой строки:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">   <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> utf8_normalize_nfc<span style="color: #009900;">&#40;</span>request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'message'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Внимание:</strong> Не забывайте принимать мультибайтовые строки везде, где они могут использоваться. К примеру, при создании топиков, сообщений, личных сообщений и так далее. Всегда нормализируйте получаемые в UTF8 строки. Дело в том, что некоторые символы могут представлены в виде кодов. Например, символ Å может быть представлен кодом U+00C5.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'multibyte_string'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Käse'</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Нормализированная мультибайтовая строка.</span>
  <span style="color: #b1b100;">echo</span> utf8_normalize_nfc<span style="color: #009900;">&#40;</span>request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'multibyte_string'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// ASCII строки не нуждаются в нормализировании.</span>
  <span style="color: #b1b100;">echo</span> request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'multibyte_string'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Получение значения из Cookie:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> request_var<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cookie_time'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>
<b>Понравилась эта статья?</b>
<ul>
  <li>Давайте дружить в <a href="http://twitter.com/v673">твитере</a>!</li>
  <li>Есть свое мнение? - <a href="http://v673.com/phpbb3/request_var/#comments">Поделитесь</a> им в комментариях!</li>
  <li>Возникли какие-то вопросы? - <a href="http://v673.com/feedback/">Задайте</a> мне их лично!</li>
  <li>Интересна информация об авторе? - <a href="http://v673.com/about/">Узнай</a> больше обо мне!</li>
  <li>Поделитесь ссылкой на эту статью со своими друзьями!</li>
</ul>
</p>]]></content:encoded>
			<wfw:commentRss>http://v673.com/phpbb3/request_var/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функция trigger_error ()</title>
		<link>http://v673.com/phpbb3/function-trigger_error/</link>
		<comments>http://v673.com/phpbb3/function-trigger_error/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 23:08:13 +0000</pubDate>
		<dc:creator>v673</dc:creator>
				<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://v673.com/?p=287</guid>
		<description><![CDATA[Функция trigger_error () в коде phpBB 3 используется повсеместно. Я решил в этой заметке сделать более подробный обзор этой функции. Сегодня мы рассмотрим синтаксис, возможные параметры, а также примеры использования. trigger_error () генерирует ошибки/предупреждения/замечания или непосредственно страницу с каким-нибудь сообщением, например, &#171;Ваша тема была успешно создана&#187;. &#160;&#160; Синтаксис bool trigger_error &#40; string $error_msg &#91;, int [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 10px;" title="Ошибок не избежать" src="http://v673.com/wp-content/uploads/icon-122.png" alt="Ошибок не избежать" width="128" height="128" align="left" /></p>
<p>Функция trigger_error () в коде phpBB 3 используется повсеместно. Я решил в этой заметке сделать более подробный обзор этой функции.</p>
<p>Сегодня мы рассмотрим синтаксис, возможные параметры, а также примеры использования.</p>
<p>trigger_error () генерирует ошибки/предупреждения/замечания или непосредственно страницу с каким-нибудь сообщением, например, &laquo;Ваша тема была успешно создана&raquo;.</p>
<p><span id="more-287"></span></p>
<p>&nbsp;&nbsp;</p>
<h2>Синтаксис</h2>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> bool <span style="color: #990000;">trigger_error</span> <span style="color: #009900;">&#40;</span> string <span style="color: #000088;">$error_msg</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span> int <span style="color: #000088;">$error_type</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span></pre></div></div>

<p>После выполнения данная функция завершает выполнение скрипта. Функция использует шаблон <strong>message_body.html</strong> при генерации ответа.</p>
<h2>Параметры</h2>
<p><strong>error_msg</strong><br />
Сообщение об ошибке, которое будет возвращаться пользователю. Помните, что использовать напрямую вывод текстовых строк крайне нежелательно. Используйте языковые переменные.</p>
<p><strong>error_type</strong><br />
Тип ошибки. По умолчанию установлено в E_USER_NOTICE. Может быть трех типов: E_USER_NOTICE, E_USER_WARNING, and E_USER_ERROR.</p>
<ul>
<li><strong>E_USER_NOTICE</strong>&nbsp;&mdash; Используется в ситуациях, когда нужно сообщить пользователю какую либо информацию. Например, об успешном завершении авторизации. В администраторском аккаунте использование E_USER_NOTICE выводит зеленый информационный блок.</li>
<li><strong>E_USER_WARNING</strong>&nbsp;&mdash; Используется, когда нужно сообщить об ошибке. Для пользователей клиентской части сообщение выглядит точно так же, как и для E_USER_NOTICE. Но в администраторском аккаунте E_USER_WARNING выводит красный информационный блок.</li>
<li><strong>E_USER_ERROR</strong>&nbsp;&mdash; Должно использоваться только для серверных ошибок. Например, если сессия пользователя недоступна. Или если произошла ошибка SQL.</li>
</ul>
<h2>Примеры использования</h2>
<p><strong>Использование E_USER_NOTICE (пользовательской ошибки)</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Проверка какого-либо значения.</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$email</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Так делать нельзя. Лучше использовать языковые переменные.</span>
    <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Вы не ввели e-mail адрес'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Использование E_USER_ERROR (серверной ошибки)</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$mode</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Здесь какой-либо код...</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// default вызывается, если никакой вариант switch`а не подошел.</span>
    <span style="color: #666666; font-style: italic;">// В нашем коде под этим подразумевается какая-либо ошибка, так как</span>
    <span style="color: #666666; font-style: italic;">// при нормальном функционировании скрипта этого произойти не должно.</span>
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Сообщаем об ошибке, используя языковую переменную.</span>
        <span style="color: #666666; font-style: italic;">// Используем E_USER_ERROR, так как это серъезная ошибка, и требует</span>
        <span style="color: #666666; font-style: italic;">// вмешательства администратора.</span>
        <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'NO_MODE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">E_USER_ERROR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Примечания</h2>
<p>В phpBB 3 используется функция <a href="http://php.net/set_error_handler">set_error_handler ()</a> для перехвата <a href="http://php.net/trigger_error">trigger_error ()</a>.</p>
<p>
<b>Понравилась эта статья?</b>
<ul>
  <li>Давайте дружить в <a href="http://twitter.com/v673">твитере</a>!</li>
  <li>Есть свое мнение? - <a href="http://v673.com/phpbb3/function-trigger_error/#comments">Поделитесь</a> им в комментариях!</li>
  <li>Возникли какие-то вопросы? - <a href="http://v673.com/feedback/">Задайте</a> мне их лично!</li>
  <li>Интересна информация об авторе? - <a href="http://v673.com/about/">Узнай</a> больше обо мне!</li>
  <li>Поделитесь ссылкой на эту статью со своими друзьями!</li>
</ul>
</p>]]></content:encoded>
			<wfw:commentRss>http://v673.com/phpbb3/function-trigger_error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Внешняя авторизация</title>
		<link>http://v673.com/phpbb3/external-authentication/</link>
		<comments>http://v673.com/phpbb3/external-authentication/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 23:10:09 +0000</pubDate>
		<dc:creator>v673</dc:creator>
				<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://v673.com/?p=260</guid>
		<description><![CDATA[Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло&#160;&#8212; готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы. Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать разработку [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 10px;" title="Человеки, входящие в phpBB" src="http://v673.com/wp-content/uploads/icon-3681.png" alt="Человеки, входящие в phpBB" width="128" height="128" align="left" />Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло&nbsp;&mdash; готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы.</p>
<p>Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать разработку у специалистов.</p>
<p>К счастью, разработчики phpBB предусмотрели эту проблему, и заранее сделали механизм авторизации легко расширяемым. В этой статье мы попробуем написать свой простой плагин авторизации.</p>
<p><span id="more-260"></span></p>
<h2>Запрет регистрации</h2>
<p>Логично предположить, что перед активацией нашего модуля авторизации мы должны запретить регистрацию в самом phpBB. Создавая плагин авторизации заранее предпологается, что пользователи будут регистрироваться в другом месте.</p>
<p>Для этого в администраторском аккаунте перейдите на вкладку Общие, и в левом меню выберите &laquo;Регистрация пользователей&raquo;. Далее отключаем регистрацию:</p>
<p><img class="alignnone size-full wp-image-261" title="Запрет регистрации в phpBB" src="http://v673.com/wp-content/uploads/cancel_sign.png" alt="Запрет регистрации в phpBB" width="660" height="111" /></p>
<p>Все плагины авторизации расположены в директории <strong>includes/auth/</strong>. Там уже есть несколько готовых плагинов.</p>
<ul>
<li><strong>auth_db</strong>&nbsp;&mdash; плагин, включенный по умолчанию. Он отвечает за авторизацию через базу данных phpBB.</li>
<li><strong>auth_apache</strong>&nbsp;&mdash; плагин, соответственно для авторизации использующий встроенные средства веб-сервера Apache.</li>
<li><strong>auth_ldap</strong>&nbsp;&mdash; плагин, использующий для аутентификации сетевой протокол доступа к каталогам <a href="http://ru.wikipedia.org/wiki/LDAP">LDAP</a></li>
</ul>
<p>Пусть наш плагин будет называться auth_simple. Создайте файл auth_simple.php в директории includes/auth с таким содержимым:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
&nbsp;
<span style="color: #009933; font-style: italic;">/**
*
* Пример плагина авторизации для phpBB3
*
*/</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
* @ignore
*/</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IN_PHPBB'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
* Функция, отвечающая за авторизацию.
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> login_simple<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$username</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
           <span style="color: #666666; font-style: italic;">// Запрещаем пустой пароль.</span>
           <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>
           <span style="color: #009900;">&#123;</span>
                      <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                  <span style="color: #0000ff;">'status'</span> <span style="color: #339933;">=&gt;</span> LOGIN_ERROR_PASSWORD<span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'error_msg'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'NO_PASSWORD_SUPPLIED'</span><span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'user_row'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user_id'</span> <span style="color: #339933;">=&gt;</span> ANONYMOUS<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                      <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
&nbsp;
           <span style="color: #666666; font-style: italic;">// Запрещаем пустое имя пользователя.</span>
           <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$username</span><span style="color: #009900;">&#41;</span>
           <span style="color: #009900;">&#123;</span>
                      <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                  <span style="color: #0000ff;">'status'</span> <span style="color: #339933;">=&gt;</span> LOGIN_ERROR_USERNAME<span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'error_msg'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'LOGIN_ERROR_USERNAME'</span><span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'user_row'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user_id'</span> <span style="color: #339933;">=&gt;</span> ANONYMOUS<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                      <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span>
&nbsp;
           <span style="color: #666666; font-style: italic;">// Обычная проверка на правильность.</span>
           <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test&quot;</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$username</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test&quot;</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#41;</span>
           <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">// Сообщаем, что авторизация прошла успешно.</span>
                <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                  <span style="color: #0000ff;">'status'</span>     <span style="color: #339933;">=&gt;</span> LOGIN_SUCCESS<span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'error_msg'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
                                  <span style="color: #0000ff;">'user_row'</span>	 <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                                     <span style="color: #0000ff;">&quot;username&quot;</span>       <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$username</span><span style="color: #339933;">,</span>  <span style="color: #666666; font-style: italic;">// Отображаемое имя пользователя</span>
                                     <span style="color: #0000ff;">&quot;user_password&quot;</span>  <span style="color: #339933;">=&gt;</span> phpbb_hash<span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>  <span style="color: #666666; font-style: italic;">// phpbb-хеш пароля</span>
                                     <span style="color: #0000ff;">&quot;user_email&quot;</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;test@v673.com&quot;</span><span style="color: #339933;">,</span>  <span style="color: #666666; font-style: italic;">// E-mail пользователя, если существует</span>
                                     <span style="color: #0000ff;">&quot;user_type&quot;</span>      <span style="color: #339933;">=&gt;</span> USER_NORMAL <span style="color: #666666; font-style: italic;">// Тип пользователя, объявленный в constants.php</span>
                                 <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
           <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
           <span style="color: #666666; font-style: italic;">// Возвращаем ошибку авторизации.</span>
           <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
               <span style="color: #0000ff;">'status'</span>     <span style="color: #339933;">=&gt;</span> LOGIN_ERROR_PASSWORD<span style="color: #339933;">,</span>
               <span style="color: #0000ff;">'error_msg'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'LOGIN_ERROR_PASSWORD'</span><span style="color: #339933;">,</span>
               <span style="color: #0000ff;">'user_row'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user_id'</span> <span style="color: #339933;">=&gt;</span> ANONYMOUS<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
           <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Теперь необходимо активировать наш плагин авторизации. Для этого перейдите в вкладку Общие и в левом меню выберите пункт Аутентификация. Выберите наш метод авторизации:</p>
<p><img class="alignnone size-full wp-image-262" title="Выбор метода аутентификации" src="http://v673.com/wp-content/uploads/set_simple_auth.png" alt="Выбор метода аутентификации" width="480" height="61" /></p>
<p>Все! Сегодня мы спрограммировали небольшой плагин для системы авторизации. Теперь Вы можете легко интегрировать phpBB с различными системами. В другой статье, которую напишу позже, я расскажу Вам более подробно о создании плагинов аутентификации.</p>
<p>
<b>Понравилась эта статья?</b>
<ul>
  <li>Давайте дружить в <a href="http://twitter.com/v673">твитере</a>!</li>
  <li>Есть свое мнение? - <a href="http://v673.com/phpbb3/external-authentication/#comments">Поделитесь</a> им в комментариях!</li>
  <li>Возникли какие-то вопросы? - <a href="http://v673.com/feedback/">Задайте</a> мне их лично!</li>
  <li>Интересна информация об авторе? - <a href="http://v673.com/about/">Узнай</a> больше обо мне!</li>
  <li>Поделитесь ссылкой на эту статью со своими друзьями!</li>
</ul>
</p>]]></content:encoded>
			<wfw:commentRss>http://v673.com/phpbb3/external-authentication/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Создание новой страницы</title>
		<link>http://v673.com/phpbb3/adding-pages/</link>
		<comments>http://v673.com/phpbb3/adding-pages/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 07:26:31 +0000</pubDate>
		<dc:creator>v673</dc:creator>
				<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=140</guid>
		<description><![CDATA[В этом простом руководстве мы рассмотрим создание страницы, которая внешне похожа на общее оформление Вашего форума. Это может пригодиться, если Вам понадобится создать страницу, которая выглядит также как и Ваш форум. Например, содержащая описание сайта или его правила. &#160;&#160; &#160;&#160; Шаг первый Для начала давайте создадим файл about.php в корне нашего форума: &#60; ?php // [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-145" style="margin: 10px;" title="Все очень просто!" src="http://v673.com/wp-content/uploads/icon-1131.png" alt="Все очень просто!" width="128" height="128" align="left" /> В этом простом руководстве мы рассмотрим создание страницы, которая внешне похожа на общее оформление Вашего форума.</p>
<p>Это может пригодиться, если Вам понадобится создать страницу, которая выглядит также как и Ваш форум.</p>
<p>Например, содержащая описание сайта или его правила.<br />
<span id="more-140"></span></p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;</p>
<h2>Шаг первый</h2>
<p>Для начала давайте создадим файл about.php в корне нашего форума:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">// Указываем всем подключающимся скриптам,</span>
<span style="color: #666666; font-style: italic;">// что они вызывается из главного файла.</span>
<span style="color: #666666; font-style: italic;">// Для защиты от вызова их напрямую.</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IN_PHPBB'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Создаем переменную, содержащую</span>
<span style="color: #666666; font-style: italic;">// путь к корню сайта.</span>
<span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PHPBB_ROOT_PATH'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? PHPBB_ROOT_PATH <span style="color: #339933;">:</span> <span style="color: #0000ff;">'./'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Указываем расширение к подключаемым файлам.</span>
<span style="color: #666666; font-style: italic;">// Обычно .php.</span>
<span style="color: #000088;">$phpEx</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strrchr</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Подключаем ядро phpBB.</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'common.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Запускаем инициализацию сессии.</span>
<span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">session_begin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setup</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Можно запретить доступ к этой странице</span>
<span style="color: #666666; font-style: italic;">// всем незарегистрированным пользователям.</span>
<span style="color: #666666; font-style: italic;">// Этот запрет не действует на поисковых ботов.</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> ANONYMOUS<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    login_box<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'LOGIN'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Если Вы хотите запретить доступ к данной странице</span>
<span style="color: #666666; font-style: italic;">// и поисковым ботам, то используйте следующую проверку.</span>
<span style="color: #666666; font-style: italic;">// Ботов будет перенаправлять на главную страницу.</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'is_bot'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   redirect<span style="color: #009900;">&#40;</span>append_sid<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$phpbb_root_path}</span>index.<span style="color: #006699; font-weight: bold;">$phpEx</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Устанавливаем заголовок страницы.</span>
page_header<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'About Us'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Указываем, какие файлы шаблонов подключать.</span>
<span style="color: #000088;">$template</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_filenames</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'body'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'aboutus_body.html'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Подключаем нижнюю часть страницы.</span>
page_footer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h2>Шаг второй</h2>
<p>Теперь давайте создадим файл шаблона styles/имя_вашего_стиля/template/aboutus_body.html. Он будет содержать непосредственно HTML-код страницы. Незабудьте сохранить данный файл в UTF-8.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!-- INCLUDE overall_header.html --&gt;</span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Здесь заголовок страницы<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;panel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;inner&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;content&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
             Здесь содержимое.
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #808080; font-style: italic;">&lt;!-- INCLUDE overall_footer.html --&gt;</span></pre></div></div>

<h2>Шаг третий</h2>
<p>Все готово!  Нам осталось только увидеть в работе результат наших трудов.  Сделанная нами страница будет доступна по адресу <em>http://ваш_сайт.com/about.php</em>.</p>
<p>За основу для данной статьи был взят материал из <a href="http://wiki.phpbb.com/Adding_pages">phpBB Development Wiki.</a></p>
<p>
<b>Понравилась эта статья?</b>
<ul>
  <li>Давайте дружить в <a href="http://twitter.com/v673">твитере</a>!</li>
  <li>Есть свое мнение? - <a href="http://v673.com/phpbb3/adding-pages/#comments">Поделитесь</a> им в комментариях!</li>
  <li>Возникли какие-то вопросы? - <a href="http://v673.com/feedback/">Задайте</a> мне их лично!</li>
  <li>Интересна информация об авторе? - <a href="http://v673.com/about/">Узнай</a> больше обо мне!</li>
  <li>Поделитесь ссылкой на эту статью со своими друзьями!</li>
</ul>
</p>]]></content:encoded>
			<wfw:commentRss>http://v673.com/phpbb3/adding-pages/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Права доступа</title>
		<link>http://v673.com/phpbb3/permissions/</link>
		<comments>http://v673.com/phpbb3/permissions/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 19:01:22 +0000</pubDate>
		<dc:creator>v673</dc:creator>
				<category><![CDATA[phpBB3]]></category>

		<guid isPermaLink="false">http://v673.com/?p=215</guid>
		<description><![CDATA[Безусловно, при разработке модулей серьезней HelloWorld Вам не обойтись без использования такой замечательной функциональности, как права доступа. Использование прав доступа делает Ваш скрипт более гибким и управляемым, а также позволяет администраторам активировать для разных пользователей только необходимые им функции в Вашем модуле, отключая ненужные. Давайте перейдем непосредственно к примерам... Типы прав доступа Все права доступа [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px;" title="Права доступа" src="http://v673.com/wp-content/uploads/icon-110.png" alt="Права доступа" width="128" height="128" align="left" />Безусловно, при разработке модулей серьезней HelloWorld Вам не обойтись без использования такой замечательной функциональности, как права доступа.</p>
<p>Использование прав доступа делает Ваш скрипт более гибким и управляемым, а также позволяет администраторам активировать для разных пользователей только необходимые им функции в Вашем модуле, отключая ненужные.</p>
<p>Давайте перейдем непосредственно к примерам...</p>
<p><span id="more-215"></span></p>
<h2>Типы прав доступа</h2>
<p>Все права доступа phpBB 3 разделяет на следующие категории:</p>
<ul>
<li>Администраторские</li>
<li>Модераторские</li>
<li>Пользовательские</li>
<li>Общефорумные</li>
</ul>
<p>На основе принадлежности к вышеприведенным группам и формируются префиксы в именах прав доступа.</p>
<h2>Проверка прав доступа</h2>
<p><strong>Глобальные права</strong></p>
<p>Давайте проверим, к примеру, может ли пользователь просматривать профайлы других пользователей:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl_get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'u_viewprofile'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
     <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NOT_AUTHORISED'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Если таких прав у него не будет, то он увидит сообщение об ошибке и скрипт остановит свое выполнение после trigger_error ().</p>
<p><strong>Локальные права</strong></p>
<p>Если Вы хотите проверить локальные права, к примеру, возможность читать сообщения в форуме с ID 5, используйте следующий код:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl_get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'f_read'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
     <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NOT_AUTHORISED'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Список всех существующих прав Вы можете найти в таблице <strong>phpbb_acl_options</strong> в Вашей базе данных.</p>
<h2>Добавление новых прав доступа</h2>
<p><strong>Обратите внимание:</strong> Идентификатор права доступа не должен содержать заглавных букв, иначе Вы столкнетесь с проблемой при попытке добавить модуль, который требует это право доступа.</p>
<p>Пример создания права доступа используя API-интерфейс phpBB 3. Запускайте этот код в установщике Вашего модуля:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #009933; font-style: italic;">/**
*
* Скрипт устанавливает права доступа в базу данных для модуля foo
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
* @ignore
*/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Инициализируем страницу</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IN_PHPBB'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IN_INSTALL'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PHPBB_ROOT_PATH'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? PHPBB_ROOT_PATH <span style="color: #339933;">:</span> <span style="color: #0000ff;">'./../'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$phpEx</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strrchr</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'common.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Запускаем сессию</span>
<span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">session_begin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setup</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mods/foo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Подключаем класс $auth_admin для управления правами доступа</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'includes/acp/auth.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$auth_admin</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> auth_admin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Добавляем права доступа как локальные.</span>
<span style="color: #666666; font-style: italic;">// Но Вы можете сделать их и как глобальные.</span>
<span style="color: #000088;">$auth_admin</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl_add_option</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'local'</span>        <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'f_survey_design'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'f_survey_takeforothers'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'f_survey_viewhiddenresults'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'global'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ADDED_PERMISSIONS'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'
&nbsp;
'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$message</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOVE_INSTALL'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$message</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Если по какой-то причине Вы не используете установщика для Вашего модуля, Вы можете создать страницу вроде install/install_permissions.php, которая будет содержать следующий код:</p>
<p>Затем добавьте следующую строчку в файл language/ru/mods/foo.php (или language/ru/common.php):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'ADDED_PERMISSIONS'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Права доступа были успешно добавлены в базу данных'</span><span style="color: #339933;">,</span></pre></div></div>

<h2>Использование SQL</h2>
<p>Суровые челябинские программисты предпочитают вставлять права доступа напрямую в базу данных. Для этого Вам нужно выполнить запрос вроде следующего:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> phpbb_acl_options <span style="color: #66cc66;">&#40;</span>auth_option<span style="color: #66cc66;">,</span> is_global<span style="color: #66cc66;">,</span> is_local<span style="color: #66cc66;">,</span> founder_only<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'u_view_foo'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> phpbb_acl_options <span style="color: #66cc66;">&#40;</span>auth_option<span style="color: #66cc66;">,</span> is_global<span style="color: #66cc66;">,</span> is_local<span style="color: #66cc66;">,</span> founder_only<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'u_manage_foo'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>После выполнения SQL-запросов Вам нужно будет очистить кеш. Это можно сделать следующими способами:</p>
<ul>
<li>удалить cache/data_global.php и cache/data_global.php</li>
<li>или выполнить $cache->destroy (&#39;acl_options&#39;);</li>
</ul>
<h2>Языковые файлы</h2>
<p>В любом случае настоятельно рекомендуется добавлять языковые переменные для только что созданных прав доступа. Для этого просто создайте файл permissions_foo.php в language/ru/mods. Впоследствие он автоматически подключится ядром phpBB 3.</p>
<p>Мы только что добавили категорию &laquo;foo&raquo; (будет отображаться как новая вкладка). Все права доступа, у которых &#39;cat&#39; => &#39;foo&#39; будут отображаться в нашей вкладке.</p>
<p>Созданное право доступа уже готово к использованию. Теперь узнаем, может ли пользователь просматривать модуль foo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$auth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">acl_get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'u_view_foo'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
     <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NOT_AUTHORISED'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Вот мы и рассмотрели небольшие примеры для работы с правами доступа. Надеюсь, что Вы получили общее представление о том, как они работают в phpBB 3.</p>
<p>Материал подготовлен на основе соответствующей статьи в <a href="http://wiki.phpbb.com/Permissions">phpBB Development Wiki</a>.</p>
<p>
<b>Понравилась эта статья?</b>
<ul>
  <li>Давайте дружить в <a href="http://twitter.com/v673">твитере</a>!</li>
  <li>Есть свое мнение? - <a href="http://v673.com/phpbb3/permissions/#comments">Поделитесь</a> им в комментариях!</li>
  <li>Возникли какие-то вопросы? - <a href="http://v673.com/feedback/">Задайте</a> мне их лично!</li>
  <li>Интересна информация об авторе? - <a href="http://v673.com/about/">Узнай</a> больше обо мне!</li>
  <li>Поделитесь ссылкой на эту статью со своими друзьями!</li>
</ul>
</p>]]></content:encoded>
			<wfw:commentRss>http://v673.com/phpbb3/permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

