За последние 24 часа нас посетили 18274 программиста и 1695 роботов. Сейчас ищут 1555 программистов ...

Передать данные клиенту

Тема в разделе "PHP для новичков", создана пользователем sblrok, 18 апр 2016.

Метки:
  1. sblrok

    sblrok Новичок

    С нами с:
    18 апр 2016
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, я не могу найти способ передать идентификатор капчи клиенту, для того, что бы он отправил ее обратно серверу POST запросом вместе с введенной капчей.
    В моем вопросе можно было бы использовать куки файл, но проблема в том, что капча обновляется каждый раз при нажатии на нее, не обновляя страницы, вот код:
    HTML:
    1. <img src='' onClick="InpCapt();" id="InpCaptcha">
    2.                 <p><strong>Введите капчу</strong></p>
    3.                 <p><input maxlength="25" size="25" name="inpcap"></p>
    4.                 <input id="Send" type="submit" value="Отправить">
    так же используется javascript:
    Код (Javascript):
    1. function InpCapt() {
    2.     $('#InpCaptcha').attr('src', 'Captcha.php?r=' + Math.random());
    3. }
    С помощью него капча обновляется.
    сам файл Captcha.php выглядит так:
    PHP:
    1. <?php
    2. $width = 200;               //Ширина изображения
    3. $height = 100;               //Высота изображения
    4. $font_size = 30;            //Размер шрифта
    5. $let_amount = 5;            //Количество символов, которые нужно набрать
    6. $fon_let_amount = 30;       //Количество символов на фоне
    7. $font = "cour.ttf";         //Путь к шрифту
    8. //набор символов
    9. $letters = array("a","b","c","d","e","f","g","2","4","3","5","7","0","w","x","k","h");    
    10. //цвета
    11. $colors = array("90","110","130","150","170","190","210");
    12. $src = imagecreatetruecolor($width,$height);    //создаем изображение            
    13. $fon = imagecolorallocate($src,255,255,255);    //создаем фон
    14. imagefill($src,0,0,$fon);                       //заливаем изображение фоном
    15. for($i=0;$i < $fon_let_amount;$i++)          //добавляем на фон буковки
    16. {
    17.     //случайный цвет
    18.     $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);
    19.     //случайный символ
    20.     $letter = $letters[rand(0,sizeof($letters)-1)];
    21.     //случайный размер                            
    22.     $size = rand($font_size-2,$font_size+2);                                          
    23.     imagettftext($src,$size,rand(0,45),
    24.         rand($width*0.1,$width-$width*0.1),
    25.         rand($height*0.2,$height),$color,$font,$letter);
    26. }
    27. for($i=0;$i < $let_amount;$i++)      //то же самое для основных букв
    28. {
    29.    $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],
    30.         $colors[rand(0,sizeof($colors)-1)],
    31.         $colors[rand(0,sizeof($colors)-1)],rand(20,40));
    32.    $letter = $letters[rand(0,sizeof($letters)-1)];
    33.    $size = rand($font_size*2-2,$font_size*2+2);
    34.    if($i<$let_amount/2) $x = ($i+1)*$font_size + rand(2,7);
    35.    else $x = ($i+1)*$font_size - rand(2,7);
    36.       //даем каждому символу случайное смещение
    37.    $y = (($height*2)/3) + rand(0,5);                          
    38.    $cod[] = $letter;                        //запоминаем код
    39.    imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
    40. }
    41. $cod = implode("",$cod);                    //переводим код в строку
    42. $_SESSION['code']=$cod;
    43. header ("Content-type: image/gif");         //выводим готовую картинку
    44. imagegif($src);
    45. ?>
    Ну и картинка, на всякий случай :
    [​IMG]
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Добавь один инпут типа hidden.
    В функции сначала создай переменную, присвой в нее значение от math.random, затем добавь еще одну строчку, которая будет вставлять в инпут хидден значение этой переменной. Без компа мне неудобно написать это, но вообще суть ясна?
     
    sblrok нравится это.
  3. sblrok

    sblrok Новичок

    С нами с:
    18 апр 2016
    Сообщения:
    2
    Симпатии:
    0
    Да, спасибо, попробую
    --- Добавлено ---
    Все отлично получилось, спасибо за совет