<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://ngcms.ru/forum/extern.php?action=feed&amp;tid=2012&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Next Generation CMS :: Форум поддержкиПрикрутите капчу, кто в теме. 300 р.]]></title>
		<link>https://ngcms.ru/forum/viewtopic.php?id=2012</link>
		<description><![CDATA[Самые свежие сообщения в Прикрутите капчу, кто в теме. 300 р..]]></description>
		<lastBuildDate>Sun, 20 Nov 2011 20:48:33 +0000</lastBuildDate>
		<generator>FluxBB 1.5.11</generator>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25253#p25253</link>
			<description><![CDATA[<p>Отбой) Дело было не в бобине)) У хостера неполадки с почтовым сервером, вопрос решили, письма стали доходить. Отрубили сервер после установки хака, зараза) столько времени потерял и вам голову заморочил, пойду убьюсь о стену и хостера за одно))) Спасибо!</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 20:48:33 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25253#p25253</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25252#p25252</link>
			<description><![CDATA[<p><strong>Burelom</strong>, Да не может не работать в таком случае...<br />Хорошо бы взглянуть весь архив с изменениями без звездочек.</p>]]></description>
			<author><![CDATA[dummy@example.com (ROZARD)]]></author>
			<pubDate>Sun, 20 Nov 2011 20:46:38 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25252#p25252</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25251#p25251</link>
			<description><![CDATA[<p>Как нет?</p><p>array_push($params, array(&#039;name&#039; =&gt; &#039;who_bot&#039;, title =&gt; &#039;Если не бот сними галочку:&#039;, &#039;descr&#039; =&gt;&#160; &#039;&#039;,&#039;type&#039; =&gt; &#039;checkbox&#039;));</p><p>и</p><p>if(isset($values[&#039;who_bot&#039;]) &amp;&amp; !empty($values[&#039;who_bot&#039;]))<br />&#160; &#160; &#160; &#160; {<br />&#160; &#160; &#160; &#160; &#160; &#160; // Дополнительная защита от ботов<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160;$msg = &#039;Ботам регистрация запрещена&#039;;<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160;return 0;<br />&#160; &#160; &#160; &#160; }</p><p>Всё на местах, этот вариант сейчас на сайте (родная почта прописана вместо звёздочек)</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 20:41:47 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25251#p25251</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25248#p25248</link>
			<description><![CDATA[<p><strong>Burelom</strong>, Тот что в личке вообще странный и работать он не будет, но зато хак есть от ботов:</p><div class="codebox"><pre><code>sendEmailMessage(
                    $values[&#039;email&#039;],
                    $lang[&#039;letter_title&#039;],
                    $msg,
                    false,
                    false,
                    &#039;html&#039;
                );
sendEmailMessage(
                    $values[&#039;email&#039;],
                    $lang[&#039;letter_title&#039;],
                    $msg,
                    &#039;html&#039;
                );</code></pre></div><p>В приведенном тобой варианте всё нормально, но хака нет...</p>]]></description>
			<author><![CDATA[dummy@example.com (ROZARD)]]></author>
			<pubDate>Sun, 20 Nov 2011 20:14:45 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25248#p25248</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25247#p25247</link>
			<description><![CDATA[<p>ROZARD, прикреплённый auth_basic.php (личка) хорошо работает без хака, с хаком пепец. Плагин взял со старого сайта (0.9.2), изменения в нём сделаны по советам из соседней ветки. Поэтому и подумал, что в 0.9.3 что-то поменяли. Понимаю, что у других работает, не все же сидят на 1 gb. </p><div class="codebox"><pre class="vscroll"><code>&lt;?php

// Protect against hack attempts
if (!defined(&#039;NGCMS&#039;)) die (&#039;HAL&#039;);


//
// Прописываем свой модуль
//
global $AUTH_METHOD;
global $AUTH_CAPABILITIES;
global $config;

class auth_basic {

	// Осуществить вход
	// $username	= логин
	// $password	= пароль
	// $auto_scan	= если 1, то функция сама должна найти нужные параметры среди POST&#039;ов
	function login($auto_scan = 1, $username = &#039;&#039;, $password = &#039;&#039;) {
		global $mysql;

	        if ($auto_scan) {
			$username = $_REQUEST[&#039;username&#039;];
			$password = $_REQUEST[&#039;password&#039;];
		}
		$password = EncodePassword($password);

		$sql = &quot;select * from &quot;.uprefix.&quot;_users where name = &quot;.db_squote($username).&quot; and pass=&quot;.db_squote($password);
		$row = $mysql-&gt;record($sql);

		// Проверяем нужна ли активация
		if ($row[&#039;activation&#039;]) {
			return &#039;ERR:NEED.ACTIVATE&#039;;
		}

		if ($row) { return $row; }
		return &#039;&#039;;
	}

	//
	// Сохранить в БД информацию о том, что пользователь авторизовался
	// $dbrow	= строка из нашей таблицы пользователей
	function save_auth($dbrow) {
		global $config, $mysql, $ip;

        // создаём random cookie
        $auth_cookie = md5((isset($config[&#039;crypto_salt&#039;])?$config[&#039;crypto_salt&#039;]:&#039;&#039;).uniqid(rand(),1));

		$query = &quot;update &quot;.uprefix.&quot;_users set last = &quot;.db_squote(time()).&quot;, ip=&quot;.db_squote($ip).&quot;, authcookie = &quot;.db_squote($auth_cookie).&quot; where id=&quot;.db_squote($dbrow[&#039;id&#039;]);
		$mysql-&gt;query($query);

		// Вставить юзеру куку
		@setcookie(&#039;zz_auth&#039;, $auth_cookie, ($config[&#039;remember&#039;]?(time() + 3600 * 24 * 365):0), &#039;/&#039;);

		return 1;
	}

	//
	// Проверить авторизацию пользователя
	function check_auth() {
	 	global $config, $mysql, $ip;

	 	$auth_cookie = isset($_COOKIE[&#039;zz_auth&#039;])?$_COOKIE[&#039;zz_auth&#039;]:&#039;&#039;;
	 	if (!$auth_cookie) { return &#039;&#039;; }

	 	$query = &quot;select * from &quot;.uprefix.&quot;_users where authcookie = &quot;.db_squote($auth_cookie).&quot; limit 1&quot;;
	 	$row = $mysql-&gt;record($query);

		// Check for &quot;IPLOCK&quot; protection
		if (pluginGetVariable(&#039;auth_basic&#039;, &#039;iplock&#039;) &amp;&amp; ($ip != $row[&#039;ip&#039;])) {
			return &#039;&#039;;
		}

		// Auth done
	 	if ($row[&#039;name&#039;]) {
			// Check if we need to update last visit field
	 		if ((pluginGetVariable(&#039;auth_basic&#039;, &#039;lastupdate&#039;) &gt; 0) &amp;&amp; ((time() - $row[&#039;last&#039;]) &gt; pluginGetVariable(&#039;auth_basic&#039;, &#039;lastupdate&#039;))) {
	 			$query = &quot;update &quot;.uprefix.&quot;_users set last = &quot;.db_squote(time()).&quot;, ip=&quot;.db_squote($ip).&quot; where id=&quot;.db_squote($row[&#039;id&#039;]);
	 			$mysql-&gt;query($query);
	 		}

	 		return $row;
	 	}
	 	return &#039;&#039;;
	}

	//
	// Отменить авторизацию
	function drop_auth() {
	 	global $config, $mysql, $userROW;

	 	$auth_cookie = $_COOKIE[&#039;zz_auth&#039;];
	 	if (!$auth_cookie) { return; }

		$mysql-&gt;query(&quot;update &quot;.uprefix.&quot;_users set authcookie = &#039;&#039; where id=&quot;.db_squote($userROW[&#039;id&#039;]));
		@setcookie(&#039;zz_auth&#039;, &#039;&#039;, time() - 3600 * 24 * 365, &#039;/&#039;);
	 	return;
	}

	//
	// Вернуть массив параметров, необходимых при регистрации
	function get_reg_params() {
		global $config, $lang;
		$params = array();
		LoadPluginLang(&#039;auth_basic&#039;, &#039;auth&#039;,&#039;&#039;,&#039;auth&#039;);
		array_push($params, array(&#039;name&#039; =&gt; &#039;login&#039;, title =&gt; $lang[&#039;auth_login&#039;], &#039;descr&#039; =&gt; $lang[&#039;auth_login_descr&#039;],&#039;type&#039; =&gt; &#039;input&#039;));
		if ($config[&#039;register_type&#039;] &gt;= 3) {
                	array_push($params, array(&#039;name&#039; =&gt; &#039;password&#039;, title =&gt; $lang[&#039;auth_pass&#039;], &#039;descr&#039; =&gt; $lang[&#039;auth_pass_descr&#039;], &#039;type&#039; =&gt; &#039;password&#039;));
			array_push($params, array(&#039;name&#039; =&gt; &#039;password2&#039;, title =&gt; $lang[&#039;auth_pass2&#039;], &#039;descr&#039; =&gt; $lang[&#039;auth_pass2_descr&#039;],&#039;type&#039; =&gt; &#039;password&#039;));
		}
		array_push($params, array(&#039;name&#039; =&gt; &#039;email&#039;, title =&gt; $lang[&#039;auth_email&#039;], &#039;descr&#039; =&gt; $lang[&#039;auth_email_descr&#039;],&#039;type&#039; =&gt; &#039;input&#039;));
		array_push($params, array(&#039;name&#039; =&gt; &#039;who_bot&#039;, title =&gt; &#039;Если не бот сними галочку:&#039;, &#039;descr&#039; =&gt;  &#039;&#039;,&#039;type&#039; =&gt; &#039;checkbox&#039;));
		return $params;
	}

	//
	// Провести регистрацию
	// params = параметры полученные из get_reg_params()
	// values = значения для вышеуказанных параметрах
	// msg	= сообщение об ошибке
	// Возвращаемые значения:
	// 0 - ошибка
	// 1 - всё ok
	function register(&amp;$params, $values, &amp;$msg) {
	 	global $config, $mysql, $lang, $tpl;

		LoadPluginLang(&#039;auth_basic&#039;, &#039;auth&#039;,&#039;&#039;,&#039;auth&#039;);

	 	$error = 0;
	 	$values[&#039;login&#039;] = trim($values[&#039;login&#039;]);

	 	// Preprocess login
	 	if (strlen($values[&#039;login&#039;])&lt;3) {
	 		// Слишком короткий логин
	 		$msg = $lang[&#039;auth_login_short&#039;];
	 		return 0;
	 	}
		
		if(isset($values[&#039;who_bot&#039;]) &amp;&amp; !empty($values[&#039;who_bot&#039;]))
        {
            // Дополнительная защита от ботов
             $msg = &#039;Ботам регистрация запрещена&#039;;
             return 0;
        }

		// Проверяем логин на запрещенные символы
		$csError = false;
		switch (pluginGetVariable(&#039;auth_basic&#039;, &#039;regcharset&#039;)) {
			case 0:
				if (!preg_match(&#039;#^[A-Za-z0-9\.\_\-]+$#s&#039;, $values[&#039;login&#039;])) {
					$csError = true;
				}
				break;
			case 1:
				if (!preg_match(&#039;#^[А-Яа-яёЁ0-9\.\_\-]+$#s&#039;, $values[&#039;login&#039;])) {
					$csError = true;
				}
				break;
			case 2:
				if (!preg_match(&#039;#^[А-Яа-яёЁA-Za-z0-9\.\_\-]+$#s&#039;, $values[&#039;login&#039;])) {
					print &quot;CASE2-err [&quot;.$values[&#039;login&#039;].&quot;]&quot;;
					$csError = true;
				}
				break;
			case 3:
				if (!preg_match(&#039;#^[\x21-\x7e\xc0-\xffёЁ]+$#s&#039;, $values[&#039;login&#039;])) {
					$csError = true;
				}
				break;
			case 4:
				break;

		}


	 	if (preg_match(&#039;/[&amp;&lt;&gt;\\&quot;&#039;.&quot;&#039;&quot;.&#039;]/&#039;, $values[&#039;login&#039;]) || $csError) {
	 		// Запрещенные HTML символы
	 		$msg = $lang[&#039;auth_login_html&#039;];
	 		return 0;
	 	}


	 	if ($config[&#039;register_type&#039;] &gt;= 3) {
	 		if (strlen($values[&#039;password&#039;]) &lt; 3) {
		 		// Слишком короткий пароль
		 		$msg = $lang[&#039;auth_pass_short&#039;];
		 		return 0;

		 	} else if ($values[&#039;password&#039;] != $values[&#039;password2&#039;]) {
		 		// Несовпадение паролей
		 		$msg = $lang[&#039;auth_pass_diff&#039;];
		 		return 0;
		 	}
		}

		if ((strlen($values[&#039;email&#039;]) &gt; 70) || (!preg_match(&quot;/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/&quot;, $values[&#039;email&#039;]))) {
			// Неверный email
			$msg = $lang[&#039;auth_email_wrong&#039;];
			return 0;

		}

		$row = $mysql-&gt;record(&quot;select * from &quot;.uprefix.&quot;_users where lower(name)=&quot;.db_squote(strtolower($values[&#039;login&#039;])).&quot; or mail=&quot;.db_squote($values[&#039;email&#039;]));
		if (is_array($row)) {
			// Дублирование логина/email&#039;а
			if (strtolower($row[&#039;mail&#039;]) == strtolower($values[&#039;email&#039;])) {
				// email dup
				$msg = $lang[&#039;auth_email_dup&#039;];
				return 0;
			}
			// Если не мыло, то логин
			$msg = $lang[&#039;auth_login_dup&#039;];
			return 0;
		}

		// Всё в порядке, регим
		$add_time = time() + ($config[&#039;date_adjust&#039;] * 60);

		// Статус пользователя по умолчанию
		$regstatus = intval(pluginGetVariable(&#039;auth_basic&#039;,&#039;regstatus&#039;));
		if (($regstatus &lt; 1)||($regstatus &gt; 4))
			$regstatus = 4;

		// Определяем действия в зависимости от типа регистрации
		switch ($config[&#039;register_type&#039;]) {

			// 0 - Мгновенная [автогенерация пароля, без email нотификации]
			case 0:
				$newpassword = MakeRandomPassword();
				$mysql-&gt;query(&quot;INSERT INTO &quot;.uprefix.&quot;_users (name, pass, mail, status, reg, last) VALUES (&quot;.db_squote($values[&#039;login&#039;]).&quot;, &quot;.db_squote(EncodePassword($newpassword)).&quot;, &quot;.db_squote($values[&#039;email&#039;]).&quot;, &quot;.$regstatus.&quot;, &#039;&quot;.$add_time.&quot;&#039;, &#039;&#039;)&quot;);
				msg(array(
					&quot;text&quot; =&gt; $lang[&#039;msgo_registered&#039;],
					&quot;info&quot; =&gt; str_replace(array(&#039;{login}&#039;, &#039;{password}&#039;), array($values[&#039;login&#039;], $newpassword), $lang[&#039;auth_reg.success0&#039;])
				));
				break;

			// 1 - Простая [автогенерация пароля, с email нотификацией]
			case 1:
				$newpassword = MakeRandomPassword();
				$mysql-&gt;query(&quot;INSERT INTO &quot;.uprefix.&quot;_users (name, pass, mail, status, reg, last) VALUES (&quot;.db_squote($values[&#039;login&#039;]).&quot;, &quot;.db_squote(EncodePassword($newpassword)).&quot;, &quot;.db_squote($values[&#039;email&#039;]).&quot;, &quot;.$regstatus.&quot;, &#039;&quot;.$add_time.&quot;&#039;, &#039;&#039;)&quot;);

				$tvars[&#039;vars&#039;] = array( &#039;login&#039; =&gt; $values[&#039;login&#039;],
										&#039;home&#039; =&gt; home,
										&#039;password&#039; =&gt; $newpassword);
				$tvars[&#039;regx&#039;] = array(
					&#039;#\[activation\].+?\[\/activation]#is&#039; =&gt; &#039;&#039;,
				);

				$tpl -&gt; template(&#039;register&#039;, GetPluginLangDir(&#039;auth_basic&#039;));
				$tpl -&gt; vars(&#039;register&#039;, $tvars);
				$msg = $tpl-&gt;show(&#039;register&#039;);

				sendEmailMessage(
					$values[&#039;email&#039;],
					$lang[&#039;letter_title&#039;],
					$msg,
					&#039;html&#039;,
					&#039;***@***&#039;
				);
				msg(array(
					&quot;text&quot; =&gt; $lang[&#039;msgo_registered&#039;],
					&quot;info&quot; =&gt; str_replace(array(&#039;{login}&#039;, &#039;{password}&#039;, &#039;{email}&#039;), array($values[&#039;login&#039;], $newpassword, $values[&#039;email&#039;]), $lang[&#039;auth_reg.success1&#039;])
			));
				break;

			// 2 - С подтверждением [автогенерация пароля, пароль отправляется на email адрес и не показывается в админке]
			case 2:
				$newpassword	=	MakeRandomPassword();
				$mysql-&gt;query(&quot;INSERT INTO &quot;.uprefix.&quot;_users (name, pass, mail, status, reg, last) VALUES (&quot;.db_squote($values[&#039;login&#039;]).&quot;, &quot;.db_squote(EncodePassword($newpassword)).&quot;, &quot;.db_squote($values[&#039;email&#039;]).&quot;, &quot;.$regstatus.&quot;, &#039;&quot;.$add_time.&quot;&#039;, &#039;&#039;)&quot;);
				$userid			=	$mysql-&gt;record(&#039;select LAST_INSERT_ID() as id&#039;);
				$link			=	generatePluginLink(&#039;core&#039;, &#039;activation&#039;, array(&#039;userid&#039; =&gt; $userid[&#039;id&#039;], &#039;code&#039; =&gt; $actcode), array(), false, true);

				$actlink		=	&#039;&lt;a href=&quot;&#039;.$link.&#039;&quot;&gt;&#039;.$link.&#039;&lt;/a&gt;&#039;;

				$tvars[&#039;vars&#039;] = array( &#039;login&#039; =&gt; $values[&#039;login&#039;],
										&#039;home&#039; =&gt; home,
										&#039;password&#039; =&gt; $newpassword);
				$tvars[&#039;regx&#039;] = array(
					&#039;#\[activation\].+?\[\/activation]#is&#039; =&gt; &#039;&#039;,
				);

				$tpl -&gt; template(&#039;register&#039;, GetPluginLangDir(&#039;auth_basic&#039;));
				$tpl -&gt; vars(&#039;register&#039;, $tvars);
				$msg = $tpl-&gt;show(&#039;register&#039;);

				sendEmailMessage(
					$values[&#039;email&#039;],
					$lang[&#039;letter_title&#039;],
					$msg,
					&#039;html&#039;,
					&#039;***@***&#039;
				);
				msg(array(
					&quot;text&quot; =&gt; $lang[&#039;msgo_registered&#039;],
					&quot;info&quot; =&gt; str_replace(array(&#039;{login}&#039;, &#039;{password}&#039;, &#039;{email}&#039;), array($values[&#039;login&#039;], $newpassword, $values[&#039;email&#039;]), $lang[&#039;auth_reg.success2&#039;])
			));
				break;

			// 3 - Ручная с нотификацией [ручная генерация пароля, email нотификация]
			case 3:
				$mysql-&gt;query(&quot;INSERT INTO &quot;.uprefix.&quot;_users (name, pass, mail, status, reg, last) VALUES (&quot;.db_squote($values[&#039;login&#039;]).&quot;, &quot;.db_squote(EncodePassword($values[&#039;password&#039;])).&quot;, &quot;.db_squote($values[&#039;email&#039;]).&quot;, &quot;.$regstatus.&quot;, &#039;&quot;.$add_time.&quot;&#039;, &#039;&#039;)&quot;);

				$tvars[&#039;vars&#039;] = array( &#039;login&#039; =&gt; $values[&#039;login&#039;],
										&#039;home&#039; =&gt; home,
										&#039;password&#039; =&gt; $values[&#039;password&#039;]);
				$tvars[&#039;regx&#039;] = array(
					&#039;#\[activation\].+?\[\/activation]#is&#039; =&gt; &#039;&#039;,
				);

				$tpl -&gt; template(&#039;register&#039;, GetPluginLangDir(&#039;auth_basic&#039;));
				$tpl -&gt; vars(&#039;register&#039;, $tvars);
				$msg = $tpl-&gt;show(&#039;register&#039;);

				sendEmailMessage(
						$values[&#039;email&#039;],
						$lang[&#039;letter_title&#039;],
						$msg,
						&#039;html&#039;,
						&#039;***@***&#039;
				);
				msg(array(
					&quot;text&quot; =&gt; $lang[&#039;msgo_registered&#039;],
					&quot;info&quot; =&gt; str_replace(array(&#039;{login}&#039;, &#039;{password}&#039;, &#039;{email}&#039;), array($values[&#039;login&#039;], $values[&#039;password&#039;], $values[&#039;email&#039;]), $lang[&#039;auth_reg.success3&#039;])
				));

				break;

			// 4 - Ручная с подтверждением [ручная генерация пароля, подтверждение email адреса]
			case 4:
				$actcode		=	MakeRandomPassword();
				$mysql-&gt;query(&quot;INSERT INTO &quot;.uprefix.&quot;_users (name, pass, mail, status, reg, last, activation) VALUES (&quot;.db_squote($values[&#039;login&#039;]).&quot;, &quot;.db_squote(EncodePassword($values[&#039;password&#039;])).&quot;, &quot;.db_squote($values[&#039;email&#039;]).&quot;, &quot;.$regstatus.&quot;, &#039;&quot;.$add_time.&quot;&#039;, &#039;&#039;, &quot;.db_squote($actcode).&quot;)&quot;);
				$userid			=	$mysql-&gt;record(&#039;select LAST_INSERT_ID() as id&#039;);
				$link			=	generatePluginLink(&#039;core&#039;, &#039;activation&#039;, array(&#039;userid&#039; =&gt; $userid[&#039;id&#039;], &#039;code&#039; =&gt; $actcode), array(), false, true);

				$actlink		=	&#039;&lt;a href=&quot;&#039;.$link.&#039;&quot;&gt;&#039;.$link.&#039;&lt;/a&gt;&#039;;

				$tvars[&#039;vars&#039;] = array( &#039;login&#039; =&gt; $values[&#039;login&#039;],
										&#039;home&#039; =&gt; home,
										&#039;password&#039; =&gt; $values[&#039;password&#039;],
										&#039;activate_url&#039; =&gt; $actlink);

				$tvars[&#039;regx&#039;] = array(
					&#039;#\[activation\](.+?)\[\/activation]#is&#039; =&gt; &#039;$1&#039;,
				);

				$tpl -&gt; template(&#039;register&#039;, GetPluginLangDir(&#039;auth_basic&#039;));
				$tpl -&gt; vars(&#039;register&#039;, $tvars);
				$msg = $tpl-&gt;show(&#039;register&#039;);

				sendEmailMessage(
					$values[&#039;email&#039;],
					$lang[&#039;letter_title&#039;],
					$msg,
					&#039;html&#039;,
					&#039;***@***&#039;
				);
				msg(array(
					&quot;text&quot; =&gt; $lang[&#039;msgo_registered&#039;],
					&quot;info&quot; =&gt; str_replace(array(&#039;{login}&#039;, &#039;{password}&#039;, &#039;{email}&#039;), array($values[&#039;login&#039;], $values[&#039;password&#039;], $values[&#039;email&#039;]), $lang[&#039;auth_reg.success4&#039;])
				));
			//print &quot;&lt;pre&gt;&quot;.var_export($lang, true).&quot;&lt;/pre&gt;&quot;;
		}

		return 1;

	}

	//
	// Вернуть массив параметров, необходимых для восстановления пароля
	function get_restorepw_params() {
		global $config, $lang;
		$params = array();

		LoadPluginLang(&#039;auth_basic&#039;, &#039;auth&#039;,&#039;&#039;,&#039;auth&#039;);
		$mode = pluginGetVariable(&#039;auth_basic&#039;,&#039;restorepw&#039;);
		if (!$mode) {
			return false;
			//array_push($params, array(&#039;text&#039; =&gt; $lang[&#039;auth_norestore&#039;]));
			//return $params;
	        }

		array_push($params, array(&#039;text&#039; =&gt; $lang[&#039;auth_restore_&#039;.$mode]));
	        if ($mode != &#039;email&#039;) {
			array_push($params, array(&#039;name&#039; =&gt; &#039;login&#039;, title =&gt; $lang[&#039;auth_login&#039;],&#039;type&#039; =&gt; &#039;input&#039;));
		}
		if ($mode != &#039;login&#039;) {
			array_push($params, array(&#039;name&#039; =&gt; &#039;email&#039;, title =&gt; $lang[&#039;auth_email&#039;],&#039;type&#039; =&gt; &#039;input&#039;));
		}
		return $params;
	}

	//
	// Восстановить пароль
	function restorepw(&amp;$params, $values, &amp;$msg) {
	 	global $config, $mysql, $lang, $tpl;

	 	$error = 0;
	 	$values[&#039;login&#039;] = trim($values[&#039;login&#039;]);
	 	$values[&#039;email&#039;] = trim($values[&#039;email&#039;]);

		LoadPluginLang(&#039;auth_basic&#039;, &#039;auth&#039;,&#039;&#039;,&#039;auth&#039;);
		$mode = pluginGetVariable(&#039;auth_basic&#039;,&#039;restorepw&#039;);

	 	if (!$mode) {
	 		$msg = $lang[&#039;auth_norestore&#039;];
	 		return 0;
	 	}

	 	$px = array();

		if ($mode != &#039;email&#039;) {
			if (!$values[&#039;login&#039;]) {
	 			$msg = $lang[&#039;auth_login_require&#039;];
	 			return 0;
	 		}
	 		array_push($px, &quot;name = &quot;.db_squote($values[&#039;login&#039;]));
	 	}

	 	if ($mode != &#039;login&#039;) {
	 		if (!$values[&#039;email&#039;]) {
				$msg = $lang[&#039;auth_email_require&#039;];
				return 0;
			}
	 		array_push($px, &quot;mail = &quot;.db_squote($values[&#039;email&#039;]));
		}

		$query = &quot;select * from &quot;.uprefix.&quot;_users where &quot;.implode(&#039; and &#039;,$px);
		$row = $mysql-&gt;record($query);
		if (is_array($row)) {
		 	// Нашли юзера
			$newpassword = MakeRandomPassword();
			$mysql-&gt;query(&quot;UPDATE &quot;.uprefix.&quot;_users SET newpw=&quot;.db_squote(EncodePassword($newpassword)).&quot; WHERE id=&quot;.$row[&#039;id&#039;]);

			$tvars[&#039;vars&#039;] = array( &#039;login&#039; =&gt; $row[&#039;name&#039;],
						&#039;home&#039; =&gt; home,
						&#039;newpw&#039; =&gt; $newpassword);
			$tvars[&#039;vars&#039;][&#039;pwurl&#039;] = generatePluginLink(&#039;core&#039;, &#039;lostpassword&#039;, array(&#039;userid&#039; =&gt; $row[&#039;id&#039;], &#039;code&#039; =&gt; EncodePassword($newpassword)), array(), false, true);

			$tpl -&gt; template(&#039;restorepw&#039;, GetPluginLangDir(&#039;auth_basic&#039;));
			$tpl -&gt; vars(&#039;restorepw&#039;, $tvars);

			sendEmailMessage($row[&#039;mail&#039;],$lang[&#039;auth_mail_subj&#039;],$tpl-&gt;show(&#039;restorepw&#039;), false, &#039;***@***&#039;);
			msg(array(&quot;text&quot; =&gt; $lang[&#039;msgo_sent&#039;]));

			return 1;

		} else {
			$msg = $lang[&#039;auth_nouser&#039;];
			return 0;
		}
        }

	//
  // Подтверждение восстановления пароля
  //
  function confirm_restorepw(&amp;$msg, $reqid = NULL, $reqsecret = NULL) {
		global $config, $mysql, $lang, $tpl;

		LoadPluginLang(&#039;auth_basic&#039;, &#039;auth&#039;,&#039;&#039;,&#039;auth&#039;);

	 	$row = $mysql-&gt;record(&quot;select * from &quot;.uprefix.&quot;_users where id = &quot;.db_squote($reqid));
	 	if (is_array($row)) {
	 		if ($reqsecret == $row[&#039;newpw&#039;]) {
	 			// OK !!!
	 			$msg = $lang[&#039;auth_newpw_ok&#039;];
	 			$mysql-&gt;query(&#039;update &#039;.uprefix.&#039;_users set pass=newpw where id = &#039;.db_squote($reqid));
	 			return 1;
	 		}
	 	}
		$msg = $lang[&#039;auth_newpw_fail&#039;];
		return 0;
	}
}

$AUTH_METHOD[&#039;basic&#039;]	= new auth_basic;
$AUTH_CAPABILITIES[&#039;basic&#039;] = array(&#039;login&#039; =&gt; &#039;1&#039;, &#039;db&#039; =&gt; &#039;1&#039;);

if (pluginGetVariable(&#039;auth_basic&#039;,&#039;en_dbprefix&#039;)) {
	$config[&#039;uprefix&#039;] = pluginGetVariable(&#039;auth_basic&#039;,&#039;dbprefix&#039;);
}</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 20:08:04 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25247#p25247</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25242#p25242</link>
			<description><![CDATA[<p>Плагин даже не обновлялся..</p>]]></description>
			<author><![CDATA[dummy@example.com (Wolverine)]]></author>
			<pubDate>Sun, 20 Nov 2011 19:43:46 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25242#p25242</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25241#p25241</link>
			<description><![CDATA[<p>Хак работает отлично, а вот с функцией sendEmailMessage (auth_basic) в 9.3 лучше не стало, не работает на хостинге 1gb. Попробовал так: <a href="/forum/go.php?link=http://ngcms.ru/forum/viewtopic.php?id=1790" rel="nofollow">http://ngcms.ru/forum/viewtopic.php?id=1790</a>, видимо что-то изменили в плагине, метод уже не работает.</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 19:41:51 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25241#p25241</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25231#p25231</link>
			<description><![CDATA[<p>Пробую сейчас на новом сайте, со всеми настройками по умолчанию и дефолтным шаблоном, чтоб точно убедиться что дело в изменениях auth_basic.php. Если не пойдёт, кину адрес в личку.</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 17:35:16 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25231#p25231</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25229#p25229</link>
			<description><![CDATA[<p><strong>Burelom</strong>, Скинь мне в личку адрес сайта, попробую сам у тебя зарегистрироваться</p>]]></description>
			<author><![CDATA[dummy@example.com (ROZARD)]]></author>
			<pubDate>Sun, 20 Nov 2011 17:21:39 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25229#p25229</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25228#p25228</link>
			<description><![CDATA[<p>Перепроверил, почта работает до изменений. Внёс поправки в cmodules.php - работает, после изменений в auth_basic.php письма перестают приходить, хотя чекбокс работает отлично.</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 17:17:46 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25228#p25228</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25226#p25226</link>
			<description><![CDATA[<p>Эти изменения никак не влияют на отправку почты...</p>]]></description>
			<author><![CDATA[dummy@example.com (ROZARD)]]></author>
			<pubDate>Sun, 20 Nov 2011 16:31:06 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25226#p25226</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25225#p25225</link>
			<description><![CDATA[<p>Так ответ примерно тот же: &quot;Аосмотрите дамп почтового запроса в скриптах при отправке:<br />Есть обязательное условие: поле FROM должно указыввать на почтовый<br />ящик который реально создан в нашей почтовой системе (т.е. Вы<br />завели ящик у нас и в поле from указываете его)&quot;<br />А что я там модернизирую мои проблемы(( Проблема появилась после изменений описанных выше, при изменениях в auth_basic.php, чтот видимо затронуло из прошлых изменений. Хреново хостинг 1 gb дружит с ng-почтой, в новой версии почта работает тоже только после изменения auth_basic.php, как советовали в прошлой ветке. С другими движками всё ок.</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 16:25:23 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25225#p25225</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25224#p25224</link>
			<description><![CDATA[<p><strong>Burelom</strong>, А у хостеров спрашивал?</p>]]></description>
			<author><![CDATA[dummy@example.com (ROZARD)]]></author>
			<pubDate>Sun, 20 Nov 2011 16:14:20 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25224#p25224</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=25223#p25223</link>
			<description><![CDATA[<p>Применил - работает, но опять появилась хренотень с письмами. Доходят только на гугловские ящики. Подобное у меня уже было <a href="/forum/go.php?link=http://ngcms.ru/forum/viewtopic.php?id=1790" rel="nofollow">http://ngcms.ru/forum/viewtopic.php?id=1790</a>, тогда вы мне не слабо помогли, сам в коде дуб-дубом. Может подскажите в чём дело, в моём &quot;сложном случае&quot;)</p>]]></description>
			<author><![CDATA[dummy@example.com (Burelom)]]></author>
			<pubDate>Sun, 20 Nov 2011 16:11:13 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=25223#p25223</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прикрутите капчу, кто в теме. 300 р.]]></title>
			<link>https://ngcms.ru/forum/viewtopic.php?pid=23567#p23567</link>
			<description><![CDATA[<p>ROZARD, огромное спасибище!!!</p>]]></description>
			<author><![CDATA[dummy@example.com (Andre)]]></author>
			<pubDate>Thu, 22 Sep 2011 05:48:36 +0000</pubDate>
			<guid>https://ngcms.ru/forum/viewtopic.php?pid=23567#p23567</guid>
		</item>
	</channel>
</rss>
