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

Рубрика: Хаки для DLE » Хак DLE 13.1, 13.0, 12.1, 12.0, 11.3, 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8
Проверка 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 на свободность при регистрации
Хак дле проверка Email на занятость при регистрации или свободен почтовый адрес E-mail для регистрации на сайта, проверка производиться в базе данных всё лучшее у нас форумы, хаки, модули, шаблоны.
  • 80
Рубрика: DLE хаки » Хак для DLE
Ранее » DLE Скачка из модального окна« Далее Запрет на добавление новостей с одинаковым заголовком
Нажмите на ссылку, чтобыОставить комментарий