Делаем Ajax регистрацию в 1С-Битрикс без компонента, используем Bootstrap, Jquery, Битрикс API
Для работы с формой и всплывашки подключаем bootstrap.css и bootstrap.js в /bitrix/templates/ваш_шаблон/header.php
форма регистрации html код используем верстку bootstrap
Форма регистрации пишем в /bitrix/templates/ваш_шаблон/footer.php
ссылка авторизации
<a data-toggle="modal" data-target="#register-modal" href="#">регистрация<a/>
<div class="modal fade" id="register-modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close_button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"></span>
</button>
<h4 class="modal-title" id="myModalLabel">Регистрация</h4>
</div>
<div class="modal-body">
<div class="message error hide"></div>
<form id="register-form">
<fieldset class="form-group">
<label for="formGroupExampleInput">Ваше имя</label>
<input type="text" name="firstname" class="form-control" id="formGroupExampleInput" placeholder="Иван">
</fieldset>
<fieldset class="form-group">
<label for="formGroupExampleInput2">Ваша Фамилия</label>
<input type="text" name="lastname" class="form-control" id="formGroupExampleInput2" placeholder="Иванов">
</fieldset>
<fieldset class="form-group">
<label for="exampleInputEmail1">Электронная почта</label>
<input type="email" name="email" class="form-control" placeholder="ivanovivan@gmail.com">
</fieldset>
<fieldset class="form-group">
<label for="exampleInputPassword1">Введите пароль</label>
<input type="password" name="password" class="form-control" placeholder="******">
</fieldset>
<fieldset class="form-group">
<label>Пароль еще раз</label>
<input type="password" name="password_confirm" class="form-control" placeholder="******">
</fieldset>
<fieldset class="form-group">
<label for="formGroupExampleInput">Текст с картинки</label>
<div class="capcja_div">
<div class="capchatext">
<? $CaptchaCode = htmlspecialcharsbx($APPLICATION->CaptchaGetCode()); ?>
<input type="text" class="form-control" name="captcha_word">
<input type="hidden" name="captcha_sid" class="captcha_sid" value="<?=$CaptchaCode?>">
</div>
<div class="capcha_img">
<img src="/bitrix/tools/captcha.php?captcha_sid=<?=$CaptchaCode?>" width="160" height="40" alt="CAPTCHA" />
</div>
<div class="capcha_button">
<button type="button" class="btn btn-lg capcha-button"></button>
</div>
</div>
</fieldset>
<div class="modal-footer">
<div>
<button type="submit" class="btn_blue submit">Зарегестрироваться</button>
</div>
</div>
</form>
</div>
<div class="modal-footer"></div>
</div>
</div>
</div>
javascript для AJAX Авторизации, в /bitrix/templates/ваш_шаблон/ создаем папку js в нем создаем файл main,js и подключаем в шапке в /bitrix/templates/ваш_шаблон/header.php а так же не забываем подключить библтотеки jquery и bootstarp.js
<script src="<?= SITE_TEMPLATE_PATH ?>/js/jquery.min.js"></script>
<script src="<?= SITE_TEMPLATE_PATH ?>/js/bootstrap.min.js"></script>
<script src="<?= SITE_TEMPLATE_PATH ?>/js/main.js"></script>
файл main.js
$(document).ready(function(){
$('#register-form .reg_submit').click(function(e){
$.ajax({
type: 'POST',
url: '/ajax/register.php',
data: $("#register-form").serialize(),
dataType: 'json',
success: function(result){
if (result.status) {
$("#register-form .message").text(result.message);
$("#register-form .message").removeClass("hide");
if (result.status=='success'){
$("#register-form .message").removeClass("error");
$("#register-form .message").addClass("success");
$("#register-form .modal-body").html("");
$("#register-form .modal-footer").html("");
}
}
}
});
e.preventDefault();
return false;
});
});
К корне сайта создаем папку ajax в нем создаем файл register.php и пишем код для регистрации, используем API Битрикса
/ajax/register.php
< ?php
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
? >
< ?
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
if(!empty($_REQUEST['email']) and !empty($_REQUEST['firstname']) and !empty($_REQUEST['lastname']) and !empty($_REQUEST['password']) and !empty($_REQUEST['password_confirm']) ){
if($APPLICATION->CaptchaCheckCode($_REQUEST["captcha_word"], $_REQUEST["captcha_sid"])){
global $USER;
global $DB;
$login = strip_tags($_REQUEST['email']);
$firstname = strip_tags($_REQUEST['firstname']);
$lastname = strip_tags($_REQUEST['lastname']);
$email = strip_tags($_REQUEST['email']);
$password = strip_tags($_REQUEST['password']);
$password_confirm = strip_tags($_REQUEST['password_confirm']);
$bConfirmReq = (COption::GetOptionString("main", "new_user_registration_email_confirmation", "N")) == "Y";
$arFields = Array(
"NAME" => $firstname,
"LAST_NAME" => $lastname,
"EMAIL" => $email,
"LOGIN" => $login,
"LID" => SITE_ID,
"ACTIVE" => "N",
"GROUP_ID" => array(2),
"PASSWORD" => $password,
"CONFIRM_PASSWORD" => $password_confirm,
"CHECKWORD" => md5(CMain::GetServerUniqID().uniqid()),
"~CHECKWORD_TIME" => $DB->CurrentTimeFunction(),
"CONFIRM_CODE" =>$bConfirmReq? randString(8): ""
);
$CUser = new CUser;
$USER_ID = $CUser->Add($arFields);
if (intval($USER_ID) > 0){
$result['status'] = 'success';
$result['message'] = 'Вы успешно регистрировались, Вам отправлено писмо для потверждения';
$arFields['USER_ID'] = $USER_ID;
$arEventFields = $arFields;
$event = new CEvent;
if($bConfirmReq){
$event->SendImmediate("NEW_USER_CONFIRM", SITE_ID, $arEventFields);
}else{
$event->SendImmediate("USER_INFO", SITE_ID, $arEventFields);
}
// Отправляем Оповешение администратору
$event->SendImmediate("NEW_USER", SITE_ID, $arEventFields);
}
else{
$result['status'] = 'error';
$result['message'] = html_entity_decode($CUser->LAST_ERROR);
}
}else{
$result['status'] = 'error';
$result['message'] = 'Не правильный код картинки';
}
}else{
$result['status'] = 'error';
$result['message'] = 'Все поля обязательны для заполнения';
}
echo json_encode($result);
}
? >
а так же добавляем jquery код в main.js для обновление капчи
$(".capcha-button").click(function(){
$.getJSON('/ajax/captcha.php', function(data) {
$('.capcha_img img').attr('src','/bitrix/tools/captcha.php?captcha_sid='+data);
$('.captcha_sid').val(data);
});
return false;
});
PHP Код для обновление капчи пишем в /ajax/captcha.php
< ?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$cpt->Delete( $_REQUEST['captcha_sid'] );
echo json_encode(htmlspecialchars($APPLICATION->CaptchaGetCode()));
? >