From 045803087d9055c6b33c69d19066d046adb73989 Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Mon, 28 Aug 2023 14:23:41 +0300 Subject: [PATCH] Unified Captcha --- _incl_data/class/Captcha/Captcha.php | 81 +++ .../class/Captcha/fonts}/BK2.ttf | Bin .../class/Captcha/fonts}/Bradley Hand ITC.ttf | Bin .../class/Captcha/fonts}/CHILLER.ttf | Bin .../Captcha/fonts}/Edgar_da_cool_Regular.ttf | Bin .../class/Captcha/fonts}/FRSCRIPT.ttf | Bin .../Captcha/fonts}/Fh_Script_Regular.ttf | Bin .../class/Captcha/fonts}/Gabo4_Gabo4.ttf | Bin .../class/Captcha/fonts}/GothicRus.ttf | Bin .../class/Captcha/fonts}/Hurryup_Hurryup.ttf | Bin .../class/Captcha/fonts}/JAMI_Regular.ttf | Bin .../class/Captcha/fonts}/Justy1_Regular.ttf | Bin .../Captcha/fonts}/de_Manu_2_Regular.ttf | Bin _incl_data/class/FightRequest.php | 13 +- buttons.php | 30 +- js/gameEngine.js | 15 +- modules_data/_zv.php | 11 +- show_reg_img/security.php | 55 -- show_reg_img/security2.php | 48 -- show_reg_img/security3.php | 48 -- support/captcha.class.php | 36 -- support/captcha.php | 11 - support/images/0.gif | Bin 1100 -> 0 bytes support/images/1.gif | Bin 621 -> 0 bytes support/images/2.gif | Bin 1115 -> 0 bytes support/images/3.gif | Bin 1101 -> 0 bytes support/images/4.gif | Bin 1068 -> 0 bytes support/images/5.gif | Bin 1116 -> 0 bytes support/images/6.gif | Bin 1139 -> 0 bytes support/images/7.gif | Bin 1058 -> 0 bytes support/images/8.gif | Bin 1134 -> 0 bytes support/images/9.gif | Bin 1132 -> 0 bytes support/images/bgbtn.jpg | Bin 330 -> 0 bytes support/images/bginput.jpg | Bin 318 -> 0 bytes support/index.php | 510 +++++++++--------- 35 files changed, 374 insertions(+), 484 deletions(-) create mode 100644 _incl_data/class/Captcha/Captcha.php rename {fonts => _incl_data/class/Captcha/fonts}/BK2.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Bradley Hand ITC.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/CHILLER.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Edgar_da_cool_Regular.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/FRSCRIPT.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Fh_Script_Regular.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Gabo4_Gabo4.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/GothicRus.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Hurryup_Hurryup.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/JAMI_Regular.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/Justy1_Regular.ttf (100%) rename {fonts => _incl_data/class/Captcha/fonts}/de_Manu_2_Regular.ttf (100%) delete mode 100644 show_reg_img/security.php delete mode 100644 show_reg_img/security2.php delete mode 100644 show_reg_img/security3.php delete mode 100644 support/captcha.class.php delete mode 100644 support/captcha.php delete mode 100644 support/images/0.gif delete mode 100644 support/images/1.gif delete mode 100644 support/images/2.gif delete mode 100644 support/images/3.gif delete mode 100644 support/images/4.gif delete mode 100644 support/images/5.gif delete mode 100644 support/images/6.gif delete mode 100644 support/images/7.gif delete mode 100644 support/images/8.gif delete mode 100644 support/images/9.gif delete mode 100644 support/images/bgbtn.jpg delete mode 100644 support/images/bginput.jpg diff --git a/_incl_data/class/Captcha/Captcha.php b/_incl_data/class/Captcha/Captcha.php new file mode 100644 index 00000000..eba19552 --- /dev/null +++ b/_incl_data/class/Captcha/Captcha.php @@ -0,0 +1,81 @@ +width = max($width, 1); + return $this; + } + + public function height(int $height): Captcha + { + $this->height = max($height, 1); + return $this; + } + + public function newImage() + { + if ($this->width < 1 || $this->height < 1) { + return; + } + + $img = imagecreatetruecolor($this->width, $this->height) or die('Cannot create image'); // создаем картинку + imagefill($img, 0, 0, 0x616161); // заполняем фон картинки + $x = -20; + $i = 1; + $sum = ""; + $colorRGB = rand(180, 200); //цвет текста + while ($i++ <= 5000) { + imageSetPixel($img, rand(0, 105), rand(0, 24), 0x515151); + } + + //рисуем 2 линии + imageLine($img, rand(0, 10), rand(0, 50), rand(95, 105), rand(0, 26), 0x909090); + imageLine($img, rand(0, 10), rand(0, 50), rand(95, 105), rand(0, 26), 0x909090); + //рамка + imageRectangle($img, 0, 0, 105, 24, 0x343434); + + $fonts = [ + 'fonts/FRSCRIPT.ttf', + 'fonts/CHILLER.ttf', + 'fonts/Bradley Hand ITC.ttf', + 'fonts/de_Manu_2_Regular.ttf', + 'fonts/Edgar_da_cool_Regular.ttf', + 'fonts/Hurryup_Hurryup.ttf', + 'fonts/Fh_Script_Regular.ttf', + 'fonts/Gabo4_Gabo4.ttf', + 'fonts/JAMI_Regular.ttf', + 'fonts/Justy1_Regular.ttf', + ]; + $font = '../' . $fonts[rand(0, sizeof($fonts) - 1)]; + + $i = 1; + while ($i++ <= 4) { // выводим одну цифру за один проход цикла + imagettftext($img, 15, 0, $x = $x + 25, 20, imagecolorallocate($img, $colorRGB, $colorRGB, $colorRGB), $font, $rnd = mt_rand(0, 9)); // выводим текст поверх картинки + $sum = $sum . $rnd; // Собираем в одну строку все символы на картинке + } + + ob_start(); + imagepng($img); // выводим готовую картинку в формате PNG + $imgData = ob_get_clean(); + imagedestroy($img); // освобождаем память, выделенную для картинки + + echo 'captcha'; + $this->sum = $sum; + } + + /** + * @return string + */ + public function getSum(): string + { + return $this->sum; + } +} \ No newline at end of file diff --git a/fonts/BK2.ttf b/_incl_data/class/Captcha/fonts/BK2.ttf similarity index 100% rename from fonts/BK2.ttf rename to _incl_data/class/Captcha/fonts/BK2.ttf diff --git a/fonts/Bradley Hand ITC.ttf b/_incl_data/class/Captcha/fonts/Bradley Hand ITC.ttf similarity index 100% rename from fonts/Bradley Hand ITC.ttf rename to _incl_data/class/Captcha/fonts/Bradley Hand ITC.ttf diff --git a/fonts/CHILLER.ttf b/_incl_data/class/Captcha/fonts/CHILLER.ttf similarity index 100% rename from fonts/CHILLER.ttf rename to _incl_data/class/Captcha/fonts/CHILLER.ttf diff --git a/fonts/Edgar_da_cool_Regular.ttf b/_incl_data/class/Captcha/fonts/Edgar_da_cool_Regular.ttf similarity index 100% rename from fonts/Edgar_da_cool_Regular.ttf rename to _incl_data/class/Captcha/fonts/Edgar_da_cool_Regular.ttf diff --git a/fonts/FRSCRIPT.ttf b/_incl_data/class/Captcha/fonts/FRSCRIPT.ttf similarity index 100% rename from fonts/FRSCRIPT.ttf rename to _incl_data/class/Captcha/fonts/FRSCRIPT.ttf diff --git a/fonts/Fh_Script_Regular.ttf b/_incl_data/class/Captcha/fonts/Fh_Script_Regular.ttf similarity index 100% rename from fonts/Fh_Script_Regular.ttf rename to _incl_data/class/Captcha/fonts/Fh_Script_Regular.ttf diff --git a/fonts/Gabo4_Gabo4.ttf b/_incl_data/class/Captcha/fonts/Gabo4_Gabo4.ttf similarity index 100% rename from fonts/Gabo4_Gabo4.ttf rename to _incl_data/class/Captcha/fonts/Gabo4_Gabo4.ttf diff --git a/fonts/GothicRus.ttf b/_incl_data/class/Captcha/fonts/GothicRus.ttf similarity index 100% rename from fonts/GothicRus.ttf rename to _incl_data/class/Captcha/fonts/GothicRus.ttf diff --git a/fonts/Hurryup_Hurryup.ttf b/_incl_data/class/Captcha/fonts/Hurryup_Hurryup.ttf similarity index 100% rename from fonts/Hurryup_Hurryup.ttf rename to _incl_data/class/Captcha/fonts/Hurryup_Hurryup.ttf diff --git a/fonts/JAMI_Regular.ttf b/_incl_data/class/Captcha/fonts/JAMI_Regular.ttf similarity index 100% rename from fonts/JAMI_Regular.ttf rename to _incl_data/class/Captcha/fonts/JAMI_Regular.ttf diff --git a/fonts/Justy1_Regular.ttf b/_incl_data/class/Captcha/fonts/Justy1_Regular.ttf similarity index 100% rename from fonts/Justy1_Regular.ttf rename to _incl_data/class/Captcha/fonts/Justy1_Regular.ttf diff --git a/fonts/de_Manu_2_Regular.ttf b/_incl_data/class/Captcha/fonts/de_Manu_2_Regular.ttf similarity index 100% rename from fonts/de_Manu_2_Regular.ttf rename to _incl_data/class/Captcha/fonts/de_Manu_2_Regular.ttf diff --git a/_incl_data/class/FightRequest.php b/_incl_data/class/FightRequest.php index 2a8f06da..9eea8be1 100644 --- a/_incl_data/class/FightRequest.php +++ b/_incl_data/class/FightRequest.php @@ -1197,14 +1197,17 @@ class FightRequest HTML; if ($r === self::BATTLE_RAZDEL_CHAOTIC) { - if (!$this->u->info['no_zv_key']): ?> + if (!$this->u->info['no_zv_key']): + $security = new Captcha\Captcha(); + ?>
-

- +
+ width(70)->height(20)->newImage(); + $_SESSION['code'] = $security->getSum(); ?> Код подтверждения:
- + width(70)->height(20)->newImage(); + $_SESSION['code'] = $security->getSum(); ?> Код подтверждения:
diff --git a/buttons.php b/buttons.php index 5c488dcf..ab977d8e 100644 --- a/buttons.php +++ b/buttons.php @@ -2,6 +2,7 @@ /* Главный игровой файл. */ +use Captcha\Captcha; use Core\Config; use Core\Database; use Core\Db; @@ -26,33 +27,42 @@ function er($e) exit($err); } +function gameexit() +{ + setcookie('login', '', 0, '', Config::get('host')); + setcookie('login', '', 0); + setcookie('auth', '', 0); + Db::sql('update users set online = unix_timestamp() - 420 where id = ?', [$u->info['id']]); + exit(Config::get('exit')); +} + Database::init(); define('IP', UserIp::get()); $u = User::start(); + +if (empty($u->info)) { + exit(Config::get('exit')); +} + $filter = new Filter(); $chat = new Chat(); - $userclan = new Clan($u->info); ini_set('max_execution_time', '120'); if (isset($_GET['showcode'])) { - include_once 'show_reg_img/security.php'; - die(); + $security = new Captcha(); + $security->width(107)->height(26)->newImage(); + $_SESSION['code'] = $security->getSum(); + exit(); } if (isset($u->info['joinIP']) && $u->info['joinIP'] == 1 && $u->info['ip'] != IP) { er('#Пожалуйста авторизируйтесь с главной страницы'); } elseif (isset($_GET['exit'])) { - setcookie('login', '', 0, '', Config::get('host')); - setcookie('login', '', 0); - setcookie('auth', '', 0); - Db::sql('update users set online = unix_timestamp() - 420 where id = ?', [$u->info['id']]); - die(Config::get('exit')); -} elseif (!isset($u->info['id'])) { - er('Возникла проблема с определением id персонажа
Авторизируйтесь с главной страницы.'); + gameexit(); } if ($u->info['online'] < time() - 60) { diff --git a/js/gameEngine.js b/js/gameEngine.js index abaca8ef..1b81e5f4 100644 --- a/js/gameEngine.js +++ b/js/gameEngine.js @@ -1,4 +1,4 @@ -const sml = new Array("p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15, 15, "p005", 20, 20, "p006", 31, 28, "p007", 15, 15, +const sml = ["p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15, 15, "p005", 20, 20, "p006", 31, 28, "p007", 15, 15, "p008", 21, 22, "p009", 28, 24, "p010", 28, 21, "p011", 62, 28, "p012", 15, 21, "p013", 15, 19, "p014", 15, 15, "p015", 16, 16, "p016", 15, 15, "p017", 21, 15, "p018", 15, 21, "p019", 42, 23, "p020", 26, 25, "p021", 25, 27, "p022", 26, 26, "p023", 26, 27, "p024", 27, 22, "p025", 26, 28, "p026", 15, 15, "p027", 19, 17, "p028", 15, 18, "p029", 15, 15, "p030", 49, 18, "p031", 37, 15, @@ -17,7 +17,7 @@ const sml = new Array("p001", 18, 18, "p002", 15, 15, "p003", 22, 15, "p004", 15 "p102", 31, 36, "p103", 30, 35, "p104", 32, 32, "p105", 45, 45, "p106", 50, 35, "p107", 45, 41, "p108", 31, 27, "p109", 44, 30, "p110", 29, 20, "p111", 29, 27, "p112", 29, 20, "p113", 29, 20, "p114", 51, 24, "p115", 43, 35, "p116", 45, 23, "p117", 36, 24, "p118", 51, 35, "p119", 41, 31, "p120", 29, 29, - "p121", 32, 26, "p122", 40, 25, "p123", 37, 22, "p124", 40, 36, "p125", 38, 33, "p126", 23, 23, "p127", 33, 24, "p128", 30, 20); + "p121", 32, 26, "p122", 40, 25, "p123", 37, 22, "p124", 40, 36, "p125", 38, 33, "p126", 23, 23, "p127", 33, 24, "p128", 30, 20]; let cb_id = 1, cb_date = {}, @@ -105,17 +105,6 @@ function anrenameGo(id, val) { getUrl('main', `main.php?newanimal&rename=${id}&vvv=${val}`); } - -//Каптча на действия -// 5 -function captcha(title, act) { - win.add('captcha', `${title}  `, '
Укажите код с картинки:
', { - 'a1': `captchatext1($(\'#captchatext1\').val(),\'${act}\')`, - 'usewin': '$(\'#captchatext1\').focus()', - 'd': '' - }, 3, 1, 'min-width:230px;'); -} - // 6 function captchatext1(val, act) { getUrl('main', `${act}&cptch1=${val}`); diff --git a/modules_data/_zv.php b/modules_data/_zv.php index 3b9199e8..312f9fd4 100644 --- a/modules_data/_zv.php +++ b/modules_data/_zv.php @@ -463,13 +463,16 @@ if ($zv->error) {

