прикладываю файл на скачку

advertisement
Форма регистрации на сайте.
Для того чтобы вставить форму регистрации, сперва нужно включить это опцию в
административной части.
В третьей версии spip это можно сделать в меню Настройка -> Посетители (регистрация
без входа в административную часть).
Если необходимо дать пользователям доступ в административную часть, то нам нужно
включить эту возможность в меню Настройка -> Автоматическая регистрация новых
авторов.
Авторизация
Начнем с формы входа.
В нужное место на сайте вставляем код формы:
[(#REM) Если мы не_авторизированы - выводим форму входа]
[(#SESSION{login}|non)#FORMULAIRE_LOGIN_FORUM{#SELF,#LANG}]
[(#REM) Если авторизированы - выводим логин и ссылку для выхода]
[(#SESSION{login}|oui)#SESSION{nom}, <a href="#URL_LOGOUT{#SELF}"
title="Выход">Выход</a>]
После этой формы можно добавить ссылки на страницы
регистрации(/spip.php?page=identifiants) и восстановления
пароля(/spip.php?page=spip_pass).
Страница регистрации
За вид этой страницы отвечает шаблон identifiants.html.
Для начала скопируем этот файл в папку /squelettes/.
Внутри этого файла саму форму для регистрации выводит тег #FORMULAIRE_INSCRIPTION.
Остальное добавляем по своему усмотрению: можно, например, добавить еще путь к
статье или форму входа на этой странице.
Заканчиваем стилевое оформление шаблона и переходим к коду регистрации.
Код формы регистрации
Шаблон с формой регистрании, как нетрудно догадаться, называется inscription.html.
Копируем этот файл в папку /squelettes/formulaires/ вместе с обработчиком формы
(inscription.php). Внутри этого файла мы можем увидеть теги, которые отвечают за
обработку событий, вывод сообщений и вывод самой формы регистрации.
Здесь, в этом файле мы также можем дописать код капчи, или дополнительные поля для
регистрации.
Пример вставки дополнительных полей и капчи (более полные примеры реализации капчи
вы можете посмотреть в интернете):
[(#REM) Капча]
<input type="text" name="captcha" id="captcha" value size="5"
autofocus="autofocus" autocapitalize="off" autocorrect="off" />
<img class="captcha"
src="/squelettes/formulaires/img.php?sid=<?=session_id();?>" />
[<span
class="erreur_message">(#ENV*{erreurs}|table_valeur{captcha})</span>]
[(#REM) Доп. поля]
<div>
<label for="sex_inscription">Пол</label>
<select name="sex_inscription" id="sex_inscription">
<option value="" selected="selected"></option>
<option value="men">Мужской</option>
<option value="women">Женский</option>
</select>
[<span
class="erreur_message">(#ENV*{erreurs}|table_valeur{sex_inscription})</span>]
</div>
<div>
<label for="forex_exp_inscription">Еще одно поле</label>
<input[ (#HTML5|?{required="required" type="number"
class="text email",type="number" class="text"})] name="forex_exp_inscription"
id="forex_exp_inscription" value="#ENV{forex_exp_inscription}"
size="30"[(#ENV{focus}|=={forex_exp_inscription}|et{#HTML5}|oui)
autofocus="autofocus"] autocapitalize="off" autocorrect="off" min="0"
max="50" />
[<span
class="erreur_message">(#ENV*{erreurs}|table_valeur{forex_exp_inscription})</
span>]
</div>
В файле-обработчике формы введенные значения мы можем получить с помощью
функции _request('sex_inscription') для первого поля в примере
и _request('forex_exp_inscription') для второго поля. Дополнительные поля мы
можем реализовать с помощью плагина Champs Extras.
Более полную документацию по плагину можно посмотреть на сайте http://contrib.spip.net.
Для записи введенного значения в базу мы используем функцию sql_updateq
(http://programmer.spip.net/sql_updateq,675)
В дополнение к примеру выше, вносим введенное значение в таблицу пользователей:
$forex_exp = _request('forex_exp_inscription');
if ($desc[id_auteur]) {
if($forex_exp)
sql_updateq('spip_auteurs', array('forex_exp' => $forex_exp)
, 'id_auteur='.$desc[id_auteur]);
}
Забыли пароль?
В заключение хотелось бы сказать о возможности восстановления пароля, за это отвечает
шаблон spip_pass.html. Стоит отметить сразу, что в этом файле мы можем ввести e-mail,
на который будет отправлено письмо с инструкциями восстановления,
а так-же ввести новый пароль (после перехода по ссылке в письме).
Как обычно, копируем его в папку с шаблонами и приступаем к редактированию.
Основную и важную роль здесь играет вот этот код, который отвечает за вставку форм
восстановления пароля:
[(#ENV{p}|non) #FORMULAIRE_OUBLI]
[(#ENV{p}|oui) #FORMULAIRE_MOT_DE_PASSE ]
Выше мы видим проверку на переменную окружения p. Если она присутствует - выводим
форму для ввода нового пароля. Если переменная не определена, то будет выведена форма
для указания адреса почты, на который будет выслано сообщение и инструкциями.
Для изменения самих форм, нужно поместить файлы oubli.html и mot_de_passe.html в
папку /squelettes/formulaires/.
Вот и все! Если все сделано правильно - новые пользователи смогут регистрироваться на
вашем сайте.
Просмотр статей и разделов только для
зарегистрированных пользователей (ручная проверка)
Для этой опции нужно добавить в начало шаблона, перед <BOUCLE_main> код:
<?php if ($auteur_session) { ?>
А так же после <//B_main>:
<?php } else { ?>
<INCLURE {fond=inc_restricted}>
<?php } ?>
Если пользователь не авторизирован и просматривает такую статью\раздел – он вместо
статьи увидит содержимое шаблона inc_restricted.
Просмотр статей и разделов только для
зарегистрированных пользователей (проверка с
помощью плагина)
Для этой опции существует плагин Acces Restreint (http://contrib.spip.net/Acces-Restreint-30). Плагин позволяет скрывать как разделы, так и статьи в этих разделах.
Важная деталь: если скрыть единственную статью в разделе этим плагином – то
родительский раздел статьи так же будет скрыт.
После установки и настройки этого плагина, все соответствующие элементы не будут
отображаться на сайте (если в букле не указать критерий {tout_voir}).
Чтобы обрабатывать ошибки и показывать пользователям сообщение об ограничении
доступа существуют два фильтра:
 Для статей - AccesRestreint_article_restreint
[(#ID_ARTICLE|AccesRestreint_article_restreint|?{'<INCLURE
{fond=inc_restricted}>','<INCLURE {fond=404}>'})]
Проверяем: если статья с #ID_ARTICLE скрыта – мы показываем шаблон
inc_restricted.html, если такой статьи не существует – показываем шаблон 404

страницы.
Для разделов - AccesRestreint_article_restreinte
[(#ID_RUBRIQUE|AccesRestreint_article_restreinte|?{'<INCLURE
{fond=inc_restricted}>','<INCLURE {fond=404}>'})]
Проверяем: если раздел с #ID_ RUBRIQUE скрыт – мы показываем шаблон
inc_restricted.html, если такого раздела не существует – показываем шаблон
404 страницы.
Подробную информацию по использованию плагина можно найти по ссылке
http://contrib.spip.net/Le-plugin-Acces-Restreint.
Download