|
|
|
|
|
|
|
|
|
регистрация нового пользователя + капча
| |
#1 | |
|
02.02.2010, 10:22
Добрый день.
Имеется PHP NUKE версии 7.9. Очень хочется встроить в него капчу, но к сожалению, я не знаю как. На сайте капчи есть ссылка на модуль feedback в котором встроена эта капча, по аналогии сделать не удается, поскольку php я не знаю вообще, методом совсем не научного тыка ни чего не выходит. Если кто может помочь в данной проблеме, буду очень признателен.
Ниже прикрепляю файл index.php из папки your_account.
|
|
|
|
|
|
|
02.02.2010, 14:32
А куда именно вы хотите встроить эту captha? На какое действие?
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
02.02.2010, 15:45
в нюке есть стандартная капча, но она легко обходится спам ботами.. действие при регистрации пользователя, .т.е. вводится логин, пароль, емэйл и код с картинки, если код введен правильно регистрация подтверждается. в общем заместо встроенной капчи
|
|
|
|
|
|
|
07.02.2010, 11:51
Ничего сложного нет: - Скачиваем архив kaptcha сайта разработчика, если еще не скачивали.
- Раззиповываем папку kaptcha в корень сайта, убеждаемся ч то в этой папке есть файл index.php
- При желании настраиваем kaptchу, открыв файл kcaptcha_config.php, который находится в этой же папки.
- Открывеме index.php модуля You_Account.
- Находим функцию new_user(), а в ней следующее условие:
PHP код:
if (extension_loaded("gd") AND ($gfx_chk == 3 OR $gfx_chk == 4 OR $gfx_chk == 6 OR $gfx_chk == 7)) { echo "<tr><td>"._SECURITYCODE.":</td><td><img src='?gfx=gfx&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";
- Далее в том же файле находим функцию 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']."\">"
- Находим и удаляем следующие строки:
PHP код:
if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == 3 OR $gfx_chk == 4 OR $gfx_chk == 6 OR $gfx_chk == 7)) { title(""._NEWUSERERROR.""); OpenTable(); echo "<center><b>"._SECCODEINCOR."</b><br><br>" .""._GOBACK."</center>"; CloseTable(); include("footer.php"); die(); }
- Находим функцию finishNewUser(), а вней удаляем следующие строки:
PHP код:
if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == 3 OR $gfx_chk == 4 OR $gfx_chk == 6 OR $gfx_chk == 7)) { Header("Location: modules.php?name=$module_name"); die(); }
- И последнее, находим функцию 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>";
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
|
|
|
09.02.2010, 13:44
Soniks
Огромнейшее, человеческое спасибо!
Сил больше нету бороться с спамерами! Спасибо!
|
|
|
|
|
|
|
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 строке собственно :
права на папку капчи и на файлы выставил 750 (как и на другие файлы php на сайте)
ага, разобрался с правами на папку Tmp что в корне.
но теперь не кажет картинку. в файле с примером - показывает, в самом модуле - нет
и с этим поправил.
в этой строке
echo "<tr><td>"._SECURITYCODE.":</td><td><img src='/kaptcha/index.php?".session_name()
папка называется kaptcha
а в дистрибутиве kcaptcha
спасибо за решение
|
|
|
|
|
|
|
02.07.2010, 20:19
Последний раз редактировалось MaxR, 02.07.2010 в 20:58.
|
|
|
|
|
|
|
05.07.2010, 21:49
MaxR ну собственно ничего сложного нет, по аналогии как описано выше в функции new_user() нужно вставить необходимые поля, и аналогично проделать действия в функции confirmNewUser(), заменяя только названия полей. А в функции finishNewUser() необходимо в запрос добавить требуемые столбцы и их значения, если вам необходимо сохранить данные в БД
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:46.
|
|
|
|
|
|
|
|
|
|
|
|
|