Бой без правил (проигравшая сторона получает инвалидность)
+ style="color: #777; ">(проигравшая сторона получает инвалидность)
Закрытый поединок (бой будет изолирован от нападений)
Запрет на использование свитков восстановления НР и Маны
- info['no_zv_key']): ?> - - Код подтверждения: ' + info['no_zv_key']): + $security = new Captcha\Captcha(); + $security->width(70)->height(20)->newImage(); + $_SESSION['code'] = $security->getSum(); + ?> + Код подтверждения:
diff --git a/show_reg_img/security.php b/show_reg_img/security.php deleted file mode 100644 index c10206f0..00000000 --- a/show_reg_img/security.php +++ /dev/null @@ -1,55 +0,0 @@ - \ No newline at end of file diff --git a/show_reg_img/security3.php b/show_reg_img/security3.php deleted file mode 100644 index 93ac5256..00000000 --- a/show_reg_img/security3.php +++ /dev/null @@ -1,48 +0,0 @@ - \ No newline at end of file diff --git a/support/captcha.class.php b/support/captcha.class.php deleted file mode 100644 index ff930adf..00000000 --- a/support/captcha.class.php +++ /dev/null @@ -1,36 +0,0 @@ -keystring=array(); - - for($i=0;$i < $this->length;$i++){ - $this->keystring[] .= mt_rand(0,9); - } - - } - - - public function draw(){ - $img = ''; - foreach($this->keystring as $keystring){ - $img .= ''; - } - - return $img; - } - - - public function getKeyString(){ - return implode($this->keystring); - } - -} - -?> \ No newline at end of file diff --git a/support/captcha.php b/support/captcha.php deleted file mode 100644 index 3669101d..00000000 --- a/support/captcha.php +++ /dev/null @@ -1,11 +0,0 @@ -getKeyString(); - -echo $captcha->draw(); - -?> \ No newline at end of file diff --git a/support/images/0.gif b/support/images/0.gif deleted file mode 100644 index db1488b6a987ac1b1b0431f0d7429f2aa2f9dfa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmZ?wbhEHb6l4%%_|Cw<#>U3V%F4yX#m>&o$;l}yD$2pZAt1od%)(+~V<{ma!NkPG z&CSir%Ofo(tD>T;pdcR*5@cj*qN$^unVWt3&b5-7N<(wgu-HgLGZOa6L?x*9Aj%Y6@z-L7qK{{FCXv{lwnQ&U$H7Z>N@4w95Z@qb* zk)M;1ofVs&!p_NY@5SRq>sOt-eceAeKtNECo0rEsJV-@L-OR##`MNct5@O2AN*TG? zaw>{^e0dX7Ou2yyq4sj_-M<+*98_R;qvY3Q; zPA*PocUNs)?HMZ@BOFEogijm{1>TG-b;f;)(EH@92UvPkDpx?s} zuOGd5qNJj%t*5j1{7DvI956F8jCi2KxLW)S>jD;oxBwpBoGX7Ryde4q=kAae1V4$k{7^>p{$~56z;gTrwFCE;KuM zHp(s22s-fM#7g7ICX0j^5_{+QsRxuUP-YBeVBigA6;N2zFE7Nf#A1a=qB~==l>Sab z*95@{B1LP5QVeJKW%(IdJVM!A8d>?wO*C07uQo8R zaJmw(`KF7YLxh}N1mj{RL1uo(trb%krmBQQR`76rN!xtDcX8VvP05GOZWCmJyty83 mX>FaTzmVsu<=n0VO=bm`mh5`OYV|k7kW-~0kcpLr!5RSTF(g0$ diff --git a/support/images/1.gif b/support/images/1.gif deleted file mode 100644 index 3064269ece134dbab9edad40a10a1c48ee310c87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmZ?wbhEHb6l4%%c*elM#>U3U$;l_cFCf6r!NDOSBErMN!_CbtDk>^2DZ#y~ZaAR#Gv^vsFG!mR$;)7Br^yJGjY=kH%X zefNq_P~g^+`>(#d_l^iIs4TmF|F(;}ThENiy)&l@3JBbN`LwF1RYF>-eOkY*t&N(l z7B3%PY;t0AcRMpPb6i|3FE6i8pr5R~TyjdXskMcytgNWGn1;6IqRnf~&CQFe%F}bR zifbxX?%aI&@x5KAkLFjEboKUn`g#iq38|>5s;j95g@>}Uvp;(OT1Zfki<`^F*R_K638f&5gTvh=_`s z+ge2>#<}`YvN#BT^Krl8q23r zTQgs-_f7Lp1l)M^Kz<>c(VQQ~99{?brM~@RblBMB%hc9n;Go%fAlSv->RLucaDwBm l@&uPT2}TDL8kmBk4kR2fIMBe7*>fi$Bj2IXt&xGj8UVTA&29hy diff --git a/support/images/2.gif b/support/images/2.gif deleted file mode 100644 index 62b6f531bb0a23c086fa28c327d2e40b4b6af059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmZ?wbhEHb6l4%%_|Cw<%*@Qg!^6(bE+HYo&CM++Ai&AV$Fwp=<;lUx;o$6K zU}WGQ7UbgY#wQ@qGj(!lU6qT!_oTVA4xK(0la(x`AS*2+lU-79?%|!4o7SDYdVcnj z1$Ul34hji&@^riN_`akR2x#hRC+21ZM2F2=w?a)*!`<8S?2RiCNpXTgg2yhN44VZA}wfOI1~sgQt&8nm5zP*eJie z#L>|)HY3?LJm|`UJAo0Qs+#H=`Z}hT<}N`#OV_RlkB>38v(70g%+ASJc9$%g&AXRlZ~d+EZemU?+b zg}ZNGxOupjKnfw9;P@Jjy3J?tIUJ_Sx{W36$kJoy1Z1bZtLRAR@@;5k@%lK?gf&3Osx<6KhwFlejf`$Ks!a_` z#n`xYI&?B57$%EYxZB;_bX35dTb<9O%SeQyQ>cCNniUl)2Hsk>t{you9STP#F*0#) zc=hNxZ$q0x)&!@I*V39c?g(?0`f_mL0S2x@Lj{vZ>@!UG@-@>sw9hXLuTZ!ut8t*g zfh*f5q)_qL`U8xN5-~3}sASqui+PH#v?Piv7M1Giou|pjk)2IlgzZrZ(%t*?o2wsxC59#tN}J{OKboD diff --git a/support/images/3.gif b/support/images/3.gif deleted file mode 100644 index 73f182bb210fabbb4944c6468236122b0827c642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1101 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 diff --git a/support/images/6.gif b/support/images/6.gif deleted file mode 100644 index b1552e776ef5073c70621c6d4e66ff53aa56d689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmZ?wbhEHb6l4%%_|Cw<#>U3U$;rjV#mC1dEG*2;%`GY_%FD}ZZfljEpOc=O#mU9V z%E}rZ7cC?rEG8zVt*w3Z!WkZ3Uhj}VDJdx~ZZ0)7HEDS{acL%8KK`Kau)}9goVjsz@1gy2a&E1RN2_sSlL*mFZ9BNPt-pKg(f#ULns#2Uxy{vL z65=yfEZ%eOWM*OB{>x{yw6vD2S!rc&yL8Li?nx7Lbai%~IjU=FG-<}PExUIfK6BE- z)>=VX$-~>TVRBD&cCuGwkeZf;l$?xzWC#xr4+jSaJ3BkW-~)<3S-_6c0g<3Q!NBpK zVJ@dk#KY!g?5u2BF+0|TP8AfmWg>lG&CEl}#}f<#MV<(W+8@m^2%eGFwZYaQ;zdS6 zd(h;GT-_&L3HIF7;DsZzenlr{CY09EL zZI@MRe4-Qt4$m>F_v!6wIPB8H(`a#W!&0XO9J*p+Pj?-RNMMkd_(P$fEZt)f+qoHE zl?(zJ+9cf^EOtN278dJf=F!NRs4mRRXnDoMYuho&z;34Yg+DI2_ituM%YxNen&qwSo9^Tox*RaI4U^7AU{ zt6e?aRMb>Cxj3CY+=NAh=dE7m?&GDVr+xD7^_=4T(uV3A_iv}Bw03s9{q`|5 zB4W?cgU8ODiYv%8wXyVz3RP5AHny>ll#~n%3M{B7b#QjdFE19A5PSCJeQZ`ra#s4u zD;JH-O*ik`p`@zv;MLR9*Dv3C{#aR6Wyz+s*B;*W4i4}S4T_16^9~CX6&Di~6O)sZ z7PAAOatn~I{hqj+OeEsQz`UzbkA|kHtZmV{0 zP0miYbg)&|((n%tK6~SG_r!id5n=zRP%V93J^}u#PwtC~iZ=Ck-hcL(ot>SHjg6I+ zm0=W6BLozGvVe`z0g<3Q!NBpKL6vuf0P86xb8D5WJD5*;DA`U@GMb_EqHBU2i^^FG z;g^ldu6z;=nje)~`z-U{_*iU87ntr|Ai|^2aQuRROr=i%r{D_z7CzmCjt&!tW>GQe zSyw!TPaYC-GO@VB!Jx26h09FAbCuM|?inhR=2>iz+SqulBjUu0oeB;P%^oSr2d9=O zcrWBpS*13^J1l64L~@A4id);at$Gz0SZNlJkd=IO$A{^Olt9`JXW5y;A3J{zh+@5>&c)ZX?I4!Kvqz2 ezLK)a4!t{Utcyh%E4 z=HXtsVV$vssi2UMsHAv&da|3hhl`hoyqeOZ*DvA{6Lbvp99*3If&&eWjp|#P{KJB^ z4E3~)^>Zsr&fK~ZnG_eD6hD96%84uHE!w&+A~Pv7KRctmKwV37$?6p{GBPKxpP8|G zX;M~tLUtNE2YXUxT2gB2=U-o&yE}XW{a<~3FD5Br=j5>G%n4x;krOvBZP>qk;pSyp zy4vgZZeO->?bKN_T07f6|NXjp$CjB3=FC~S?9qoetJbfwva>mN`})zV7mQ7fXD(l4 zXl_#3)9UE!AtoXI_|=o@j^^9X9ww$G$D}1nN=k}LOKv%`S6NGa$AR6-8fr7vEQ?P| za&mEQXl*vNvyMuMSJTlH5)v}8v$C?WF)}uqzkXF+Ym-lKz^YyAM8rgmZ7g^0-+SS~ zRU;#VkhsX=`l`&*0!wSF#KNq-r;nxQX6IFvHg>n2xqWTw{F%<~t}gywUVc83veJ1q zp6GpYH(DTgoH$Peokmy6ekA<4==BQxrwE%ji8{QkH24eeRXSZ zr>2qa!AocSLxPrUSq&~&Hcz%s@z_Y5%;-o#{XPC=JV6+x5P zIm5*5!ZH;K)CJ~7PBRdZ4%l{ny2=704ju&tCmFZmii$S^omY7}n7LaP1*LT!U^%oS z=BB}f8BOe4|M@5y6ik<6=VI5;aXT<^g&s>hr}wSIXN(6;mu%Q#6qVyD92<5^py|me zrx`JOf;dA=XyU=0B2SZg)_ diff --git a/support/images/9.gif b/support/images/9.gif deleted file mode 100644 index 552c271971a71d7b9e926cf149b11f420fbf4823..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmZ?wbhEHb6l4%%_|Cw<&d$!p#>U0P#mULZ!NC!qn#9Y;D=aK5At50wDk3j0CoL__ z&(F`p!y_s##?8a6Z=f$GDWRaIqNAtl>F=|0-!^#_B>@3`4o;4Xx2_3`iOMS~$|@;% z`uPMzh6Y50=ouNvsVPOoM_W4CSvc5oadX)?*sj>NNnKq{*TnF|wTlu`QU@-cNy^En zYip|RZ5I?3-nxG`Cl}|s-8(!3d~dyanw_21*40tp-w_xY&d$LuAR@#kDB$hyTUc9B zQd{Zn<5}5McmL@_8Ce-~Ym0?T7Nu90nA=+IJ$fXivhd!EN2_*i+j(H$feWX)C-<9L znD@+?y7%xwM+b)$Th=YxxF)B#;MBbv3E64R-X3`+1$$2%mXMU3vwDfAx2Lwgo|uIA z%+*Wz1^6c}m?b75;S}I?_t^s;US1J#F@Ao&d#|5sX=!rv@|c*IRM*w`2L~#utLp0M zO`0>^&cS}|;oV|lVsUB74xX;zQ4u#D-#4|lscCDHcEmlyF-+B5d8#}wAigI#pX7BtNljqM`xPFzOfWXa1 zcZ*x=DjI53HPqwMlMRfGZa#aUtftaGeTtxBhLb)w95iGR1_Q{H>K>BVGK$-*f>q{NR9~Oq*aYZ zY~6Qas=j9TY>Mh^JE3*hb;c$JTe*!2Ejg!|QW@-6vqWAUcF^CjVo5_6TLZ)Fc~%)p zPdA*_O+CRPz+f<;VY1XZ6OGp`t3ni6#eLPRR~;8$%5tjX!66l;^+vL+O)4D1Cm9_% z^z!b^T#&=CDMr+2Yn9N_z8*%#u#=8kH2K#G%Pr73`04QZIRea%CL2vSMP{f7-P34h zemP_2wmJXi>{9AD;}{p3kRZ~Lc+`RIXozIw<`@Uh$;>4)XMJr*G-76&aM4q80#8Jv zvWk+)ody>ldDAX0gTRgL?8m$+c%B+eQ}mt_sQ;$nqU7Em2~IptJ_osYWptMJXvAv> Y@W|`3JXqkspkl(rCnBL1;J{!F0P+21#sB~S diff --git a/support/images/bgbtn.jpg b/support/images/bgbtn.jpg deleted file mode 100644 index e95c2c180715e34c28ac9f28bc6f0e3c60f70043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmex=uI=H%w(=K}(Mey}1a#RK7?>VxzCA7BvVV322EWM&j(U=n0x7G(T?gdvQ9krC)d zB*4nah%UsyC;-&P!i=PffpH?!MWG;J=3o&)Gy{MEaEpP5nGt9Svmk>#!_K&MekZN2 TG}J!e-?QNK(yk5i|8D{SR8uOx diff --git a/support/images/bginput.jpg b/support/images/bginput.jpg deleted file mode 100644 index 8e710983feca572a2b0bc63a682fa7361d7b700b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmZXOOAY}+5QhKi>h4iv7#%kt&LI+!kVshDF;*5<7WPhMH4BFrEI5F;LTitR$5%-` z{`^%bU-&a>gI>P}Qa~00{sPxs%@%7AG=Nc%uBdjh<#diL4+{AsHc)RkbgV;WZS);u z%>!$rs1!w3B#uRrZ-|+VHe#(*%2KYR)j*m)Os|qWr|-S@bw@hD?h3mi_()P>drk diff --git a/support/index.php b/support/index.php index a4143fe3..8d4a519e 100644 --- a/support/index.php +++ b/support/index.php @@ -1,302 +1,304 @@ -set_error_delimiters('

