Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Антиспам - как внедрить? recaptcha... 
:(
    Опции темы
Moby
Дата 13.4.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Люди добрые, мне очень нужна ваша помощь, ваш совет. Я на пхп не работаю, в основном на С++.
Но вот на работе мне дали задание и уже поздно отказываться, а срок поджимает. 

Возникает ошибка, когда я вставляю код примера Recaptcha на страничку КОНТАКТА(где есть форма для заполнения сообщения и отправки на сервер).

Сама ошибка
Notice: Undefined index: recaptcha_response_field in /home/web/www.iitp.ru/html/contacts.php on line 131
Ошибка указывает на эту строчку 
if ($_POST["recaptcha_response_field"]) {

Код

<table width="600" border="0" cellpadding="0" cellspacing="0" id="formMes">
<form method="post" action="" onsubmit="return checkForm(this)">
    <tr><td colspan="2"><h1 style="color:#325a8e"><?=t('Форма обратной связи')?></h1></td></tr>
    <tr><td><font color="#FF0000">*</font>&nbsp;<?=t('Фамилия')?></td><td><input type="text" name="fam"></td></tr>
    <tr><td height="25" colspan="2"><font color="#FF0000">*</font>&nbsp;<?=t('Сообщение')?></td></tr>
    <tr><td colspan="2"><textarea name="mess" cols="72" rows="10" style="width:590px"></textarea></td></tr>
    <tr><td colspan="2" align="center" height="35"><input type="submit" name="Submit" value="<?=t('Отправить')?>"><input type="hidden" name="lang" value="<?=LANG?>" /> <input name="Reset" type="reset" id="Reset" value="<?=t('Очистить')?>">
    
    </td></tr>

     //Код Рекачи, который я вставил и она стала отображаться на страничке но выдает ошибку
       <?php
    require_once('recaptchalib.php');

    $publickey = "6Lcd3AUAAAAAADUe_joLmB_2xQo3ep869F4zB6a_"; 
    $privatekey = "6Lcd3AUAAAAAANPd8WgyL0CpywAXTIHA8LIS5DDQ";

    # the response from reCAPTCHA
    $resp = null;
    # the error code from reCAPTCHA, if any
    $error = null;
    
    # was there a reCAPTCHA response?
    if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
                echo "You got it!";
        } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
     }
    echo recaptcha_get_html($publickey,$error);

    ?>
</form></table>


И на всякий прикладываю код всей страницы КОНТАКТА.



Это сообщение отредактировал(а) Moby - 14.4.2009, 14:09

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  contacts.php 5,15 Kb
PM MAIL ICQ   Вверх
SneG0K
Дата 13.4.2009, 20:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Вдумываться в код сейчас вообще не хочется, но вот как пользователь скажу, не бери рекапчу! она меня как пользователя бесит.
PM WWW Skype   Вверх
Moby
Дата 14.4.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



А если не рекапчу, то что тогда посоветуете?

PM MAIL ICQ   Вверх
MoLeX
Дата 14.4.2009, 11:54 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Moby @  14.4.2009,  11:47 Найти цитируемый пост)
то что тогда посоветуете?

http://captcha.ru/


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 14.4.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Можно вопрос ответ.
Можно как на рапиде делали раньше сколько кошек нарисовано  или введите только черные цифры или белые итд.

ПС. На форуме можешь найти и мою капчю довольно маленькая если с этим великом не разберешься.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Moby
Дата 14.4.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Спасибо. Рассмотрю оба варианта.

Sanchezzz, а можно ссылочку на Вашу капчу?

Но в "профилактических" целях я все же хочу поставить эту Рекапчу. И тут возникает уже более конкретный вопрос и в связи с этим я переделаю мой первый пост и продублирую новый вопрос в этом посте. smile

Используя код, который приводится в примере к Рекапче и впихнув его в в код ФОРМЫ на странице выводится вот такая ошибка

Notice: Undefined index: recaptcha_response_field in /home/web/www.iitp.ru/html/contacts.php on line 131

