Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/itchief/feedbackForm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoritchief <alex.malcev1980@gmail.com>2017-11-18 16:50:18 +0300
committeritchief <alex.malcev1980@gmail.com>2017-11-18 16:50:18 +0300
commit40b587634855e04bd9ae9be00fd9110bcf912698 (patch)
tree53a14be34aa8f3132c901d1cb82a3b95987c269d
parentd223ed06e1b077424090fd17c2098376b5cebb27 (diff)
fix for user agreement
-rw-r--r--feedback/captcha/captcha.php39
-rw-r--r--feedback/js/main.js16
-rw-r--r--feedback/process/process.php4
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';
}