Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 20

Проблема с капчей

29.01.2012, 18:53. Показов 3438. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет друзья. У меня проблема. Начал изучение PHP, пишу сайт с codeignater-ом. создал форму с несколькими полями (имя, мэйл, тема сообщения, текст сообщения и капча). когда дело доходит до капчи, вношу правильный цифры с картинки, но проверка не проходит в контроллере и мне говорят что цифры с картинки были неверно вбиты. Пожалуйста подскажи что делать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.01.2012, 18:53
Ответы с готовыми решениями:

Работа с капчей
Кто знает как обойти такую капчу? кот картинка вот что на странице видно <table border="0" cellspacing="0"...

Проблемы с капчей
Доброго времени суток! Проблемы возникли с капчей, ни как не удается придумать решение, прошу вашего совета. Суть: index.html ...

Проблемы с капчей!
Подскажите, пожалуйста, как сделать так, чтобы при вводе неправильной капчи анкета не выводилась?! А то просто пишет, что капча введена...

11
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 20
30.01.2012, 03:29  [ТС]
Это контроллер

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
 
class Pages extends CI_Controller
{
    public function __construct()
    {
       parent::__construct();
       $this->load->model('pages_model');
    }
    
    
    
    public function index()
    {
        redirect(base_url());
    }
 
    public function show ($page_id)
    {
        
        //Формируем массив для передачи в вид
        $data=array();
         // Массив по свежим материалам 
        $data['latest_materials'] = $this->materials_model->get_latest();
        
        // Массив по популярным материалам 
        $data['popular_materials'] = $this->materials_model->get_popular();
        
         // Массив по одной странице   
        $data['main_info'] = $this->pages_model->get($page_id);
        
        switch($page_id)
        {
            ///Если страница главная
            case 'index':
            
                $name = 'pages/mainpage';
                
                $this->display_lib->user_page($data,$name);
                
                break;
            
            // Если страница "Контакты"
            case 'contact':
            
                $this->load->library('captcha_lib');
                
                
            // Не нажата кнопка "Отправить"
            if( ! isset($_POST['send_message']))
            {
                // Получаем код картинки
                $data['imgcode'] = $this->captcha_lib->captcha_actions();
                $data['info'] = ''; // Информационное сообщение
                $name = 'pages/contact';
                
                $this->display_lib->user_page($data,$name);
            }
            // Нажата кнопка "Отправить"
            else
            {
                // Установка правил валидации
                $this->form_validation->set_rules($this->pages_model->contact_rules);
                
                $val_res = $this->form_validation->run();
                
                // если валидация пройдена
                if($val_res == TRUE)
                {
                    // Получаем значение поля капча
                    $entered_captcha = $this->input->post('captcha');
                       
                    
                    // Если капча совпадает, отправляем письмо
                    if($entered_captcha == $this->session->userdata('rnd_captcha'))
                    {
                        $this->load->library('typography');
                        
                        // Имя отправителя
                        $name = $this->input->post('name');
                        
                        // Указанный отправителем email
                        $email = $this->input->post('email');
                        
                        // Тема сообщения, указанная отправителем 
                        $text = $this->input->post('topic');
                        
                        // Текст сообщения
                        $text = $this->input->post('message');
                        
                        // Переносы после 70 знаков (Ограничение mail в PHP)
                        $text = wordwrap($text,70);
                        
                        // TRUE - более двух переводов строк все равно считаются за два перевода строки
                        $text = $this->typography->auto_typography($text,true); 
                        
                        // Удаляем html-тэги для удобства чтения
                        $text = strip_tags($text);
                        
                        // Куда отправляется письмо
                        $address = "codeharmony.ru@gmail.com";
                        
                        // Тема письма как ее видит получатель
                        $subject = "Вопрос из формы обратной связи";
                        
                        $message = "Написал(а):$name\nТема: $topic\nСообщение: \n$text\nE-mail отправителя: $email";
                        
                        // Отправляем письмо
                        mail($address,$subject,$message,"Content-type:text/plain;charset = windows-1251\r\n");
                        
                        $data['info'] = 'Ваше сообщение отправлено. Если оно требует ответа, я свяжусь с вами в кратчайшие сроки.';
                        $name = 'info';
                        
                        $this->display_lib->user_info_page($data,$name);
                    }
                    // Если капча не совпадает
                    else
                    {
                        // Получаем код картинки
                        $data['imgcode'] = $this->captcha_lib->captcha_actions();
                        
                        $data['info'] = 'Неверно введены цифры с картинки';
                        $name = 'pages/contact';
                        
                        $this->display_lib->user_info_page($data,$name);            
                    }
                }
                
                // Если валидация не пройдена
                else
                {
                    // Получаем код картинки
                    $data['imgcode'] = $this->captcha_lib->captcha_actions();
                    $data['info'] = ''; // Информационное сообщение
                    
                    $name = 'pages/contact';
                    
                    $this->display_lib->user_page($data,$name);
                }
            }
                break;
                
                
                
            // Любая другая страница
            default:
            
            // Если массив пуст
            if(empty($data['main_info']))
            {
                $data['info'] = 'Нет такой страницы';
                $name = 'info';
                
                $this->display_lib->user_info_page($data,$name);
            }
            
            else
            {
                $name = 'pages/page';
                $this->display_lib->user_page($data,$name);
            }
        
        }
    }
 
 
}
 
 
?>
Добавлено через 52 секунды
Библиотека captcha_lib

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 
    class Captcha_lib
    {
        public function captcha_actions()
        {
            $CI =& get_instance();
            
            // Загружаем хелпер Капча
            $CI->load->helper('captcha');
            
            // Загружаем хэлпер для генерирования случайной строки
            $CI->load->helper('string');
            $rnd_str = random_string('numeric',5);  
            
            // Записываем строку в сессию
            $ses_data = array();
            $ses_data['rnd_captcha'] = $rnd_str;
            $CI->session->set_userdata($ses_data);
            
            //Параметры картинки
            $settings = array('word'         => $rnd_str,
                              'img_path'     => './img/captcha/',
                              'img_url'      => base_url().'img/captcha/',
                              'font_path'    => './system/fonts/texb.ttf',
                              'img_width'    => 120,
                              'img_height'   => 30,
                              'expiration'   => 10);
                              
            // Создаем капчу
            $captcha = create_captcha($settings);
            
            // Получаем в переменную код картинки
            $imgcode = $captcha['image'];
            return $imgcode;
            
                        
        }
    }
 
 
 
 
