Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

Важная информация

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2010, 16:59   #1
terrible
Гость
 
Сообщений: n/a
Стрелка WWW Помощь с Капчей

Не как не могу прикрепить к регистрации капчу! У меня можно сказать запрос не реагирует на капчу а тупо проверит правильность логина,пороля и регистрирует, а то что номер в капче введен не верно не реагирует. Кто может написать запрос на проверку логина пороля и капчи? Или поделитесь у кого есть
  Ответить с цитированием
Старый 21.04.2010, 17:33   #2
srv38
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 40
Сказал(а) спасибо: 29
Поблагодарили 13 раз(а) в 5 сообщениях
srv38 На верном пути
Радость На гугле поди не забанили?

http://www.google.ru/search?q=капча+на+php
srv38 вне форума   Ответить с цитированием
Старый 21.04.2010, 17:41   #3
anvd24
Новичок
 
Регистрация: 20.04.2010
Адрес: Moscow
Сообщений: 16
Сказал(а) спасибо: 13
Поблагодарили 2 раз(а) в 2 сообщениях
anvd24 На верном пути
По умолчанию

Цитата:
Сообщение от srv38 Посмотреть сообщение
это на мой взгляд юзабельнее.



надеюсь понимаешь о чем тут.

а дальше подгоняй в индекс пхп регистрации респ.
добавляй проверку и в общем то все.

там вроде как написано подробно, но если возникнет вопрос,куда пихать проверку,спрашивай.тебе тут помогут , но за тебя не сделают.

вообще было где то нарыто на просторах инета.
под какую то версию регистрации, сам не помню,но мало ли пригодиться.

некий BY ALEX BARN судя по коментам в самом файлике , делал это так.

Код:
<?php
/*
   REGISTRATION PAGE FOR MANGOS!
   ВЕБ СТРАНИЦА РЕГИСТРАЦИИ ДЛЯ СЕРВЕРА MANGOS! 
   BY ALEX BARN
*/

define('roSSECURE',true);

require_once 'config.php';
require_once 'lang.php';
require_once 'dblayer.php';
require_once 'recaptchalib.php';


$fp = @fsockopen( $host, 3724, $errno, $errstr, 1);
if ($fp >= 1) { 
    $server = '<font color=green>'.$page.'</font>';
} else {
    $server = '<font color=red>'.$page.'</font>';
}

$resp = recaptcha_check_answer ($RECprivatekey,
                                  $_SERVER["REMOTE_ADDR"],
                                  $_POST["recaptcha_challenge_field"],
                                  $_POST["recaptcha_response_field"]);


