За последние 24 часа нас посетили 60398 программистов и 6996 роботов. Сейчас ищут 2747 программистов ...

reCAPTCHA

Тема в разделе "PHP для новичков", создана пользователем Smoholl, 20 дек 2013.

  1. Smoholl

    Smoholl Новичок

    С нами с:
    20 дек 2013
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте.

    Имеется форма регистрации с reCAPTCHA:
    Код (Text):
    1. <form id="registration" method="POST" action="/?page=registration" style="margin:0;padding:0">
    2.  
    3.  
    4.  
    5. <center>
    6. <b>Логин</b>:<input id="u_login" onkeyup="reg_u_login();" class="text" type="text" name="u_login" placeholder="" autocomplete="off" maxlength="20" value="<?php echo $u_login; ?>">
    7. <br /><br />
    8. <b>Пароль</b>:<input class="text" id="u_qiwi" type="text" name="u_qiwi" placeholder="" maxlength="30" value="<?php echo $u_qiwi; ?>">
    9.  
    10. <br /><br />
    11. <b>Вас пригласил</b>: <b><?php if(!empty($_SESSION['ref_login'])){ echo $_SESSION['ref_login']; }?></b><br /><br />
    12.  
    13. <?php
    14.  
    15. require_once('recaptchalib.php');
    16.  
    17. // Get a key from https://www.google.com/recaptcha/admin/create
    18. $publickey = "";
    19. $privatekey = "";
    20.  
    21. # the response from reCAPTCHA
    22. $resp = null;
    23. # the error code from reCAPTCHA, if any
    24. $error = null;
    25.  
    26. # was there a reCAPTCHA response?
    27. if ($_POST["recaptcha_response_field"]) {
    28.         $resp = recaptcha_check_answer ($privatekey,
    29.                                         $_SERVER["REMOTE_ADDR"],
    30.                                         $_POST["recaptcha_challenge_field"],
    31.                                         $_POST["recaptcha_response_field"]);
    32.  
    33.         if ($resp->is_valid) {
    34.                 echo "You got it!";
    35.         } else {
    36.                 # set the error code so that we can display it
    37.                 $error = $resp->error;
    38.         }
    39. }
    40. echo recaptcha_get_html($publickey, $error);
    41. ?>
    42.     <br/><br>
    43.  
    44. <a class="button" href="javascript:with(document.getElementById('registration')){ submit(); }">РЕГИСТРАЦИЯ</a></center>
    45.  
    46. </table>
    47. </form>
    Как заставить капчу проверять символы? На данный момент можно регистрировать вообще игнорируя ее.
     
  2. Dmitriy427

    Dmitriy427 Новичок

    С нами с:
    30 окт 2013
    Сообщения:
    53
    Симпатии:
    0
    Для формы должен существовать яваскрипт обрабатывающий введенные в поле данные и либо разрешающий сабмит, либо возвращающий ошибку. У тебя тут есть его инит, обращение к функции "submit()", но его самого не видно. Смотри отладчик - грузится ли он на страницу, есть ли там код отвечающий за взаимодействие с элементами страницы, которые формируются строкой "echo recaptcha_get_html($publickey, $error);", есть ли ошибки в его работе...

    Короче, нужно научиться программировать.

    P.S. Либо просто посмотреть включена ли капча в настройках. )
    Хотя, в нормальной цмс её вообще видно не было бы, когда она отключена. Токо вот, эта форма не из нормальной взята, судя по всему.
     
  3. Smoholl

    Smoholl Новичок

    С нами с:
    20 дек 2013
    Сообщения:
    6
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. $reg_show=1;
    3. if(!isset($_POST['u_login'])){
    4. $u_login='';
    5. $u_qiwi='';
    6. }
    7. else{
    8. $warning='';
    9.  
    10. $u_login=$_POST['u_login'];
    11. $u_login=preg_replace('#[^a-zA-Z\-\_0-9]+#','',$u_login);
    12. $u_login=trim($u_login);
    13.  
    14. if(strlen($u_login)<3){ $warning.='Логин не меньше 3 символов<br>'; }
    15. else{
    16. $ulq=mysql_query("SELECT login FROM users WHERE login LIKE '".$u_login."'");
    17. if(mysql_num_rows($ulq)>0){ $warning.='Этот логин занят<br>'; }
    18. }
    19.  
    20. $u_qiwi=$_POST['u_qiwi'];
    21. $u_qiwi=preg_replace('#[^a-zA-Z\-\_0-9]+#','',$u_qiwi);
    22. if(strlen($u_qiwi)<6){ $warning.='Пароль не менее 6 символов<br>'; }
    23. if(strlen($u_qiwi)>30){ $warning.='Пароль не более 30 символов<br>'; }
    24.  
    25. if($warning==''){
    26. $u_ref=''; if(!empty($_SESSION['ref_login'])){ $u_ref=$_SESSION['ref_login']; }
    27. $regq=mysql_query("INSERT INTO users (login,qiwi,ref,date) VALUES ('$u_login','".md5($u_qiwi)."','$u_ref','$time')");
    28.  
    29. $regusepq=mysql_query("SELECT uid FROM users");
    30. $r_users=mysql_num_rows($regusepq);
    31. $regtoputnu='';
    32. $regnusq=mysql_query("SELECT login FROM users ORDER BY date DESC LIMIT 80");
    33. while($regnusm=mysql_fetch_row($regnusq)){ $regtoputnu.='<img src="images/nu.png"> '.$regnusm[0].' '; }
    34. mysql_query("UPDATE data SET users='$r_users', new_u='$regtoputnu'");
    35.  
    36. $reg_show=0;
    37. }}
    38. ?>
    39.  
    40.  
    41. <h2>РЕГИСТРАЦИЯ В ПРОЕКТЕ</h2>
    42.  
    43.  
    44.  
    45. <?php if($reg_show==0){ ?>
    46. <div class="reg_s_title">Теперь Вы зарегистрированы в нашем проекте!</div>
    47. <div align="center" class="reg_s_date">
    48. <b>Логин:</b> <font color="#77AF1B"><?php echo $u_login; ?></font>
    49. <br><b>Пароль:</b> <font color="#FF962D"><?php echo $u_qiwi; ?></font>
    50. </div>
    51. <?php } ?>
    52.  
    53. <?php if($reg_show==1){ ?>
    54.  
    55.  
    56.  
    57.  
    58.  
    59.  
    60. <form id="registration" method="POST" action="/?page=registration" style="margin:0;padding:0">
    61. <?php
    62. if($warning!=''){
    63. echo '<center><p><b>'.$warning.'<b></p></center><br>';
    64. }
    65. ?>
    66.  
    67.  
    68. <center>
    69. <b>Логин</b>:<input id="u_login" onkeyup="reg_u_login();" class="text" type="text" name="u_login" placeholder="" autocomplete="off" maxlength="20" value="<?php echo $u_login; ?>">
    70. <br /><br />
    71. <b>Пароль</b>:<input class="text" id="u_qiwi" type="text" name="u_qiwi" placeholder="" maxlength="30" value="<?php echo $u_qiwi; ?>">
    72.  
    73. <br /><br />
    74. <b>Вас пригласил</b>: <b><?php if(!empty($_SESSION['ref_login'])){ echo $_SESSION['ref_login']; }?></b><br /><br />
    75.  
    76. <?php
    77.  
    78. require_once('recaptchalib.php');
    79.  
    80. // Get a key from https://www.google.com/recaptcha/admin/create
    81. $publickey = "";
    82. $privatekey = "-";
    83.  
    84. # the response from reCAPTCHA
    85. $resp = null;
    86. # the error code from reCAPTCHA, if any
    87. $error = null;
    88.  
    89. # was there a reCAPTCHA response?
    90. if ($_POST["recaptcha_response_field"]) {
    91.         $resp = recaptcha_check_answer ($privatekey,
    92.                                         $_SERVER["REMOTE_ADDR"],
    93.                                         $_POST["recaptcha_challenge_field"],
    94.                                         $_POST["recaptcha_response_field"]);
    95.  
    96.         if ($resp->is_valid) {
    97.                 echo "You got it!";
    98.         } else {
    99.                 # set the error code so that we can display it
    100.                 $error = $resp->error;
    101.         }
    102. }
    103. echo recaptcha_get_html($publickey, $error);
    104. ?>
    105.     <br/>
    106.  
    107. <a class="button" href="javascript:with(document.getElementById('registration')){ submit(); }">РЕГИСТРАЦИЯ</a></center>
    108.  
    109. </table>
    110. </form>
    111.  
    112. <?php } ?>
    113.  
    114. </div>
    115.  
    116. <div class="main_news_bottom"></div>
    Ну вот короч код всей страницы.
    Настроек как таковых нет. Есть стандартный конфиг, т.е. это данные для доступа к бд и еще пара не имеющих в данном случае настроек.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.068
    Симпатии:
    7
    Выбрось