?>
Добавлено через 7 часов 38 минут
Друзья пожалуйста подскажите, а то никак не могу понять что, да как

 Комментарий модератора 
Используйте теги форматирования кода!
0
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 20
31.01.2012, 17:10  [ТС]
ЛЮЮЮЮДИИИИ помогите
0
103 / 70 / 5
Регистрация: 09.06.2011
Сообщений: 263
04.02.2012, 01:26
а ты сам то в вышеизложеном коде разобрался для начала?
0
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
04.02.2012, 12:39
Ты сам писал код ? или копипаст
0
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 20
05.02.2012, 01:20  [ТС]
да я разобрался. а код взял с видео урока ) Там проверка не проходит, и говорит о том что код с картинки не верно введен
0
103 / 70 / 5
Регистрация: 09.06.2011
Сообщений: 263
05.02.2012, 01:58
а не проще найти код для капчи без использования ООП?
0
gubarets
05.03.2013, 11:22
У меня такаяже проблема на этих же уроках. Мне кажеться что баг в самом codeigniter2, т.к. в codeigniter1 все работает.
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
05.03.2013, 11:33
Цитата Сообщение от gubarets Посмотреть сообщение
У меня такаяже проблема на этих же уроках. Мне кажеться что баг в самом codeigniter2, т.к. в codeigniter1 все работает.
это урок под кодеигнитер 1, а не под 2. Я вообще функции display_lib не смог найти.
0
gubarets
05.03.2013, 22:37
Да там разницы почти никакой добавить приставку CI (CI_Models,CI_contoller)Бконструктор немного иначе (parent::__construct), да и капча теперь не плагин, а хелпер. Все остальное один в один . Только вот капча ему все не та да и логин пароль тоже...что за глюк...под 1 codeigniter все работает.
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
05.03.2013, 23:11
посоны - учите пхп с пхп, а не с фреймворков.
0
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
24.03.2013, 02:05
Писал изучая php:

Привожу код html и класс капчи остальные классы в исходниках:

PHP
1
2
3
4
// В папке QCaptcha две папки:
// captchaBack - фоны для капчи, скидывая туда фоны класс сам просматривает папку на файлы *.png
// captchaTTF - шрифты работают также, просто кидаем туда нужный шрифт и он будет отображаться
// QCodeGen есть еще методы интересно смотрите там

PS: При клике по капче она меняется.


index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Test class</title>
</head>
 
<body>
    <table style="width: 100%; height: 100%; text-align: center;">
        <tr>
            <td>
                <p><a href='#' onclick="document.getElementById('captchaImg').src='Qp/QCaptcha/classQCaptcha.php?'+Math.random(); return false;"><img id='captchaImg' src='Qp/QCaptcha/classQCaptcha.php'></a></p>
            </td>
        </tr>
    </table>