', '
'); +$security = new Captcha(); + //Задаем правила валидации -$rules = array( - array( - 'field' => 'user_name', - 'label' => 'Ваше ник в игре', - 'rules' => array( - 'trim' => '', //Обрезаем пробелы по бокам - 'strip_tags' => '', // Удаляем HTML и PHP теги - 'required' => 'Поле %s обязательно для заполнения' - ) - ), - array( - 'field' => 'user_email', - 'label' => 'Ваш e-mail адрес связанный с ником', - 'rules' => array( - 'trim' => '', - 'required' => 'Поле %s обязательно для заполнения', - 'valid_email' => 'Поле %s должно содержать правильный email-адрес' - ) - ), - array( - 'field' => 'user_url', - 'label' => 'URL info персонажа', - 'rules' => array( - 'trim' => '', - 'valid_url' => 'Поле %s должно содержать правильный URL адрес' - ) - ), - array( - 'field' => 'subject', - 'label' => 'Тема обращения', - 'rules' => array( - 'trim' => '', //Обрезаем пробелы по бокам - 'strip_tags' => '', // Удаляем HTML и PHP теги - 'required' => 'Поле %s обязательно для заполнения' - ) - ), - array( - 'field' => 'text', - 'label' => 'Суть проблемы/обращения', - 'rules' => array( - 'trim' => '', //Обрезаем пробелы по бокам - 'strip_tags' => '', // Удаляем HTML и PHP теги - 'required' => 'Поле %s обязательно для заполнения' - ) - ), - array( - 'field' => 'keystring', - 'label' => 'Капча', - 'rules' => array( - 'trim' => '', //Обрезаем пробелы по бокам - 'required' => 'Вы не ввели цифры изображенные на картинке', - 'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки' - ) - ) -); +$rules = [ + [ + 'field' => 'user_name', + 'label' => 'Ваше ник в игре', + 'rules' => [ + 'trim' => '', //Обрезаем пробелы по бокам + 'strip_tags' => '', // Удаляем HTML и PHP теги + 'required' => 'Поле %s обязательно для заполнения', + ], + ], + [ + 'field' => 'user_email', + 'label' => 'Ваш e-mail адрес связанный с ником', + 'rules' => [ + 'trim' => '', + 'required' => 'Поле %s обязательно для заполнения', + 'valid_email' => 'Поле %s должно содержать правильный email-адрес', + ], + ], + [ + 'field' => 'user_url', + 'label' => 'URL info персонажа', + 'rules' => [ + 'trim' => '', + 'valid_url' => 'Поле %s должно содержать правильный URL адрес', + ], + ], + [ + 'field' => 'subject', + 'label' => 'Тема обращения', + 'rules' => [ + 'trim' => '', //Обрезаем пробелы по бокам + 'strip_tags' => '', // Удаляем HTML и PHP теги + 'required' => 'Поле %s обязательно для заполнения', + ], + ], + [ + 'field' => 'text', + 'label' => 'Суть проблемы/обращения', + 'rules' => [ + 'trim' => '', //Обрезаем пробелы по бокам + 'strip_tags' => '', // Удаляем HTML и PHP теги + 'required' => 'Поле %s обязательно для заполнения', + ], + ], + [ + 'field' => 'keystring', + 'label' => 'Капча', + 'rules' => [ + 'trim' => '', //Обрезаем пробелы по бокам + 'required' => 'Вы не ввели цифры изображенные на картинке', + 'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки', + ], + ], +]; //Устанавливаем правила валидации $validator->set_rules($rules); $message = ''; //Запускаем валидацию POST данных -if($validator->run()){ - - //Здесь впишите свой e-mail адрес - //на негу будут приходить уведомления с формы - $to = 'support@new-combats.com'; - - $from = "=?UTF-8?b?" . base64_encode($validator->postdata('user_name')) . "?="; - $subject = "=?UTF-8?b?" . base64_encode( $validator->postdata('subject') ) . "?="; - - $mail_body = "Поступил новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n"; - - //Формируем текст сообщения - foreach($rules as $rule){ - if($rule['field'] == 'keystring') continue; - $mail_body .= $rule['label'].': '.$validator->postdata($rule['field'])."\r\n"; - } - - $header = "MIME-Version: 1.0\n"; - $header .= "Content-Type: text/plain; charset=UTF-8\n"; - $header .= "From: ". $from . " <" . $validator->postdata('user_email'). ">"; +if ($validator->run()) { + + //Здесь впишите свой e-mail адрес + //на негу будут приходить уведомления с формы + $to = 'support@new-combats.com'; + + $from = "=?UTF-8?b?" . base64_encode($validator->postdata('user_name')) . "?="; + $subject = "=?UTF-8?b?" . base64_encode($validator->postdata('subject')) . "?="; + + $mail_body = "Поступил новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n"; + + //Формируем текст сообщения + foreach ($rules as $rule) { + if ($rule['field'] == 'keystring') { + continue; + } + $mail_body .= $rule['label'] . ': ' . $validator->postdata($rule['field']) . "\r\n"; + } + + $header = "MIME-Version: 1.0\n"; + $header .= "Content-Type: text/plain; charset=UTF-8\n"; + $header .= "From: " . $from . " <" . $validator->postdata('user_email') . ">"; + + //Отправка сообщения + if (mail($to, $subject, $mail_body, $header)) { + + $message = '
Ваше сообщение успешно отправлено!
'; + + //Очищаем форму обратной связи + $validator->reset_postdata(); + } else { + $message = '
Ваше сообщение не отправлено!
'; + } +} else { - //Отправка сообщения - if(mail($to, $subject, $mail_body, $header)){ - - $message = '
Ваше сообщение успешно отправлено!
'; - - //Очищаем форму обратной связи - $validator->reset_postdata(); - } - else{ - - $message = '
Ваше сообщение не отправлено!
'; - } -} -else{ - //Получаем сообщения об ошибках в виде строки - $message = $validator->get_string_errors(); - + $message = $validator->get_string_errors(); + //Получаем сообщения об ошибках в виде массива - $errors = $validator->get_array_errors(); - + $errors = $validator->get_array_errors(); } - ?> - + - -Форма обратной связи с Администрацией проекта «Бойцовский клуб» + + Форма обратной связи с Администрацией проекта «Бойцовский клуб» + - + --> + -

Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.

- -
+
- '.$message.'
': ''?> -
-
> - - -
- -
> - - -
- -
> - - -
- -
> - - -
- -
- - -
- -
> - -
- -
+
+

Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.

+ + ' . $message . '
' : '' ?> + +
> + + +
+ +
> + + +
+ +
> + + +
+ +
> + + +
+ +
+ + +
+ +
> + +
+ width(100)->height(30)->newImage(); + $_SESSION['keystring'] = $security->getSum(); ?> +
+ +
+ +
+ + +
+ + +
-
- -
- - - -
-