Все для DataLife Engine / DLE хаки / Хак для DLE / Проверка Email на занятость при регистрации

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


Представляем хак для дле проверка Email на занятость при регистрации или свободен почтовый адрес E-mail для регистрации на сайта, проверка производиться в базе данных и запрещает регистрацию если Email адрес почты дублируется. Это довольно простой скрипт dle проверки БД на занятость email, скрипт будет проверять при регистрации свободен ли email и логин на портале. Решение для DLE 14 и выше скрипт проверки Email-адреса (почты) на занят или нет при регистрации.

Установка хака проверка Email на свободность при регистрации
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>";


Для версии DLE 10/12
Заменить на:

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>";
}


Для версии DLE 13/14 и выше Читаем комметарий, совет от пользователя: Buhanka2

Заменить на:
	$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 на свободность при регистрации

Proverka-Email-na-zanyatost-pri-registracii-DLE.rar [29,95 Kb] (cкачиваний: 99)

Новость отредактировал: dle9.com - 8-11-2020, 13:58
Причина: Решение для DLE 13/14 и выше

  • 80

Комментарии 5

Buhanka2 от 8 ноября 2020 10:27
Цитата: dle9.com
Цитата: Buhanka2
Цитата: dle9.com
Цитата: Buhanka2
14.0 не работает

старый хак в этом дело, можете тут попросить вам помочь его переделать для версии dle 14

А на этом сайте уже не осталось толковых людей, там сидят дети в администрации, которые вмешиваются в диалог без причины а потом и вовсе банят. (ПунПун, он же ЛэйзиДУВ в частности). dle-faq давно в помойку превратился.

Не знал, что так обстоят дела там, тогда забросить удочку на разные форумы, как CyberForum ru›dle/ с просьбой помочь, есть ещё многое форумов, где ради интереса помогают, потом всегда можно разобраться самостоятельно.
Сценарий действий такой , изучить как изменился код PHP в новых файлах куда добавляется код, отредактировать код в некоторых местах, чаще всего не придется менять код

Вероятной всего проблема со вставкой кода в скрпит
Со скриптом там не вставку надо делать, взять код из новой версии JS dle и в нужных местах добавить изменения, так будет надежней.

Да уже разобрался сам. В самой последней правке в if нужно просто вставлять то что прописано в стандартном файле вместо это правки и всё
dle9.com от 6 ноября 2020 20:13
Цитата: Buhanka2
Цитата: dle9.com
Цитата: Buhanka2
14.0 не работает

старый хак в этом дело, можете тут попросить вам помочь его переделать для версии dle 14

А на этом сайте уже не осталось толковых людей, там сидят дети в администрации, которые вмешиваются в диалог без причины а потом и вовсе банят. (ПунПун, он же ЛэйзиДУВ в частности). dle-faq давно в помойку превратился.

Не знал, что так обстоят дела там, тогда забросить удочку на разные форумы, как CyberForum ru›dle/ с просьбой помочь, есть ещё многое форумов, где ради интереса помогают, потом всегда можно разобраться самостоятельно.
Сценарий действий такой , изучить как изменился код PHP в новых файлах куда добавляется код, отредактировать код в некоторых местах, чаще всего не придется менять код

Вероятной всего проблема со вставкой кода в скрпит
Со скриптом там не вставку надо делать, взять код из новой версии JS dle и в нужных местах добавить изменения, так будет надежней.
Buhanka2 от 6 ноября 2020 17:23
Цитата: dle9.com
Цитата: Buhanka2
14.0 не работает

старый хак в этом дело, можете тут попросить вам помочь его переделать для версии dle 14

А на этом сайте уже не осталось толковых людей, там сидят дети в администрации, которые вмешиваются в диалог без причины а потом и вовсе банят. (ПунПун, он же ЛэйзиДУВ в частности). dle-faq давно в помойку превратился.
dle9.com от 6 ноября 2020 11:45
Цитата: Buhanka2
14.0 не работает

старый хак в этом дело, можете тут попросить вам помочь его переделать для версии dle 14
Внимание! У Вас нет прав для просмотра скрытого текста.
Buhanka2 от 6 ноября 2020 08:55
14.0 не работает
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent