Не обновляется captcha

348
18 марта 2017, 02:31

Капча работает, но при нажатие обновить она не обновляется, лишь при перезагрузки страницы
Вот блок с капчей

<div id="block-captcha"> 
<img src="/reg/reg_captcha.php" /> 
<input type="text" name="reg_captcha" id="reg_captcha" /> 
<p id="reloadcaptcha">Обновить</p> 
</div>

Файл shop-script.js

 $(document).ready(function(){
$("#select-sort").click(function(){
$("#sorting-list").slideToggle(200);
});
$('#block-category > ul > li > a').click(function(){
if ($(this).attr('class') != 'active'){
  $('#block-category >ul > li > ul').slideUp(400);
  $(this).next().slideToggle(400);
  $('#block-category > ul > li > a').removeClass('active');
  $(this).addClass('active');
  $.cookie('select_cat', $(this).attr('id'));
 }else
 {
$('#block-category > ul > li > a').removeClass('active');
$('#block-category > ul > li > ul').slideUp(400);
$.cookie('select_cat', '');
}
});
if ($.cookie('select_cat') != '')
{
$('#block-category >ul > li > #'+$.cookie('select_cat')).assClass('active').next().show();
}
$('#reloadcaptcha').click(function(){
 $('#block-captcha > img').attr("src","/reg/reg_captcha.php?r="+ Math.random());
});
});

Файл reg_captcha

    <?php
session_start();
$width = 100;                  // ширина
 $height = 50;                  // высота
$font_size = 17.5;              // размер шрифта
$let_amount = 4;               // количество символов капчи
$fon_let_amount = 30;          // количество символов в фоне
$path_fonts = 'fonts/';        // путь до шрифта
 // массив - из каких символов будет состоять капча
 $letters = array('a','b','c','d','e','f','g','h','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z','2','3','4','5','6','7','9');
 // массив цветов
 $colors = array('10','30','50','70','90','110','130','150','170','190','210');
 // создаем изображение
 $src = imagecreatetruecolor($width,$height);
 // создаем фон
 $fon = imagecolorallocate($src,255,255,255);
 // заполняем этим фоном изображение
 imagefill($src,0,0,$fon);
 // массив шрифтов
 $fonts = array();
 // открываем директорию с шрифтами
 $dir=opendir($path_fonts);
 // считываем ширфты
 while($fontName = readdir($dir)) {
 // если это не текущий каталог и не дочерний
 if($fontName != "." && $fontName != "..") {
     // добавляем шрифт к массиву
     $fonts[] = $fontName;
 }
 }
 // закрываем директорию
 closedir($dir);
  // проходим в цикле от 0 - 30
 for($i=0;$i<$fon_let_amount;$i++) {
 // получаем случайный цвет символов
 $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);
 // случайным образом выбираем шрифт
 $font = $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];
 // случайным образом выбираем символ из массива
 $letter = $letters[rand(0,sizeof($letters)-1)];
 // случайным образом выбираем размер от 17.5 - 2 до 17.5 + 2
 $size = rand($font_size-2,$font_size+2);
 // рисуем символы
 imagettftext($src,$size,rand(0,45),rand($width*0.1,$width-$width*0.1),rand($height*0.2,$height),$color,$font,$letter);
 }
  // проходим в цикле от 0 - 4
 for($i=0;$i<$let_amount;$i++) {
 // получаем случайный цвет
 $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(20,40));
 // получаем случайный шрифт
 $font = $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];
 // получаем случайный символ
 $letter = $letters[rand(0,sizeof($letters)-1)];
 // получаем случайный размер
 $size = rand($font_size*2.1-2,$font_size*2.1+2);
 // расположение символа по оси х
 $x = ($i+1)*$font_size + rand(4,7);
 // расположение символа по оси y
 $y = (($height*2)/3) + rand(0,5);
 // добавляем к массиву символ
 $cod[] = $letter;
 // рисуем символ
 imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
  }
 // сохраняем в сессии код из 4-х символов
 $_SESSION['img_captcha'] = implode('',$cod);
// отправляем заголовок, что будет изображение gif
header ("Content-type: image/gif");
 // создаем изображение gif
 imagegif($src);
 ?>

Файл reg.php

    <?php
 include("include/db_connect.php"); 
 include("functions/functions.php"); 
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<title>Регистрация</title>

</head>
 <body>
<div id="block-body">
  <?php
    include("include/block-header.php");  
  ?>
        <div id="block-cont">
 <form method="post" id="form_reg" action="/reg/handler_reg.php">
<p id="reg_message"></p>
<div id="block-form-reg">
<div class="form-group">
<label for="inputName">Логин</label>
<input type="text" class="form-control" name="reg_login" id="reg_login" placeholder="Введите Логин" />
</div>
<div class="form-group">
<label for="inputPass">Пароль</label>
<input type="password" class="form-control" name="reg_pass" id="reg_pass" placeholder="Введите Пароль" />
</div>
<div class="form-group">
  <label for="inputEmail">Email</label>
<input type="email" class="form-control" name="reg_email" id="reg_email" placeholder="Введите Email" />
</div>
 <div id="block-captcha"> 
 <img src="/reg/reg_captcha.php?1232123" /> 
 <input type="text" name="reg_captcha" id="reg_captcha" /> 
  <p id="reloadcaptcha">Обновить</p> 
 </div>
 <p align="right">
 <input type="submit" class="btn btn-system" name="reg_submit"  id="reg_submit" value="Регистраиця" />
  </div>
 </form>
  </div>
        <?php
          include("include/block-footer.php");
        ?>
  <script type="text/javascript" src="/js/shop-script.js"></script>
  <script type="text/javascript" src="/js/jquery.form.js"></script>
   <script type="text/javascript" src="/js/jquery-3.1.1.min.js"></script>
    <script  src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
  <script>
  $("#form_reg").submit(function(event) {
    event.preventDefault(); // прерываем отправку формы
    var data = $('#form_reg').serialize();
    $.ajax({
        type: "POST",
        url:"/reg/handler_reg.php",
        data:data,
        error:function(){
             $("#reg_message").addClass("reg_mess_error").fadeIn(400).html(data);
        },
        beforeSend: function() {
            $("#reg_message").html('Загрузка...');
        },
        success: function(html){
            $("#block-form-reg").fadeOut(300);
          $("#reg_message").addClass("reg_mess_good").fadeIn(400).html(html);
        }
    });
    return false;
  });
</script>
 </body>
 </html>
Answer 1

Важна правильная последовательность подключения библиотек:

<script src="/js/jquery-3.1.1.min.js" type="text/javascript"></script>
<script src="/js/jquery.cookie.min.js" type="text/javascript"></script>
<script src="/js/jquery.form.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script src="/js/shop-script.js" type="text/javascript"></script>
READ ALSO
Получение индекса объекта в массиве

Получение индекса объекта в массиве

Всем привет! Нужно не столько решение, сколько подсказкаКак получить индекс объекта в массиве типа - [1, 2, 3, 4] - понятно

257
Как изменить HTML внутри div span span на чистом JavaScript

Как изменить HTML внутри div span span на чистом JavaScript

Всем приветКак изменить HTML внутри div span span на чистом JavaScript? делаю пока так

300
Как построить дерево ссылок на javascript?

Как построить дерево ссылок на javascript?

Подскажите пожалуйста как на javascript реализовать дерево ссылокНапример есть такой массив

348
undefined добавляется к массиву

undefined добавляется к массиву

Когда вывожу элементы подмассива в ячейки таблицы через цикл for, то первым выводится undefined, а потом уже все элементы: undefined Hello world Phrase 23 qwerty...

261