diff options
author | itchief <alex.malcev1980@gmail.com> | 2017-11-18 16:50:18 +0300 |
---|---|---|
committer | itchief <alex.malcev1980@gmail.com> | 2017-11-18 16:50:18 +0300 |
commit | 40b587634855e04bd9ae9be00fd9110bcf912698 (patch) | |
tree | 53a14be34aa8f3132c901d1cb82a3b95987c269d | |
parent | d223ed06e1b077424090fd17c2098376b5cebb27 (diff) |
fix for user agreement
-rw-r--r-- | feedback/captcha/captcha.php | 39 | ||||
-rw-r--r-- | feedback/js/main.js | 16 | ||||
-rw-r--r-- | feedback/process/process.php | 4 |
3 files changed, 38 insertions, 21 deletions
diff --git a/feedback/captcha/captcha.php b/feedback/captcha/captcha.php index 0250523..1569b1b 100644 --- a/feedback/captcha/captcha.php +++ b/feedback/captcha/captcha.php @@ -1,31 +1,36 @@ <?php -//открывает сессию +//открываем сессию session_start(); -//присваивает PHP переменной captchastring строку символов +$id = 'captcha'; +if (isset($_GET['id'])) { + $id = filter_var($_GET['id'], FILTER_SANITIZE_STRING); +} + +// присваиваем PHP переменной captchastring строку символов $captchastring = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'; -//получает первые 6 символов после их перемешивания с помощью функции str_shuffle +// получаем первые 6 символов после их перемешивания с помощью функции str_shuffle $captchastring = substr(str_shuffle($captchastring), 0, 6); -//инициализация переменной сессии с помощью сгенерированной подстроки captchastring, -//содержащей 6 символов -$_SESSION["code"] = $captchastring; +// инициализируем переменной сессии с помощью сгенерированной подстроки captchastring, +// содержащей 6 символов +$_SESSION[$id] = $captchastring; -//Генерирует CAPTCHA +// генерируем CAPTCHA -//создает новое изображение из файла background.png +// создаем новое изображение из файла background.png $image = imagecreatefrompng(dirname(__FILE__) . '/background.png'); -//устанавливает цвет (R-200, G-240, B-240) изображению, хранящемуся в $image +// устанавливаем цвет (R-200, G-240, B-240) изображению, хранящемуся в $image $colour = imagecolorallocate($image, 200, 240, 240); -//присваивает переменной font название шрифта +// присваиваем переменной font название шрифта $font = dirname(__FILE__) . '/oswald.ttf'; -//устанавливает случайное число между -10 и 10 градусов для поворота текста +// устанавливаем случайное число между -10 и 10 градусов для поворота текста $rotate = rand(-10, 10); -//рисует текст на изображении шрифтом TrueType (1 параметр - изображение ($image), -//2 - размер шрифта (18), 3 - угол поворота текста ($rotate), -//4, 5 - начальные координаты x и y для текста (18,30), 6 - индекс цвета ($colour), -//7 - путь к файлу шрифта ($font), 8 - текст ($captchastring) +// рисуем текст на изображении шрифтом TrueType (1 параметр - изображение ($image), +// 2 - размер шрифта (18), 3 - угол поворота текста ($rotate), +// 4, 5 - начальные координаты x и y для текста (18,30), 6 - индекс цвета ($colour), +// 7 - путь к файлу шрифта ($font), 8 - текст ($captchastring) imagettftext($image, 18, $rotate, 28, 32, $colour, $font, $captchastring); -//будет передавать изображение в формате png +// будем передавать изображение в формате png header('Content-type: image/png'); -//выводит изображение +//выводим изображение imagepng($image); diff --git a/feedback/js/main.js b/feedback/js/main.js index 3369f65..5857c93 100644 --- a/feedback/js/main.js +++ b/feedback/js/main.js @@ -237,7 +237,13 @@ $(function () { var captcha = submitForm.find('[name="captcha"]').eq(0); $(captcha).val(''); var imgCaptcha = submitForm.find('.img-captcha'); - imgCaptcha.attr('src', imgCaptcha.attr('data-src') + '?id=' + Math.random() + ''); + var src = imgCaptcha.attr('data-src'); + if (src.indexOf('?id') !== -1) { + src += '&rnd='+(new Date()).getTime(); + } else { + src += '?rnd='+(new Date()).getTime(); + } + imgCaptcha.attr('src',src); } // если сервер вернул ответ error... @@ -287,7 +293,13 @@ $(function () { // обновление капчи ProcessForm.prototype.refreshCaptcha = function () { var imgCaptcha = $('#' + this.idForm).find('.img-captcha'); - imgCaptcha.attr('src', imgCaptcha.attr('data-src') + '?id=' + Math.random() + ''); + var src = imgCaptcha.attr('data-src'); + if (src.indexOf('?id') !== -1) { + src += '&rnd='+(new Date()).getTime(); + } else { + src += '?rnd='+(new Date()).getTime(); + } + imgCaptcha.attr('src',src); }; // изменение элемента input с type="file" diff --git a/feedback/process/process.php b/feedback/process/process.php index 490ed64..7727f0c 100644 --- a/feedback/process/process.php +++ b/feedback/process/process.php @@ -69,9 +69,9 @@ if (isset($_POST['message'])) { } //валидация капчи -if (isset($_POST['captcha']) && isset($_SESSION['code'])) { +if (isset($_POST['captcha']) && isset($_SESSION['captcha'])) { $captcha = filter_var($_POST['captcha'], FILTER_SANITIZE_STRING); // защита от XSS - if ($_SESSION["code"] != $captcha) { // проверка капчи + if ($_SESSION['captcha'] != $captcha) { // проверка капчи $data['captcha'] = 'Вы неправильно ввели код с картинки'; $data['result'] = 'error'; } |