Вообщем пытался по вашей статье сделать аякс авторизацию, в результате ничего не получилось
Передо мной стоит следующая задача сделать авторизацию как на sotmarket.ru, авторизация происходит в модальном окне fancybox, при неправильно введенном пароле чтобы ошибка выводилась там же в модальном окне а не открывалась отдельная страница /auth/ и в ней текст ошибки, как я понял для этого нужен фоновый аякс запрос..
У меня на сайте для авторизации используется 2 шаблона компонента bitrix:system.auth.form, шаблон auth содержит ссылки для авторизации или выхода
| Код |
|---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if($arResult["FORM_TYPE"] == "login"):?>
<div class="auth">
<a class="auth-popup" href="/auth/" >Войти</a>
<span></span>
<a href="/auth/?register=yes&backurl=%2Fauth%2F">Регистрация</a>
</div>
<?
else:
?>
<div class="auth">
<a href="/personal/"><?=$arResult["USER_NAME"]?>!</a>
<span></span>
<a href="/?logout=yes">Выйти</a>
</div>
<?endif?>
|
Шаблон beta_auth содержит форму авторизации и дальше по условию форму регистрации и забытого пароля
| Код |
|---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<div class="bx-system-auth-form">
<?if($arResult["FORM_TYPE"] == "login"):?>
<?
if ($arResult['SHOW_ERRORS'] == 'Y' && $arResult['ERROR'])
ShowMessage($arResult['ERROR_MESSAGE']);
?>
<div class="bx-auth">
<div class="bx-auth-title">Войти на сайт</div>
<div class="bx-auth-note">Пожалуйста, авторизуйтесь:</div>
<form id="login-form" name="system_auth_form<?=$arResult["RND"]?>" method="post" target="_top" action="<?=$arResult["AUTH_URL"]?>">
<?if($arResult["BACKURL"] <> ''):?>
<input type="hidden" name="backurl" value="<?=$arResult["BACKURL"]?>" />
<?endif?>
<?foreach ($arResult["POST"] as $key => $value):?>
<input type="hidden" name="<?=$key?>" value="<?=$value?>" />
<?endforeach?>
<input type="hidden" name="AUTH_FORM" value="Y" />
<input type="hidden" name="TYPE" value="AUTH" />
<table class="bx-auth-table">
<tr>
<td class="bx-auth-label"><?=GetMessage("AUTH_LOGIN")?>:</td>
<td><input class="bx-auth-input" type="text" name="USER_LOGIN" maxlength="50" value="<?=$arResult["USER_LOGIN"]?>" size="17" /></td>
</tr>
<tr>
<td class="bx-auth-label"><?=GetMessage("AUTH_PASSWORD")?>:</td>
<td><input class="bx-auth-input" type="password" name="USER_PASSWORD" maxlength="50" size="17" />
<?if($arResult["SECURE_AUTH"]):?>
<span class="bx-auth-secure" id="bx_auth_secure<?=$arResult["RND"]?>" title="<?echo GetMessage("AUTH_SECURE_NOTE")?>" style="display:none">
<div class="bx-auth-secure-icon"></div>
</span>
<noscript>
<span class="bx-auth-secure" title="<?echo GetMessage("AUTH_NONSECURE_NOTE")?>">
<div class="bx-auth-secure-icon bx-auth-secure-unlock"></div>
</span>
</noscript>
<script type="text/javascript">
document.getElementById('bx_auth_secure<?=$arResult["RND"]?>').style.display = 'inline-block';
</script>
<?endif?>
</td>
</tr>
<?if ($arResult["STORE_PASSWORD"] == "Y"):?>
<tr>
<td></td>
<td><input type="checkbox" id="USER_REMEMBER_frm" name="USER_REMEMBER" value="Y" />
<label for="USER_REMEMBER_frm" title="<?=GetMessage("AUTH_REMEMBER_ME")?>"><?echo GetMessage("AUTH_REMEMBER_SHORT")?></label></td>
</tr>
<?endif?>
<?if ($arResult["CAPTCHA_CODE"]):?>
<tr>
<td colspan="2">
<?echo GetMessage("AUTH_CAPTCHA_PROMT")?>:<br />
<input type="hidden" name="captcha_sid" value="<?echo $arResult["CAPTCHA_CODE"]?>" />
<img src="/bitrix/tools/captcha.php?captcha_sid=<?echo $arResult["CAPTCHA_CODE"]?>" width="180" height="40" alt="CAPTCHA" /><br /><br />
<input type="text" name="captcha_word" maxlength="50" value="" /></td>
</tr>
<?endif?>
<tr>
<td></td>
<td class="authorize-submit-cell"><input type="submit" name="Login" value="<?=GetMessage("AUTH_LOGIN_BUTTON")?>" /></td>
</tr>
<?if($arResult["NEW_USER_REGISTRATION"] == "Y"):?>
<tr>
<td colspan="2"><noindex><a href="<?=$arResult["AUTH_REGISTER_URL"]?>" rel="nofollow"><?=GetMessage("AUTH_REGISTER")?></a></noindex><br /></td>
</tr>
<?endif?>
<tr>
<td colspan="2"><noindex><a href="<?=$arResult["AUTH_FORGOT_PASSWORD_URL"]?>" rel="nofollow"><?=GetMessage("AUTH_FORGOT_PASSWORD_2")?></a></noindex></td>
</tr>
<?if($arResult["AUTH_SERVICES"]):?>
<tr>
<td colspan="2">
<div class="bx-auth-lbl"><?//=GetMessage("socserv_as_user_form")?></div>
<?
/*$APPLICATION->IncludeComponent("bitrix:socserv.auth.form", "icons",
array(
"AUTH_SERVICES"=>$arResult["AUTH_SERVICES"],
"SUFFIX"=>"form",
),
$component,
array("HIDE_ICONS"=>"Y")
);*/
?>
</td>
</tr>
<?endif?>
</table>
</form>
</div>
<?if($arResult["AUTH_SERVICES"]):?>
<?
/*$APPLICATION->IncludeComponent("bitrix:socserv.auth.form", "",
array(
"AUTH_SERVICES"=>$arResult["AUTH_SERVICES"],
"AUTH_URL"=>$arResult["AUTH_URL"],
"POST"=>$arResult["POST"],
"POPUP"=>"Y",
"SUFFIX"=>"form",
),
$component,
array("HIDE_ICONS"=>"Y")
);*/
?>
<?endif?>
<?
//if($arResult["FORM_TYPE"] == "login")
else:
?>
<form action="<?=$arResult["AUTH_URL"]?>">
<table width="95%">
<tr>
<td align="center">
<?=$arResult["USER_NAME"]?><br />
[<?=$arResult["USER_LOGIN"]?>]<br />
<a href="<?=$arResult["PROFILE_URL"]?>" title="<?=GetMessage("AUTH_PROFILE")?>"><?=GetMessage("AUTH_PROFILE")?></a><br />
</td>
</tr>
<tr>
<td align="center">
<?foreach ($arResult["GET"] as $key => $value):?>
<input type="hidden" name="<?=$key?>" value="<?=$value?>" />
<?endforeach?>
<input type="hidden" name="logout" value="yes" />
<input type="submit" name="logout_butt" value="<?=GetMessage("AUTH_LOGOUT_BUTTON")?>" />
</td>
</tr>
</table>
</form>
<?endif?>
</div> |
И все это дело обрабатывается в файле /auth/index.php вот его код
| Код |
|---|
<?
if (!$USER->IsAuthorized()):
if($_GET['register']!='yes' && $_GET['confirm_registration']!='yes'):
$APPLICATION->SetTitle("Авторизация");
$APPLICATION->IncludeComponent("bitrix:system.auth.form", "beta_auth", array(
"REGISTER_URL" => "/auth/",
"FORGOT_PASSWORD_URL" => "/auth/",
"PROFILE_URL" => "/personal/",
"SHOW_ERRORS" => "Y"
),
false
);
endif;
endif;
echo '</div>';
if ($USER->IsAuthorized())
header('Location: /');
?> |
Подскажите как мне сделать авторизацию чтобы ошибки выводились там же в модальном окне а на отдельной странице?