Проверка Email на занятость при регистрации

Рубрика: Хаки для DLE » Хак DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
Проверка Email на занятость при регистрации
Представляем хак для дле проверка Email на занятость при регистрации или свободен почтовый адрес E-mail для регистрации на сайта, проверка производиться в базе данных и запрещает регистрацию если Email адрес почты дублируется. Это довольно простой скрипт dle проверки БД на занятость email, скрипт будет проверять при регистрации свободен ли email и логин на портале.

Установка хака проверка Email на свободность при регистрации
<a href="http://www.dle9.com/">дле</a>

1. Открыть файл дле шаблона registration.tpl и найти:

<input type="text" name="email" class="f_input" />


Заменить на:

<input type="text" name="email" id="email" class="f_input" /> <input class="bbcodes" style="height: 22px; font-size: 11px;" title="Проверить доступность E-Mail для регистрации" onclick="CheckEmail(); return false;" type="button" value="Проверить E-Mail" /><br /><div id='result-email'></div>


2. Открыть файл engine/classes/js/dle_js.js и найти:

function CheckLogin(){var a=document.getElementById("name").value;ShowLoading("");$.post(dle_root+"engine/ajax/registration.php",{name:a},function(a){HideLoading("");$("#result-registration").html(a)});return!1}


Добавить ниже:

function CheckEmail(){var a=document.getElementById("email").value;ShowLoading("");$.post(dle_root+"engine/ajax/registration.php",{email:a},function(a){HideLoading("");$("#result-email").html(a)});return!1}


3. Открыть файл engine/ajax/registration.php и найти:

function check_name($name) {
	global $lang, $db, $banned_info, $relates_word, $config;
	...
	... 


Добавить выше:

function check_email($email) {
	global $lang, $db, $banned_info, $config;
	$stop = "";
	
	if( empty( $email ) OR strlen( $email ) > 50 OR @count(explode("@", $email)) != 2 OR !preg_match( "|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is", $email)) $stop .= $lang['reg_err_6'];
	if( count( $banned_info['email'] ) ) {
		foreach ( $banned_info['email'] as $banned ) {
			$banned['email'] = str_replace( '\*', '.*', preg_quote( $banned['email'], "#" ) );
		
			if( $banned['email'] and preg_match( "#^{$banned['email']}$#i", $email ) ) {
				if( $banned['descr'] ) {
					$lang['reg_err_23'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_23'] );
					$lang['reg_err_23'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_23'] );
				} else {
					$lang['reg_err_23'] = str_replace( "{descr}", "", $lang['reg_err_23'] );
				}
			
				$stop .= $lang['reg_err_23'];
			}
		}
	}
	
	if( $stop == "" ) {
		$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email='" . $email . "'" );
		if( $row['count'] ) $stop .= "Пользователь с таким E-Mail адресом уже зарегистрирован!";
	}
	return (!$stop) ? false : $stop;
}


Найти еще:

$name  = $db->safesql(trim(htmlspecialchars($parse->process(convert_unicode($_POST['name'], $config['charset'])), ENT_QUOTES, $config['charset'])));
$name = preg_replace('#\s+#i', ' ', $name);
$allow = check_name($name);
if (!$allow)
	$buffer = "<font color=\"green\">".$lang['reg_ok_ajax']."</font>";
else
	$buffer = "<font color=\"red\">".$allow."</font>";


Заменить на:

if( isset($_POST['name']) ) {
	$name  = $db->safesql(trim(htmlspecialchars($parse->process(convert_unicode($_POST['name'], $config['charset'])), ENT_QUOTES, $config['charset'])));
	$name  = preg_replace('#\s+#i', ' ', $name);
	$allow = check_name($name);
	$buffer = (!$allow) ? "<font color=\"green\">" . $lang['reg_ok_ajax'] . "</font>" : "<font color=\"red\">" . $allow . "</font>";
} elseif( isset($_POST['email']) ) {
	$email = $db->safesql(trim($_POST['email']));
	$allow = check_email($email);
	$buffer = (!$allow) ? "<font color=\"green\">Вы можете использовать данный E-Mail для регистрации</font>" : "<font color=\"red\">" . $allow . "</font>";
}

Готово!

Версия DataLife Engine: Любая
Проверено лично на DLE 10.4, должен работать на dle 10.5
Автор: Vitnet
Закачать полезные хаки DLE у нас, как это хак проверка Email на свободность при регистрации
  • 80
Рубрика: DLE хаки » Хак для DLE
Ранее » DLE Скачка из модального окна« Далее Запрет на добавление новостей с одинаковым заголовком
Добавление комментарияОставить комментарий