if ( empty($_POST['username']) AND empty($_POST['passw']) AND empty($_POST['email']) AND !($resp->is_valid) ) {
	$cont = '   <TR>
                <TD vAlign=center align=left width=190>
                  <LABEL
                  for=username>'.$text["name"].'</LABEL>&nbsp;<BR><INPUT
                  id=username style="WIDTH: 300px; HEIGHT: 30px; FONT-SIZE: 12pt" tabIndex=1 maxLength=32
                  size=18 name=username></TD>
                <TD rowSpan=6><IMG height=1 src="'.$img_base.'pixel.gif" width=350></TD></TR>
              <TR><TD width=190 height=10></TD></TR>
                <TD vAlign=center align=left width=190>
                  <LABEL
                  for=passw>'.$text["password"].'</LABEL>&nbsp;<BR><INPUT id=passw
                  style="WIDTH: 300px; HEIGHT: 30px; FONT-SIZE: 12pt" tabIndex=2 type=password maxLength=40
                  size=18 name=passw></TD></TR>
              <TR><TD width=190 height=10></TD></TR>
                <TD vAlign=center align=left width=190>
                  <LABEL
                  for=email>'.$text["e-mail"].'</LABEL>&nbsp;<BR><INPUT id=email
                  style="WIDTH: 300px; HEIGHT: 30px; FONT-SIZE: 12pt" tabIndex=2 maxLength=50
                  size=18 name=email></TD></TR>
              <TR><TD width=190 height=10></TD></TR>
                <TD vAlign=center align=left width=190>
                  <LABEL
                  for=email>'.$text["rec_safety_key"].'</LABEL>&nbsp;<BR>
                  ' . recaptcha_get_html($RECpublickey) . '
                  </TD></TR>
              <TR><TD width=190 height=10></TD></TR>
                  <TD vAlign=center align=center><INPUT class=button
                    style="WIDTH: 184px; HEIGHT: 37px" tabIndex=3 type=image
                    src="'.$img_base.$button.'"
                    value=Create border=0></TD>
              <TR><TD width=190 height=30></TD></TR>
                  <TD><LABEL for=info><center>'.$server.'</center>'.$text["client"].' <font color=orange>'.$client.'</font>
                                      <br>'.$text["realm"].' <font color=orange>'.$realm.'</font></LABEL></TD>
			  </TR></TBODY></TABLE></TD></TR>';
    } elseif ( empty($_POST['username']) OR empty($_POST['passw']) OR empty($_POST['email']) OR !($resp->is_valid) ) {
        $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>
                '.$text["not_all"].'
                <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
    } elseif ( !($resp->is_valid) ) {
        $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>
                '.$text["not_all"].'
                <br><br><a href="" onClick="history.go(-1)">'.$text["rec_safety_key_invalid"].'</a></SMALL></TD></TD></TR>';
    } else {
	    $username = htmlspecialchars(trim("$_POST[username]"));
	    $passw = trim($_POST['passw']);
	    $email = htmlspecialchars(trim($_POST['email']));
        $expansion = trim($expansion);
	    $ip = getenv('REMOTE_ADDR');

	    $realm_db = new DBLayer($host, $user, $password, $db);
	    $realm_db->query("SET NAMES database_encoding");

        $ip_cr = 0;
        
        if ( $lock_reg != 0 ) {
            $query = $realm_db->query("SELECT `last_ip` FROM `account`  WHERE `last_ip`='$ip'");
            while($result = $realm_db->fetch_assoc($query)) $ip_cr++;
        }

        if ( ($ip_cr >= $lock_reg) AND ($lock_reg != 0) )
        {
		    $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>
                    '.$text["ip_limit"][0].$ip.'<br>'.$ip_cr.$text["ip_limit"][1].'
                    <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
	    } else {
            if ( $expansion ) {
                if (
                        $realm_db->query("INSERT INTO `account` (`username`,`sha_pass_hash`, `email`, `last_ip`, `locked`, `expansion`) VALUES ('$username', SHA1(CONCAT(UPPER('$username'), ':', UPPER('$passw'))), '$email', '$ip', '$lock_acc', '$expansion')") 
                      {
		            $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL>
                            '.$text["acc"].'<br><strong><font color=orange size=4>'.$username.'</font></strong><br>'.$text["create"].'
                            <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
		        }
		        else
		        {
		            $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>
                            '.$text["acc"].'<br><strong><font color=orange size=4>'.$username.'</font></strong><br>'.$text["failed"].'
                            <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
		        }
           } else {
                if($realm_db->query("INSERT INTO `account` (`username`,`sha_pass_hash`,`email`,`last_ip`,`locked`) VALUES ('$username','$passw','$email','$ip','$lock_acc')"))
		        {
		            $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL>
                            '.$text["acc"].'<br><strong><font color=orange size=4>'.$username.'</font></strong><br>'.$text["create"].'
                            <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
		        }
		        else
		        {
		            $cont = '<TR><IMG height=1 width=650 src="'.$img_base.'pixel.gif"><TD align=Center><SMALL class=error>
                            '.$text["acc"].'<br><strong><font color=orange size=4>'.$username.'</font></strong><br>'.$text["failed"].'
                            <br><br><a href="" onClick="history.go(-1)">'.$text["backtext"].'</a></SMALL></TD></TD></TR>';
		        }
	       }
        }

	    $realm_db->close();
	    unset($realm_db);
    }

?>
хочу обратить внимание, что скорее всего этот код не рабочий, но имеет место быть,в виде примера.

Последний раз редактировалось anvd24; 21.04.2010 в 17:46.
anvd24 вне форума   Ответить с цитированием
Старый 21.04.2010, 17:49   #4
srv38
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 40
Сказал(а) спасибо: 29
Поблагодарили 13 раз(а) в 5 сообщениях
srv38 На верном пути
По умолчанию

Рассуждаю так, вопрос на РМДЦ мангоса, если тут то скорее всего человек делает капчу для веб морды мангоса, мангос разрешается использовать только в локалках(нихт паблик), в локалке не у каждого врублен интернет(а может его и вообще нету), а приведенная тобой капча без инета не пашет.

З.Ы.Я в одном из своих проектов пользовал вот эту идею, мне понравилось что вводить ничего не надо, все делается мышкой, но есть и минусы ява включена должна быть в браузере.

Последний раз редактировалось srv38; 21.04.2010 в 17:56.
srv38 вне форума   Ответить с цитированием
Старый 21.04.2010, 17:53   #5
anvd24
Новичок
 
Регистрация: 20.04.2010
Адрес: Moscow
Сообщений: 16
Сказал(а) спасибо: 13
Поблагодарили 2 раз(а) в 2 сообщениях
anvd24 На верном пути
По умолчанию

Цитата:
Сообщение от srv38 Посмотреть сообщение
Рассуждаю так, вопрос на РМДЦ мангоса, если тут то скорее всего человек делает капчу для веб морды мангоса, мангос разрешается использовать только в локалках(нихт паблик), в локалке не у каждого врублен интернет(а может его и вообще нету), а приведенная тобой капча без инета не пашет.
согласен, приношу извинения.
Тогда видимо возможно, только ваш предложенный вариант единственно верный в этом случае srv38 .
anvd24 вне форума   Ответить с цитированием
Старый 21.04.2010, 18:03   #6
terrible
Гость
 
Сообщений: n/a
По умолчанию

srv38 Согласен recaptcha требует инет.
Вот и сама рега, красным выделена запрос капчи.
Код:
              
<? session_start();?>
<?php        

$db1 = "realmd";                    
$db2 = "mangos";               
$db3 = "characters";           

$host = "localhost";          
$user = "root";                  
$pass = "mangos";                     
$port = "3306";                   

$tbc = 2;                       
$database_encoding = 'CP1251';         

$realmd = mysql_connect("$host:$port", "$user", "$pass", True);       
mysql_selectdb("$db1", $realmd);       

$world = mysql_connect("$host:$port", "$user", "$pass", True);       
mysql_selectdb("$db2", $world);       

$characters = mysql_connect("$host:$port", "$user", "$pass", True);       
mysql_selectdb("$db3", $characters);       

echo "       
<script type=\"text/javascript\">       
function isAlphaNumeric(value)       
{       
        if (value.match(/^[a-zA-Z0-9_]+$/))       
          return true;       
        return false;       
}       
function checkform(f)       
{       
        if (f.account.value == \"\")       
        {       
          alert(\"Введите логин\");       
          return false;       
        }       
        if (!isAlphaNumeric(f.account.value))       
        {       
          alert(\"Запрещенные символы в логине\");       
          return false;       
        }       
        if (f.password.value==\"\")       
        {       
          alert(\"Введите пароль\");       
          return false;       
        }       
        if (!isAlphaNumeric(f.password.value))       
        {       
          alert(\"Запрещенные символы в пароле\");       
          return false;       
        }       
        if (f.password2.value==\"\")       
        {       
          alert(\"Вы не ввели повтор пароля\");       
          return false;       
        }       
        if (f.password.value != f.password2.value)       
        {       
          alert(\"Пароли не совпадают\");       
          return false;       
        }       
        if (f.email.value==\"\")       
        {       
          alert(\"Вы не ввели e-mail\");       
          return false;       

        }       
}       
</script>";       

echo "       

<font color=#00CC00>       
</font><br><br>       
<center>       
<form method=post action=registration.php onsubmit=\"return checkform(this)\">        
<table>       

<tr>       
        <td><font size=4px > Логин: </font><Br>       
        <input type=text name=account maxlength=20 class=field></td>       
</tr>       

<tr>       
        <td><font size=4px> Пароль:</font><Br>       
        <input type=password name=password maxlength=20 class=field></td>       
</tr>       
<tr>       
        <td><font size=4px> Повторить пароль:</font> <Br>       
        <input type=password name=password2 maxlength=20 class=field></td>       
</tr>
<tr> 
<td>
<form action=/captcha.php method=post>
<img src=/captcha.php alt=Картинка /><br />
</form>    
</td>  
</tr>
<tr>       
        <td><font size=4px> e-mail: </font><Br>        
        <input type=text name=email  maxlength=20 class=field></td>      
</tr>       
       <tr>       
        <td colspan=2 style=\"text-align: center;\"><br><INPUT class=button
                     WIDTH: 160px; HEIGHT: 30px tabIndex=3 type=image
                    src=img/reg.png
                    value=reg border=0><br></td>       
       </tr> 
	   
	        
</table>       
</form></center>";       
?>

<?
if (isset($_SESSION["captcha"]) && $_SESSION["captcha"]===$_POST["captcha"]) echo "Текс введен верно";
else echo "Текст введен не верно";
unset($_SESSION["captcha"]);?>
<?
if (isset($_POST['account'])) {       
if ($_POST['account'] && strlen($_POST['account'])<=20 && strlen($_POST['account'])>=3 && strlen($_POST['password'])>=3 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2']) {       
        if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account']))       
          die ("<p>Error: SQL-Injection</p>");       
        if (!eregi("^[a-zA-Z0-9_]+$", $_POST['password']))       
          die ("<p>Error: SQL-Injection</p>");       
          $pass = ($_POST['password']);       
          $username = ($_POST['account']);       
          $result = mysql_query("SELECT * FROM account WHERE username='".$_POST['account']."' AND sha_pass_hash='$pass'", $realmd);       
          if (mysql_num_rows($result) != 0) {       
              echo "<center><p><font color=#CC0000><b>Такой аккаунт уже есть!</b></font></p></center>";       
          } else {       
              if (!mysql_query("INSERT INTO account (username, sha_pass_hash, gmlevel, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), 0, '".$_POST['email']."', $tbc)", $realmd)) {echo "<center><p><font color=#CC0000><b>Ошибка</b></font></p></center>";} else {echo "<center><p><font color=#00CC00><b>Аккаунт успешно зарегестрирован! </b></font></p></center>";}       
          }       
} else {       
          echo "<center><p><font color=#CC0000><b>Проверьте правильность ввода!</b></font></p></center>";       
}       
}       

?>
  Ответить с цитированием
Старый 21.04.2010, 19:06   #7
Minimajack
Гость
 
Сообщений: n/a
По умолчанию



PHP код:
<?
if (isset($_SESSION***91;"captcha"***93;) && $_SESSION***91;"captcha"***93;===$_POST***91;"captcha"***93;){
    if (isset(
$_POST***91;'account'***93;)) {       
        if (
$_POST***91;'account'***93; && strlen($_POST***91;'account'***93;)<=20 && strlen($_POST***91;'account'***93;)>=&& strlen($_POST***91;'password'***93;)>=&& $_POST***91;'password'***93; && $_POST***91;'password2'***93; && $_POST***91;'password'***93;==$_POST***91;'password2'***93;)
        {
                if (!
eregi("^***91;a-zA-Z0-9_***93;+$"$_POST***91;'account'***93;))       
                   die (
"<p>Error: SQL-Injection</p>");       
                if (!
eregi("^***91;a-zA-Z0-9_***93;+$"$_POST***91;'password'***93;))       
                   die (
"<p>Error: SQL-Injection</p>");       
                  
$pass = ($_POST***91;'password'***93;);       
                
$username = ($_POST***91;'account'***93;);       
                
$result mysql_query("SELECT * FROM account WHERE username='".$_POST***91;'account'***93;."' AND sha_pass_hash='$pass'"$realmd);       
                if (
mysql_num_rows($result) != 0
            {       
                     echo 
"<center><p><font color=#CC0000><b>Такой аккаунт уже есть!</b></font></p></center>";       
                }
            else
            {       
                      if (!
mysql_query("INSERT INTO account (username, sha_pass_hash, gmlevel, email, expansion) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass'))), 0, '".$_POST***91;'email'***93;."', $tbc)"$realmd)) {echo "<center><p><font color=#CC0000><b>Ошибка</b></font></p></center>";} else {echo "<center><p><font color=#00CC00><b>Аккаунт успешно зарегестрирован! </b></font></p></center>";}       
                }       
        }
        else
        {       
              echo 
"<center><p><font color=#CC0000><b>Проверьте правильность ввода!</b></font></p></center>";       
        }       
    }       
    echo 
"Текс введен верно";
}
else echo 
"Текст введен не верно";

unset(
$_SESSION***91;"captcha"***93;);
?>
Скобочки не перепутали не?
  Ответить с цитированием
Старый 21.04.2010, 19:16   #8
terrible
Гость
 
Сообщений: n/a
По умолчанию

Minimajack
Благодарю!
  Ответить с цитированием
Старый 22.04.2010, 00:51   #9
anvd24
Новичок
 
Регистрация: 20.04.2010
Адрес: Moscow
Сообщений: 16
Сказал(а) спасибо: 13
Поблагодарили 2 раз(а) в 2 сообщениях
anvd24 На верном пути
Радость

Цитата:
Скобочки не перепутали не?
мы хотели показать только лишь возможные методы реализации, а о сборках не было речи уважаемый.

простите за оффтопик.
anvd24 вне форума   Ответить с цитированием
Старый 28.09.2010, 00:28   #10
Mr.Grom
Пользователь
 
Аватар для Mr.Grom
 
Регистрация: 08.03.2010
Сообщений: 43
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Mr.Grom На верном пути
По умолчанию

Решение без капчи.
PHP код:
<?php
    
}
    function 
Fail()
    {
        
?>
            Login failed.
        <?php
    
}
    function 
Success()
    {
        
?>
            Удачный вход. Сейчас вы будете перемещены.
            <script type="text/javascript">window.setTimeout("window.location='?'",1000);</script>
        <?php

Последний раз редактировалось Mr.Grom; 29.09.2010 в 20:27.
Mr.Grom вне форума   Ответить с цитированием
Старый 28.09.2010, 09:50   #11
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

решение чего?
В коде вообще ничего нет. названия двух функций, и все.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 28.09.2010, 10:54   #12
pdx15
Новичок
 
Регистрация: 19.03.2010
Сообщений: 22
Сказал(а) спасибо: 1
Поблагодарили 6 раз(а) в 2 сообщениях
pdx15 На верном пути
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
решение чего?
В коде вообще ничего нет. названия двух функций, и все.
Код:
window.setTimeout("window.location='?'",1000);
pdx15 вне форума   Ответить с цитированием
Старый 28.09.2010, 11:26   #13
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Редирект. Какое отношение он имеет к капче?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 28.09.2010, 12:29   #14
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от srv38 Посмотреть сообщение
Рассуждаю так ... мангос разрешается использовать только в локалках(нихт паблик), в локалке не у каждого врублен интернет(а может его и вообще нету), а приведенная тобой капча без инета не пашет.
мне другое непонятно... ну сам сервер не разрешается в паблик, ладно, но веб-сайт (форум) то почему нельзя?

RomanRom2 вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь написания SQL запроса. NarkoHeal Новичкам 3 10.10.2010 02:31
Помощь по scriptdev2 Alexes Корзина 7 06.10.2010 21:11
помощь по зональному баффу Limpnau Новичкам 6 18.09.2010 12:04
Нужна помощь koly2000 Корзина 0 12.04.2010 12:49
помощь id инстас frenk Баг-репорты 1 15.03.2010 09:19


Текущее время: 00:34. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot