Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Добавление капчи на форму отправки сообщений

Ответить
Настройки темы
Добавление капчи на форму отправки сообщений

Пользователь


Сообщения: 124
Благодарности: 0

Профиль | Отправить PM | Цитировать


Моя страничка с формой отправки сообщений, скрипты проверки капчи скачал с сайта www.captcha.ru положил в корень сайта файлы kcaptcha.php, kcaptcha_config.php, index.php. Как добавить в проверку формы имаил, проверку картинки
Форма отправки gepatit-c.com.ua/contact.php
PHP код: Выделить весь код

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http:www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="author" content="Alex Berdnikov"/>
<meta name="robots" content="all"/>
<link rel="stylesheet" media="screen" type="text/css" title="style" href="css/style.css">
<title>Лечение гепатита С</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="js/script.js"></script>
</head>
<body>

<div id="header">
</div>
<div id="navigation">
    <ul id="tabs">
        <li id="home" >
        <a href="index.html" title="Главная">main</a>        </li>
        <li id="treatment" >
        <a href="treatment.html" title="Лечение">lechenie</a>        </li>
        <li id="contact" class="current">
        <a href="contact.html" title="Контакты">kontakt</a>        </li> 
    </ul>

</div>
<div id="page-wrapper">

<h1> 
Контакты 
</h1><br>

<p> Вы можете связаться со мной по телефону +380631738870 или же написать на мой e-mail</p><br>    
<h2>Форма обратной связи</h2>
        
<p class="message">Пожалуйста, заполните поля формы, для отправки письма</p><br>
<div>
    <form method=post action='mail.php'>
    <input type=hidden name=recipient value="admin@gepatit-c.com.ua">
    <input type=hidden name=subject value='<тема письма>'>
    <h2>*Введите реальное имя,</h2> чтобы мы знали как к вам обращяться<br>
    <input type=text name='nick'><br>
    <h2>*Введите реальный e-mail адрес,</h2> на него вы получите ответ на ваше сообщение<br>
    <input type="text" name="email" size="35" /><br>
    <span class="red"></span> <h2>*Тема сообщения:</h2>
    <p><select name="delivery">
    <option>
    <option> Период лечения
    <option> Метод лечения
    <option> Стоимость лечения
    <option> Анализы
    <option> Консультация
    <option> Другое
    </select><br>
    <h2>*Сообщение:</h2></p><br>
    <textarea name='msg' cols="50" rows="6"></textarea><br>
    Поля помеченные <b>*</b> обязательны для заполнения!!! <br>
    <input type=submit value='Отправить сообщение'>
    </form>
</div>

<?php
session_start
();
?>
<form action="" method="post">
<h2><b>*</b> Введите текст показанный на картинке:</h2>
<p><img src="./?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
    if(isset(
$_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
        echo 
"Correct";
    }else{
        echo 
"Wrong";
    }
}
unset(
$_SESSION['captcha_keystring']);
?>

</div>
<div id="content">
</div>

<div id="footer">
<p id="footer-text">
Copyright © 2010 BAN Studio<br/> All Rights Reserved<br>

<div id="counter">
<script language="javascript" type="text/javascript">
cgb_js="1.0"; cgb_r=""+Math.random()+"&r="+
escape(document.referrer)+"&pg="+
escape(window.location.href);
document.cookie="rqbct=1; path=/"; cgb_r+="&c="+
(document.cookie?"Y":"N");
</script><script language="javascript1.1" type="text/javascript">
cgb_js="1.1";cgb_r+="&j="+
(navigator.javaEnabled()?"Y":"N")</script>
<script language="javascript1.2" type="text/javascript">
cgb_js="1.2"; cgb_r+="&wh="+screen.width+
'x'+screen.height+"&px="+
(((navigator.appName.substring(0,3)=="Mic"))?
screen.colorDepth:screen.pixelDepth)</script>
<script language="javascript1.3" type="text/javascript">
cgb_js="1.3"</script>
<script language="javascript" 
type="text/javascript">cgb_r+="&js="+cgb_js; 
document.write("<a href='http://www.1Gb.ua?cnt=7970'>"+
"<img src='http://counter.1Gb.ua/cnt.aspx?"+
"u=7970&"+cgb_r+
"&' border=0 width=88 height=31 "+
"alt='1Gb.ua counter'><\/a>")</script>
<noscript><a href='http://www.1Gb.ua?cnt=7970'>
<img src="http://counter.1Gb.ua/cnt.aspx?u=7970" 
border=0 width="88" height="31" alt="1Gb.ua counter"></a>
</noscript>
</div>
</div>
</body>
</html>

Код выполнения отправки сообщений mail.php


PHP код: Выделить весь код

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http:www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="author" content="Alex Berdnikov"/>
<meta name="robots" content="all"/>
<title>Лечение гепатита С</title>
</head>
</html>
<?php
$url 
"contact.html"//Ваша страница, где вы будете ставить форму обратной связи.
$title "gepatit-c-com-ua.1gb.ua"//адрес вашего сайта
$subject "Письмо с сайта $title"//Тема отпровляемых вам сообщений
$admail "admin@gepatit-c.com.ua"//Ваш e-mail, на который будут отправляться письма
$back "<p><a href=\"javascript: history.back()\">Назад</a></p>";

if(@
$_POST['nick'] or @$_POST['email'] or @$_POST['delivery'] or @$_POST['msg'])
{
@
$nick $_POST['nick'] or die("Убедитесь, что вы ввели свое имя!$back");
@
$email $_POST['email'] or die("Убедитесь, что вы ввели свой E-mail!$back");
@
$delivery $_POST['delivery'] or die("Убедитесь, что вы ввели тему сообщения!$back");
@
$msg $_POST['msg'] or die("Убедитесь, что вы ввели сообшение!$back");

if(!
eregi("^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$"$email))
{
echo 
"Убедитесь, что вы ввели корректный E-mail!$back";
exit;
}
$CONFIG_MAIL_CHARSET 'utf-8';
$content "\nПользователь $nick!\n
Адресс: $email\n
Отправил(а) вам письмо с сайта - \"$title\"\n
Тема - $delivery, со следующим содержанием:\n\n$msg"
;
if(!@
mail($admail$subject$content"From: $from\nReply-To: $from\nContent-Type: text/plain; charset=$CONFIG_MAIL_CHARSET\nContent-Transfer-Encoding: 8bit\n"))
{
echo 
"Ошибка при отправке письма. Пожалуйста сообщите об этом администратору данного сайта, используя любой другой вид связи.$back";
exit;
}
else
{
echo 
"Ваше сообщение успешно отправлено!<Br> Вы получите ответ в ближайшее время ";
echo 
"<meta http-equiv=\"refresh\" content=\"1;URL=$url\">";
}
}
else {
die(
"Для отправки сообщения заполните все поля!$back");
}
?>

Код пхп файла kcaptcha.php
PHP код: Выделить весь код

<?php


# KCAPTCHA PROJECT VERSION 1.2.6

# Automatic test to tell computers and humans apart

# Copyright by Kruglov Sergei, 2006, 2007, 2008
# www.captcha.ru, www.kruglov.ru

# System requirements: PHP 4.0.6+ w/ GD

# KCAPTCHA is a free software. You can freely use it for building own site or software.
# If you use this software as a part of own sofware, you must leave copyright notices intact or add KCAPTCHA copyright notices to own.
# As a default configuration, KCAPTCHA has a small credits text at bottom of CAPTCHA image.
# You can remove it, but I would be pleased if you left it. ;)

# See kcaptcha_config.php for customization