Ошибка указывает на эту строчку 
if ($_POST["recaptcha_response_field"]) {

С чем это может быть связано? 

Для проверки я просто создаю с этим же кодом из примера страничку и все рабоатет, а вот когда сую в код формы то ошибка.

Это сообщение отредактировал(а) Moby - 14.4.2009, 14:10
PM MAIL ICQ   Вверх
Sanchezzz
  Дата 14.4.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Боюсь его сча не найти в топиках...

Делаешь форму 
поле куда вводить  ну и картинка
Код

<img src="antibot.php?time=<?=time();?>"/>


Принемать данные все умеют код картинки хранится тут $_SESSION['image_kod']
и в скрипте antibot.php измени пути картинок на свои.

Насчет ошибки переменная не объявлена... <? error_reporting(E_ALL && E_NOTICE); ?> в начало скрипта.


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  antibot.zip 92,66 Kb


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Shark
Дата 17.4.2009, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



а мне кажется что ошибка зарыта в это recaptchalib.php файле, покаи его код.


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
lelik133
Дата 17.4.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 5
Всего: 14



а форме то есть поле recaptcha_response_field?
сделайте var_dump($_POST) и посмотрите
PM ICQ   Вверх
Shark
Дата 17.4.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



lelik133, я смотрел и не нашелsmile... но код я копировал себе на localhost и ошибку мне он такую не выдает...
мне кажется что все таки ошибка в подключаемом файле.. 


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
lelik133
Дата 17.4.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 5
Всего: 14



уровень erorr_reporting наверное разный у вас, поэтому и не видел
PM ICQ   Вверх
Moby
Дата 17.4.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 6.10.2008

Репутация: нет
Всего: нет



Для проверки сделал var_dump($_POST);

Выдает

array(0) { } 

Цитата

уровень erorr_reporting наверное разный у вас, поэтому и не видел


Это что значит? smile

Вообще с recapchalib точно все в порядке так как я просто создаю тестовую страничку с формой и все работает

Вот эта тестовая страничка 

Код

<form action="" method="post">
<?php

require_once('recaptchalib.php');

// Get a key from http://recaptcha.net/api/getkey
$publickey = "6Lcd3AUAAAAAADUe_joLmB_2xQo3ep869F4zB6a_ ";
$privatekey = "6Lcd3AUAAAAAANPd8WgyL0CpywAXTIHA8LIS5DDQ";

# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;

# was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
                echo "You got it!";
        } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
}
echo recaptcha_get_html($publickey, $error);
var_dump($_POST);
?>
    <br/>
    <input type="submit" value="submit" />
    </form>


А впихнуть это все в код формы страницы КОНТАКТА не поулчается, выдает выше описанную страницу. 
Может дело в методе post? Ведь этот метод вроде как посылает на сервер все эти данные (составленное сообщение, имя, фамилия...)  а тут впихивая эту рекапчу я еще что то от поста хочу. Извините за столь глупые вопросы. smile

Вот код страницы contacts.php, он не большой.


Код

<? 

$id = 18;


include_once('admin/config.inc.php');
 
if(!isset($auto)) $auto = 0;


$main=$db->select("SELECT `ID`, `Title".LANGF."`, `Text".LANGF."`, `TopMenu`, `LeftMenu`, `NumMenu`, `Editors`, `UserEditors` FROM `Content` WHERE `ID`=$id");


get_menu_nav_content($id, 'edit');
/*
if($hash['may_edit'][0]) {
    $g_add_navigation ='<td>&nbsp;|&nbsp;</td><td>' . l('Редактировать страницу', '/cms/content.php?action=edit&id=18&lang='.LANG).'</td>';
}

*/


if(!$main[1]) {
   include($_SERVER['DOCUMENT_ROOT'].'/templates/error_not_found.php');
} else {
    if(isset($title) && $title && $_SERVER['REQUEST_METHOD'] == 'POST') {
        $text="Обращение: $title\r\n";
        $text.="Имя: $name\r\n";
        $text.="Фамилия: $fam\r\n";
        if($mail) $text.="Почта: $mail\r\n";
        if($phone) $text.="Телефон: $phone\r\n";
        if($fax) $text.="Факс: $fax\r\n";
        $text.="Сообщение: $mess\r\n";
        
        $mail_res = mail(ADMIN_EMAIL, 'Новое сообщение с сайта '.$_SERVER['HTTP_HOST'], $text."\r\n\r\nСоздано: ".date("H:i:s d.m.Y"));
        $msg = ($mail_res ?
            t('Ваше сообщение успешно отправлено') : 
            t('Ошибка отправки письма'));
        
        if($mail_res) infomsg($msg); else errormsg($msg);
    }

    if(!function_exists('get_page_title_html')) {
        function get_page_title_html() { return t('Контакты'); };
    }

    if(!function_exists('get_menu_main_custom_html')) {
        function get_menu_main_custom_html() {
?><tr><td align="center">
<br />
<?=l('Форма обратной связи', '/'.LANG.'/contacts.htm')?><br />
<br />
<a href="/<?=LANG?>/maps.htm"><img src="/images/map-small.gif" style="border:1px solid #878f9c" /></a><br />
<strong><?=t('Схема проезда')?></strong>
<?=(LANG=='en' ? '' : '<br />')?>
<strong><?=t('общественным транспортом')?></strong><br />
(<?=t('нажмите для увеличения')?>)<br />
<br />
<a href="/<?=LANG?>/maps-auto.htm"><img src="/images/map-auto-small.gif" style="border:1px solid #878f9c" /></a><br />
<strong><?=t('Схема проезда')?></strong>
<?=(LANG=='en' ? '' : '<br />')?>
<strong><?=t('на автомобиле')?></strong><br />
(<?=t('нажмите для увеличения')?>)
</td></tr>
<?
        } 
    }

    if(!function_exists('get_content_html')) {
        function get_content_html() {
            global $main, $map, $auto;
?>
<?=$main['Text'.LANGF];?>
<?  if($map==1) { ?>
<?    if($auto) { ?>
<img src="/images/map-auto.gif"  width="610" height="450"/>
<?        } else { ?>
<img src="/images/map-big.gif"  width="610" height="449"/>
<?        } ?>
<? } else { ?>
<script language="javascript"><!--
function checkForm(form) {
    var error='';
    if(!form.name.value) error+="<?=t('Не указано')?> - '<?=t('Имя')?>'\r\n";
    if(!form.fam.value) error+="<?=t('Не указано')?> - '<?=t('Фамилия')?>'\r\n";
    if((!form.mail.value)&&(!form.phone.value)&&(!form.fax.value)) error+="<?=t('Не указаны Ваши координаты')?>\r\n";
    if(form.mess.innerText=='') error+="<?=t('Не указано')?> - '<?=t('Сообщение')?>'\r\n";
    if(error) { alert(error); return false; } else return true;

}
--></script>



<table width="600" border="0" cellpadding="0" cellspacing="0" id="formMes">
<form method="post" action="" onsubmit="return checkForm(this)">


    <tr><td colspan="2"><h1 style="color:#325a8e"><?=t('Форма обратной связи')?></h1></td></tr>
    <tr><td width="50%"><table>
        <tr><td colspan="2"><font color="#FF0000">*</font> <?=t('Пожалуйста заполните все поля, отмеченые звездочкой')?></td></tr>
        <tr><td><font color="#FF0000">*</font> <?=t('Обращение')?></td><td><input name="title" type="radio" value="<?=t('Господин')?>" checked="checked" /> <?=t('Господин')?> <input name="title" type="radio" value="<?=t('Госпожа')?>" /> <?=t('Госпожа')?></td></tr>
        <tr><td><font color="#FF0000">*</font>&nbsp;<?=t('Имя')?></td><td><input type="text" name="name"></td></tr>
        <tr><td><font color="#FF0000">*</font>&nbsp;<?=t('Фамилия')?></td><td><input type="text" name="fam"></td></tr>
    </table></td>
    <td width="50%"><table>
        <tr><td colspan="2"><font color="#FF0000">*</font>&nbsp;<?=t('Предпочитаемый вид обратной связи')?></td></tr>
        <tr><td>&nbsp;&nbsp;&nbsp;E-mail</td><td><input type="text" name="mail" class="inp1"></td></tr>
        <tr><td>&nbsp;&nbsp;&nbsp;<?=t('Телефон')?></td><td><input type="text" name="phone" class="inp1"></td></tr>
        <tr><td>&nbsp;&nbsp;&nbsp;<?=t('Факс')?></td><td><input type="text" name="fax" class="inp1"></td></tr>
    </table></td></tr>
    <tr><td height="25" colspan="2"><font color="#FF0000">*</font>&nbsp;<?=t('Сообщение')?></td></tr>
    <tr><td colspan="2"><textarea name="mess" cols="72" rows="10" style="width:590px"></textarea></td></tr>
    <tr><td colspan="2" align="center" height="35"><input type="submit" name="Submit" value="<?=t('Отправить')?>"><input type="hidden" name="lang" value="<?=LANG?>" /> <input name="Reset" type="reset" id="Reset" value="<?=t('Очистить')?>">
    
    
    
    
    </td></tr>

</form></table>



<? } ?>
<?      }
    }

    $g_cur_menuid = $main['TopMenu']; //$main['NumMenu'] ?????
    include($_SERVER['DOCUMENT_ROOT'].'/templates/content.php');
}
?>


PM MAIL ICQ   Вверх
lelik133
Дата 17.4.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 5
Всего: 14



array(0) { }  значит то что у вас данные из формы не пришли
PM ICQ   Вверх
bars80080
Дата 17.4.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(lelik133 @  17.4.2009,  14:27 Найти цитируемый пост)
значит то что у вас данные из формы не пришли 

а происходит это вполне возможно потому, что форма разрывает таблицу. 
можно только <form><table> ... </table></form> или ...<td><form> ... </form></td> ....
PM MAIL WWW   Вверх
Shark
Дата 17.4.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



lelik133, да, верно... я забыл включить error_reporting(E_ALL && E_NOTICE); 
Moby, а может ты не будешь заморачиваться? возьми сам напиши капчу и все... либо с картинкой, либо сколько будет 2*9 = и нажно ввести ответ..


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.