Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   регистрация нового пользователя + капча (http://forum.mynuke.ru/showthread.php?t=3781)

Trash 02.02.2010 10:22

регистрация нового пользователя + капча
 
Вложений: 1
Добрый день.
Имеется PHP NUKE версии 7.9. Очень хочется встроить в него капчу, но к сожалению, я не знаю как. На сайте капчи есть ссылка на модуль feedback в котором встроена эта капча, по аналогии сделать не удается, поскольку php я не знаю вообще, методом совсем не научного тыка ни чего не выходит. Если кто может помочь в данной проблеме, буду очень признателен.

Ниже прикрепляю файл index.php из папки your_account.

Soniks 02.02.2010 14:32

А куда именно вы хотите встроить эту captha? На какое действие?

Trash 02.02.2010 15:45

в нюке есть стандартная капча, но она легко обходится спам ботами.. действие при регистрации пользователя, .т.е. вводится логин, пароль, емэйл и код с картинки, если код введен правильно регистрация подтверждается. в общем заместо встроенной капчи

Soniks 07.02.2010 11:51

Ничего сложного нет:
  1. Скачиваем архив kaptcha сайта разработчика, если еще не скачивали.
  2. Раззиповываем папку kaptcha в корень сайта, убеждаемся ч то в этой папке есть файл index.php
  3. При желании настраиваем kaptchу, открыв файл kcaptcha_config.php, который находится в этой же папки.
  4. Открывеме index.php модуля You_Account.
  5. Находим функцию new_user(), а в ней следующее условие:
    PHP код:
     if (extension_loaded("gd") AND ($gfx_chk == OR $gfx_chk == OR $gfx_chk == OR $gfx_chk == 7)) {
       echo 
    "<tr><td>"._SECURITYCODE.":</td><td><img src='?gfx=gfx&amp;random_num=$random_num' border='1' alt='"._SECURITYCODE."' title='"._SECURITYCODE."'></td></tr>\n"
       
    ."<tr><td>"._TYPESECCODE.":</td><td><input type=\"text\" NAME=\"gfx_check\" SIZE=\"7\" MAXLENGTH=\"6\"></td></tr>\n"
       
    ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">\n";
      } 

    Взамен этого вставляем следующее:
    PHP код:
     session_start();
      echo 
    "<tr><td>"._SECURITYCODE.":</td><td><img src='/kaptcha/index.php?".session_name()."=".session_id()."' border='1' alt='"._SECURITYCODE."' title='"._SECURITYCODE."'></td></tr>\n"
       
    ."<tr><td>"._TYPESECCODE.":</td><td><input type=\"text\" NAME=\"keystring\" SIZE=\"7\"></td></tr>\n"
  6. Далее в том же файле находим функцию confirmNewUser(), а вней такие строки:
    PHP код:
     ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">"
      
    ."<input type=\"hidden\" name=\"gfx_check\" value=\"$gfx_check\">" 

    Меняем их на:
    PHP код:
     ."<input type=\"hidden\" name=\"keystring\" value=\"".$_POST['keystring']."\">" 
  7. Находим и удаляем следующие строки:
    PHP код:
     if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == OR $gfx_chk == OR $gfx_chk == OR $gfx_chk == 7)) {
       
    title(""._NEWUSERERROR."");
       
    OpenTable();
       echo 
    "<center><b>"._SECCODEINCOR."</b><br><br>"
       
    .""._GOBACK."</center>";
       
    CloseTable();
       include(
    "footer.php");
       die();
      } 
  8. Находим функцию finishNewUser(), а вней удаляем следующие строки:
    PHP код:
     if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == OR $gfx_chk == OR $gfx_chk == OR $gfx_chk == 7)) {
       
    Header("Location: modules.php?name=$module_name");
       die();
      } 
  9. И последнее, находим функцию userCheck(), а в ней следующую строку:
    PHP код:
     global $stop$user_prefix$db

    Поле нее добавляем следующее:
    PHP код:
     session_start();
     if(!isset(
    $_SESSION['captcha_keystring']) ||  !$_POST['keystring'] || $_SESSION['captcha_keystring'] !=  $_POST['keystring']) $stop "<center>"._SECCODEINCOR."</center><br>"

Trash 09.02.2010 13:44

Soniks
Огромнейшее, человеческое спасибо!
Сил больше нету бороться с спамерами! Спасибо!

shtrlz 09.03.2010 14:42

Soniks помогите и мне.

все сделал как вы описали, но вот теперь выдает:

Warning: session_start() [function.session-start]: open(/storage/home/shtrlz1s/tmp/sess_ruhudld0q9rpkvsd8eld6nfu61, O_RDWR) failed: Permission denied (13) in /storage/home/shtrlz1s/htdocs/modules/Your_Account/index.php on line 621

в 621 строке собственно :
Цитата session_start();


права на папку капчи и на файлы выставил 750 (как и на другие файлы php на сайте)

ага, разобрался с правами на папку Tmp что в корне.
но теперь не кажет картинку. в файле с примером - показывает, в самом модуле - нет

и с этим поправил.

в этой строке
echo "<tr><td>"._SECURITYCODE.":</td><td><img src='/kaptcha/index.php?".session_name()

папка называется kaptcha

а в дистрибутиве kcaptcha

спасибо за решение

MaxR 02.07.2010 20:19

В модуле Your_Account при регистрации нужно добавить два поля. версия 80 RUS если нужно файл, то залью.
http://s08.radikal.ru/i181/1007/68/a54bef704e8f.jpg

хелп ми :yell:

Soniks 05.07.2010 21:49

MaxR ну собственно ничего сложного нет, по аналогии как описано выше в функции new_user() нужно вставить необходимые поля, и аналогично проделать действия в функции confirmNewUser(), заменяя только названия полей. А в функции finishNewUser() необходимо в запрос добавить требуемые столбцы и их значения, если вам необходимо сохранить данные в БД


Часовой пояс GMT +4, время: 03:16.

Copyright © 2005 by Soniks