class KCAPTCHA{

    
// generates keystring and image
    
function KCAPTCHA(){

        require(
dirname(__FILE__).'/kcaptcha_config.php');
        
$fonts=array();
        
$fontsdir_absolute=dirname(__FILE__).'/'.$fontsdir;
        if (
$handle opendir($fontsdir_absolute)) {
            while (
false !== ($file readdir($handle))) {
                if (
preg_match('/\.png$/i'$file)) {
                    
$fonts[]=$fontsdir_absolute.'/'.$file;
                }
            }
            
closedir($handle);
        }    
    
        
$alphabet_length=strlen($alphabet);
        
        do{
            
// generating random keystring
            
while(true){
                
$this->keystring='';
                for(
$i=0;$i<$length;$i++){
                    
$this->keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
                }
                if(!
preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/'$this->keystring)) break;
            }
        
            
$font_file=$fonts[mt_rand(0count($fonts)-1)];
            
$font=imagecreatefrompng($font_file);
            
imagealphablending($fonttrue);
            
$fontfile_width=imagesx($font);
            
$fontfile_height=imagesy($font)-1;
            
$font_metrics=array();
            
$symbol=0;
            
$reading_symbol=false;

            
// loading font
            
for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){
                
$transparent = (imagecolorat($font$i0) >> 24) == 127;

                if(!
$reading_symbol && !$transparent){
                    
$font_metrics[$alphabet{$symbol}]=array('start'=>$i);
                    
$reading_symbol=true;
                    continue;
                }

                if(
$reading_symbol && $transparent){
                    
$font_metrics[$alphabet{$symbol}]['end']=$i;
                    
$reading_symbol=false;
                    
$symbol++;
                    continue;
                }
            }

            
$img=imagecreatetruecolor($width$height);
            
imagealphablending($imgtrue);
            
$white=imagecolorallocate($img255255255);
            
$black=imagecolorallocate($img000);

            
imagefilledrectangle($img00$width-1$height-1$white);

            
// draw text
            
$x=1;
            for(
$i=0;$i<$length;$i++){
                
$m=$font_metrics[$this->keystring{$i}];

                
$y=mt_rand(-$fluctuation_amplitude$fluctuation_amplitude)+($height-$fontfile_height)/2+2;

                if(
$no_spaces){
                    
$shift=0;
                    if(
$i>0){
                        
$shift=10000;
                        for(
$sy=7;$sy<$fontfile_height-20;$sy+=1){
                            for(
$sx=$m['start']-1;$sx<$m['end'];$sx+=1){
                                
$rgb=imagecolorat($font$sx$sy);
                                
$opacity=$rgb>>24;
                                if(
$opacity<127){
                                    
$left=$sx-$m['start']+$x;
                                    
$py=$sy+$y;
                                    if(
$py>$height) break;
                                    for(
$px=min($left,$width-1);$px>$left-12 && $px>=0;$px-=1){
                                        
$color=imagecolorat($img$px$py) & 0xff;
                                        if(
$color+$opacity<190){
                                            if(
$shift>$left-$px){
                                                
$shift=$left-$px;
                                            }
                                            break;
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                        if(
$shift==10000){
                            
$shift=mt_rand(4,6);
                        }

                    }
                }else{
                    
$shift=1;
                }
                
imagecopy($img$font$x-$shift$y$m['start'], 1$m['end']-$m['start'], $fontfile_height);
                
$x+=$m['end']-$m['start']-$shift;
            }
        }while(
$x>=$width-10); // while not fit in canvas

        
$center=$x/2;

        
// credits. To remove, see configuration file
        
$img2=imagecreatetruecolor($width$height+($show_credits?12:0));
        
$foreground=imagecolorallocate($img2$foreground_color[0], $foreground_color[1], $foreground_color[2]);
        
$background=imagecolorallocate($img2$background_color[0], $background_color[1], $background_color[2]);
        
imagefilledrectangle($img200$width-1$height-1$background);        
        
imagefilledrectangle($img20$height$width-1$height+12$foreground);
        
$credits=empty($credits)?$_SERVER['HTTP_HOST']:$credits;
        
imagestring($img22$width/2-imagefontwidth(2)*strlen($credits)/2$height-2$credits$background);

        
// periods
        
$rand1=mt_rand(750000,1200000)/10000000;
        
$rand2=mt_rand(750000,1200000)/10000000;
        
$rand3=mt_rand(750000,1200000)/10000000;
        
$rand4=mt_rand(750000,1200000)/10000000;
        
// phases
        
$rand5=mt_rand(0,31415926)/10000000;
        
$rand6=mt_rand(0,31415926)/10000000;
        
$rand7=mt_rand(0,31415926)/10000000;
        
$rand8=mt_rand(0,31415926)/10000000;
        
// amplitudes
        
$rand9=mt_rand(330,420)/110;
        
$rand10=mt_rand(330,450)/110;

        
//wave distortion

        
for($x=0;$x<$width;$x++){
            for(
$y=0;$y<$height;$y++){
                
$sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1;
                
$sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10;

                if(
$sx<|| $sy<|| $sx>=$width-|| $sy>=$height-1){
                    continue;
                }else{
                    
$color=imagecolorat($img$sx$sy) & 0xFF;
                    
$color_x=imagecolorat($img$sx+1$sy) & 0xFF;
                    
$color_y=imagecolorat($img$sx$sy+1) & 0xFF;
                    
$color_xy=imagecolorat($img$sx+1$sy+1) & 0xFF;
                }

                if(
$color==255 && $color_x==255 && $color_y==255 && $color_xy==255){
                    continue;
                }else if(
$color==&& $color_x==&& $color_y==&& $color_xy==0){
                    
$newred=$foreground_color[0];
                    
$newgreen=$foreground_color[1];
                    
$newblue=$foreground_color[2];
                }else{
                    
$frsx=$sx-floor($sx);
                    
$frsy=$sy-floor($sy);
                    
$frsx1=1-$frsx;
                    
$frsy1=1-$frsy;

                    
$newcolor=(
                        
$color*$frsx1*$frsy1+
                        
$color_x*$frsx*$frsy1+
                        
$color_y*$frsx1*$frsy+
                        
$color_xy*$frsx*$frsy);

                    if(
$newcolor>255$newcolor=255;
                    
$newcolor=$newcolor/255;
                    
$newcolor0=1-$newcolor;

                    
$newred=$newcolor0*$foreground_color[0]+$newcolor*$background_color[0];
                    
$newgreen=$newcolor0*$foreground_color[1]+$newcolor*$background_color[1];
                    
$newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2];
                }

                
imagesetpixel($img2$x$yimagecolorallocate($img2$newred$newgreen$newblue));
            }
        }
        
        
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
        
header('Cache-Control: no-store, no-cache, must-revalidate'); 
        
header('Cache-Control: post-check=0, pre-check=0'FALSE); 
        
header('Pragma: no-cache');
        
        if(
function_exists("imagejpeg")){
            
header("Content-Type: image/jpeg");
            
imagejpeg($img2null$jpeg_quality);
        }else if(
function_exists("imagegif")){
            
header("Content-Type: image/gif");
            
imagegif($img2);
        }else if(
function_exists("imagepng")){
            
header("Content-Type: image/x-png");
            
imagepng($img2);
        }
    }

    
// returns keystring
    
function getKeyString(){
        return 
$this->keystring;
    }
}

?>

Фаил index.php
PHP код: Выделить весь код

<?php


error_reporting 
(E_ALL);

/* Using:

    <?php
    session_start();
    ?>
    <form action="./" method="post">
    <p>Enter text shown below:</p>
    <p><img src="PATH-TO-THIS-SCRIPT?<?php echo session_name()?>=<?php echo session_id()?>"></p>
    <p><input type="text" name="keystring"></p>
    <p><input type="submit" value="Check"></p>
    </form>
    <?php
    if(count($_POST)>0){
        if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']){
            echo "Correct";
        }else{
            echo "Wrong";
        }
    }
    unset($_SESSION['captcha_keystring']);
    ?>

*/

include('kcaptcha.php');

if(isset(
$_REQUEST[session_name()])){
    
session_start();
}

$captcha = new KCAPTCHA();

if(
$_REQUEST[session_name()]){
    
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}

?>


Отправлено: 17:19, 09-11-2010

 

Пользователь


Сообщения: 124
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хочу вставить код в фаил mail.php с пхп файла где создаётся форма капчи и идёт анализ на правильность ввода текста с картинки вот пример кода анализа введённых полей mail.php, не могу разобраться куда нужно вставить код проверки на ввод текста...

Анализ заполнения полей для отправки письма
PHP код: Выделить весь код

if(!@mail($admail$subject$content"From: $from\nReply-To: $from\nContent-Type: text/plain; charset=$CONFIG_MAIL_CHARSET\nContent-Transfer-Encoding: 8bit\n")) { echo "Ошибка при отправке письма. Пожалуйста сообщите об этом администратору данного сайта, используя любой другой вид связи.$back"; exit; } else { echo "Ваше сообщение успешно отправлено!<Br> Вы получите ответ в ближайшее время "; echo "<meta http-equiv=\"refresh\" content=\"1;URL=$url\">"; } } else { die("Для отправки сообщения заполните все поля!$back"); } 


Анализ на правильность ввода кода с картинки
PHP код: Выделить весь код

if(count($_POST)>0){     if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){         echo "Correct";     }else{         echo "Wrong";     } } unset($_SESSION['captcha_keystring']); 


Как мне интегрировать анализ проверки кода, что бы при нажатии на отправить шла проверка на введённый код с картинки???

gepatit-c.com.ua/contact.php

Отправлено: 16:38, 11-11-2010 | #2



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

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



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Добавление капчи на форму отправки сообщений

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Кодировка для формы отправки сообщений на email banbug Вебмастеру 11 08-11-2010 16:39
[решено] Запрет отправки сообщений со старой почты. zubkoff.s Microsoft Windows NT/2000/2003 11 20-01-2010 03:04
Почему в этом форуме не все могут отвечать в чужих темах Vadikan Лечение систем от вредоносных программ 0 09-06-2009 02:04
Добавление новых полей в форму при нажатии кнопки! Scorpion666 Вебмастеру 1 13-11-2006 12:53
Скрипт отправки сообщений (неправильная кодировка) Denis Shutka Вебмастеру 2 10-04-2005 09:12




 
Переход