</body>
</html>

class (classQCaptcha.php):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
 
namespace Qp;
 
session_start();
 
include_once('../QCodeGen/classQCodeGen.php');
include_once('../QDir/classQDir.php');
 
class QCaptcha {
 
    private $dirImage;
    private $dirTff;
    private $fontSize = 16;
    private $lines = 6;
    private $sizeCode;
    private $enumCode;
 
    private $arrImage = array();
    private $arrTtf = array();
    // Конструктор
    function __construct($sizeCode = 8, $enumCode = 0){
        $this->dir = 'codeGen/';
 
        $this->dirImage = 'captchaBack/';
        $this->dirTff = 'captchaTTF/';
 
        $this->enumCode = $enumCode;
        $this->sizeCode = $sizeCode;
 
        $qDir = new QDir($this->dirImage);
        $this->arrImage = $qDir->entryListFiles('png');
        $qDir->setDir($this->dirTff);
        $this->arrTtf = $qDir->entryListFiles('ttf');
    }
    // Установка размера шрифта
    function setFontSize($fontSize){
        $this->fontSize = $fontSize;
    }
    // Установка количества линий
    function setNumLines($lines){
        $this->lines = $lines;
    }
 
    function getCaptcha(){
 
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        header("Pragma: no-cache");
        header("Content-Type:image/png");
 
        $img = imagecreatefrompng($this->dirImage.$this->arrImage[rand(0,count($this->arrImage)-1)]); //создаем изображение со случайным фоном
 
        // Рисуем линии
        for ($i=0; $i<$this->lines; $i++){
            $color = imagecolorallocate($img, rand(0, 150), rand(0, 100), rand(0, 150));
            imageline($img, rand(0, -10), rand(1, 50), rand(150, 180), rand(1, 50), $color);
        }
 
        $color = imagecolorallocate($img, rand(0, 200), 0, rand(0, 200));
 
        // Генерируем нужный пароль
        $codeGen = new QCodeGen($this->sizeCode);
 
        switch($this->enumCode){
            case 0:
                $codeGen->genCodeEng_Number();  // Генерируется код англ+цифры
                break;
            case 1:
                $codeGen->genCodeEng();         // Генерируется код англ
                break;
            case 2:
                $codeGen->genCodeNumber();      // Генерируется код цифры
                break;
        }
 
        $code = $codeGen->getCode(); // Получение кода из класса
 
        $_SESSION['captchaCode'] = $code; // Сохранение кода в сессии для проверки
 
        imagettftext ($img, $this->fontSize, rand(0, 4), rand(0, 25), rand(30, 40), $color, $this->dirTff.$this->arrTtf[rand(0,count($this->arrTtf)-1)], $code);//накладываем код
 
        //еще раз линии! Уже сверху.
        for ($i=0; $i<$this->lines; $i++){
            $color = imagecolorallocate($img, rand(0, 150), rand(0, 100), rand(0, 150));
            imageline($img, rand(0, 150), rand(0, 0), rand(0, 0), rand(150, 150), $color);
        }
 
        ImagePNG($img);
        ImageDestroy($img);//ну вот и создано изображение!
    }
}
 
$captcha = new QCaptcha(6,1); // Установливаем размер кода(1) и тип пароля(2(0,1,2))
$captcha->setFontSize(20);   // Установка размера шрифта
$captcha->setNumLines(4);    // Установка количества линий (перечеркуют шрифт)
$captcha->getCaptcha();      // Выводим капчу
 
// Удачи!
Миниатюры
Проблема с капчей   Проблема с капчей   Проблема с капчей  

Вложения
Тип файла: zip Qp.zip (441.6 Кб, 18 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2013, 02:05
Помогаю со студенческими работами здесь

Регистрация с капчей
Добрый день! Копаюсь сейчас с регистрацией на сайте, для безопасности после 5 неудачных попыток (входа, регистрации - не важно) вывожу...

Проблемы с математической капчей
Здравствуйте! Очень нужна помощь! Запутался на ерунде. Делаю сейчас математическую капчу (поскольку reCAPTCHA от Google более не...

Отправка письма с капчей
Есть полностью валидный код отправки письма с капчей. Мне необходимо (дополнить код) отправлять копию письма на другой адрес. ...

Криво работает форма с капчей
Доброе время суток ! Народ помогите пожалуйста дорихтовать форму с капчей . Вобщем прикрутил капчу на форму обратной связи Капча на...

Работа с капчей. Что не так?
Сделал капчу при добавлении комментариев и не могу соединить это все в 1. Если капча введена правильно - отсылаем комментарий, иначе - не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru