За последние 24 часа нас посетили 51375 программистов и 1758 роботов. Сейчас ищут 713 программистов ...

Вставка KCaptcha в код

Тема в разделе "PHP и базы данных", создана пользователем Nabai, 18 июл 2011.

  1. Nabai

    Nabai Активный пользователь

    С нами с:
    3 май 2011
    Сообщения:
    51
    Симпатии:
    0
    Вроде выполнил по примеру, прикрутил к форме, но:
    Код (Text):
    1. <?php
    2. session_start();
    3. ?>
    4. <?
    5.  
    6. if(isset($_GET['step'])) $step = $_GET['step'];
    7. if($step == 2)
    8. {
    9.       // проверим соединение с mysql сервером
    10.       if(Test_mysql_connect() == false)
    11.       {
    12.             echo "<font color='#ff0000'> Ошибка!
    13.             Скорее всего игровой сервер неактивен, попробуйте зайти сюда позже.</font></a></font>";
    14.             End_page();
    15.       }
    16.       $savedata = "true"; //Сохранять или нет пользовательские данные, пароль логин , email в незашифрованном виде.
    17.       $fsname = $_SERVER['SCRIPT_NAME'];
    18.       $msconn = mysql_connect($dbhost, $dbuser, $dbpass);
    19.       if($msconn == FALSE)
    20.       {
    21.                 echo "<font color='#ff0000'>Ошибка соединения.
    22.                 </a></font>";
    23.                 End_page();
    24.       }
    25.       if(!MYSQL_SELECT_DB($dbname))
    26.       {
    27.                 echo "<font color='#ff0000'>БД не найдена! Скорее всего эта ошибка вызвана сбоем на сервере</font>"; End_page();
    28.       }
    29.  
    30.       $login = trim($_POST[login]);
    31.       $pass = $_POST[pass];
    32.       $pass2 = $_POST[repeat];
    33.       $email = trim($_POST[email]);
    34.       if ($email == "")
    35.       {
    36.              echo ("<center><font color='#ff0000'>Вы не ввели e-mail</font><br>Обязательно укажите свой e-mail!</center>");
    37.                 End_page();
    38.       }
    39.       if ($login == "")
    40.       {
    41.              echo ("<center><font color='#ff0000'>Вы не ввели логин</font></center>");
    42.       }
    43.       else
    44.       {
    45.                 if ($pass == "")
    46.                 {
    47.                    echo ("<center><font color='#ff0000'>Пароль не может быть пустым</font></center>");
    48.              }
    49.                 else
    50.                 {
    51.                      if ($pass == $pass2)
    52.                      {
    53.                      $q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
    54.                    if(!mysql_numrows($q) > "0")
    55.                      {
    56.                    $gamepass = base64_encode(pack("H*", sha1(utf8_encode($pass))));
    57.                          $result = mysql_query("INSERT INTO accounts(login, password, lastactive, access_level, lastIP, lastServer)
    58.                         VALUES('".$login."' , '".$gamepass."', '1', '0', '0.0.0.0', '1')");
    59.                         if($result == FALSE)
    60.                         {
    61.                         echo "Ошибка запроса. Свяжитесь с администрацией.";
    62.                         End_page();
    63.                         }
    64.                         if ($savedata == "true")
    65.                         {
    66.                         // записываем во вторую таблицу данные юзера
    67.                         $result = mysql_query("INSERT INTO accounts_info(login, pass, email) VALUES('".$login."', '".$pass."', '".$email."')");
    68.                         if($result == FALSE)
    69.                         {
    70.                         echo "Аккаунт зарегистрирован, но произошли ошибки. Вы не сможете восстановить ваш пароль в случае утери.";
    71.                         End_page();
    72.                         }
    73.                   }
    74.                   echo ("<center>Аккаунт <font color='red'>".$login."</font> успешно зарегистрирован!</center>");
    75.             }
    76.             else
    77.                   {
    78.                   echo ("<center>Имя <font color='red'>".$login."</font> уже зарегистрировано, попробуйте другое.</center>");
    79.                     }
    80.             }
    81.             else
    82.             {
    83.                   echo ("<center><font color='#ff0000'>Пароли не совпадают</font></center>");
    84.              }
    85.             }
    86.       }
    87.       End_page();
    88. }
    89. else
    90. {
    91. ?>
    92.  
    93. <form name="form1" method="post" action="?step=2">
    94. <div align="center">
    95. <table width="250" border="0" cellspacing="0" cellpadding="0">
    96. <tr>
    97. <td align="right"><font size="2">Логин</font>  </td>
    98. <td width="161"><label>
    99. <input name="login" type="text" id="login">
    100. </label><br><br>
    101. </td>
    102. </tr>
    103. <tr>
    104. <td align="right"><font size="2">Пароль</font>  </td>
    105. <td><label>
    106. <input name="pass" type="password" id="pass">
    107. </label><br><br>
    108. </td>
    109. </tr>
    110. <tr>
    111. <td align="right"><font size="2">Ещё раз</font>  </td>
    112. <td><label>
    113. <input name="repeat" type="password" id="repeat">
    114. </label><br><br>
    115. </td>
    116. </tr>
    117. <tr>
    118. <td align="right"><font size="2">E-mail</font>  </td>
    119. <td><label>
    120. <input name="email" id="repeat">
    121. </label>
    122. </td>
    123. </tr>
    124. </table>
    125.  
    126. Введите код с картинки:<br>
    127. <img src="./modules/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"><br>
    128. <input type="text" name="keystring">
    129. </div>
    130. <br>
    131. <label>
    132. <input type="submit" name="Submit" value="Зарегистрироваться" >
    133. </label>
    134. </form><br>
    135. <?php
    136. if(count($_POST)>0){
    137.     if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
    138.         echo "Correct";
    139.     }else{
    140.         echo "Wrong";
    141.     }
    142. }
    143. unset($_SESSION['captcha_keystring']);
    144. ?>
    145.  
    146. <?
    147.       End_page();
    148. }
    149.  
    150. function End_page()
    151. {
    152. ?>
    153. <!--ФУТЕР СТРАНИЦЫ-->    
    154.  </div>
    155. <div id="sidebar">
    156. <div id="status_block">
    157. <h3>Сервер:</h3>
    158. <hr>
    159. <? include "modules/status.php"; ?>
    160. <br>
    161. </div>
    162. <br>
    163. <div id="online_block">
    164. <h3>Онлайн:</h3>
    165. <hr>
    166. <? include "modules/online.php"; ?>
    167. <br>
    168. </div>
    169. </div>
    170.  
    171.  
    172.  
    173.  
    174. </body>
    175. </html>
    176. <?
    177.       exit;
    178. }
    179. ?>
    не работает.
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Очень жаль.
     
  3. Nabai

    Nabai Активный пользователь

    С нами с:
    3 май 2011
    Сообщения:
    51
    Симпатии:
    0
    Сабж:

    эээ. Тащемта как обычно не описал проблемы, да...

    Не проверяет каптчу перед выполнением скрипта.


    Флуд:
    самому жаль.
    понимаю, что дурак и то се. :)
    Но хотя бы пнуть в нужную сторону можно?
     
  4. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Вот этот код
    PHP:
    1. <?php
    2. if(count($_POST)>0){
    3.    if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
    4.       echo "Correct";
    5.    }else{
    6.       echo "Wrong";
    7.    }
    8. }
    9. unset($_SESSION['captcha_keystring']);
    10. ?>
    нужно переместить

    после:

    PHP:
    1. <?
    2.  
    3. if(isset($_GET['step'])) $step = $_GET['step'];
    4. if($step == 2)
    5. {
     
  5. Nabai

    Nabai Активный пользователь

    С нами с:
    3 май 2011
    Сообщения:
    51
    Симпатии:
    0
    Ноль толку.
    При вводе неправильной капчи.
    "Wrong. Аккаунт зарегистрирован бла бла бла".
    Запись попадает в бд.
     
  6. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    ну так обработай чтоб не попадала