Unified Captcha
81
_incl_data/class/Captcha/Captcha.php
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Captcha;
|
||||||
|
|
||||||
|
class Captcha
|
||||||
|
{
|
||||||
|
private int $width;
|
||||||
|
private int $height;
|
||||||
|
private string $sum;
|
||||||
|
|
||||||
|
public function width(int $width): Captcha
|
||||||
|
{
|
||||||
|
$this->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 '<img src="data:image/png;base64,' . base64_encode($imgData) . '" alt="captcha">';
|
||||||
|
$this->sum = $sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSum(): string
|
||||||
|
{
|
||||||
|
return $this->sum;
|
||||||
|
}
|
||||||
|
}
|
@ -1197,14 +1197,17 @@ class FightRequest
|
|||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
if ($r === self::BATTLE_RAZDEL_CHAOTIC) {
|
if ($r === self::BATTLE_RAZDEL_CHAOTIC) {
|
||||||
if (!$this->u->info['no_zv_key']): ?>
|
if (!$this->u->info['no_zv_key']):
|
||||||
|
$security = new Captcha\Captcha();
|
||||||
|
?>
|
||||||
<div style="float:left;">
|
<div style="float:left;">
|
||||||
<form method="post" style="margin:0px;padding:0px;"
|
<form method="post" style="margin:0px;padding:0px;" action="/main.php?zayvka=1&r=<?= $r ?>&rnd=<?= $code ?>"><br>
|
||||||
action="/main.php?zayvka=1&r=<?= $r ?>&rnd=<?= $code ?>"><br>
|
<?php $security->width(70)->height(20)->newImage();
|
||||||
<img src="/show_reg_img/security2.php?id='<?= time() ?>" width="70" height="20">
|
$_SESSION['code'] = $security->getSum(); ?>
|
||||||
Код подтверждения: <input style="width:40px;" type="text" name="code21">
|
Код подтверждения: <input style="width:40px;" type="text" name="code21">
|
||||||
<input class="btn" type="submit" value="Принять вызов"><br><?= $zvb ?>
|
<input class="btn" type="submit" value="Принять вызов"><br><?= $zvb ?>
|
||||||
<img src="/show_reg_img/security2.php?id=<?= time() ?>" width="70" height="20">
|
<?php $security->width(70)->height(20)->newImage();
|
||||||
|
$_SESSION['code'] = $security->getSum(); ?>
|
||||||
Код подтверждения: <input style="width:40px;" type="text" name="code22">
|
Код подтверждения: <input style="width:40px;" type="text" name="code22">
|
||||||
<input class="btn" style="margin-top:1px;" type="submit" value="Принять вызов">
|
<input class="btn" style="margin-top:1px;" type="submit" value="Принять вызов">
|
||||||
</form>
|
</form>
|
||||||
|
30
buttons.php
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
/* Главный игровой файл. */
|
/* Главный игровой файл. */
|
||||||
|
|
||||||
|
use Captcha\Captcha;
|
||||||
use Core\Config;
|
use Core\Config;
|
||||||
use Core\Database;
|
use Core\Database;
|
||||||
use Core\Db;
|
use Core\Db;
|
||||||
@ -26,33 +27,42 @@ function er($e)
|
|||||||
exit($err);
|
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();
|
Database::init();
|
||||||
|
|
||||||
define('IP', UserIp::get());
|
define('IP', UserIp::get());
|
||||||
$u = User::start();
|
$u = User::start();
|
||||||
|
|
||||||
|
if (empty($u->info)) {
|
||||||
|
exit(Config::get('exit'));
|
||||||
|
}
|
||||||
|
|
||||||
$filter = new Filter();
|
$filter = new Filter();
|
||||||
$chat = new Chat();
|
$chat = new Chat();
|
||||||
|
|
||||||
$userclan = new Clan($u->info);
|
$userclan = new Clan($u->info);
|
||||||
|
|
||||||
|
|
||||||
ini_set('max_execution_time', '120');
|
ini_set('max_execution_time', '120');
|
||||||
|
|
||||||
if (isset($_GET['showcode'])) {
|
if (isset($_GET['showcode'])) {
|
||||||
include_once 'show_reg_img/security.php';
|
$security = new Captcha();
|
||||||
die();
|
$security->width(107)->height(26)->newImage();
|
||||||
|
$_SESSION['code'] = $security->getSum();
|
||||||
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($u->info['joinIP']) && $u->info['joinIP'] == 1 && $u->info['ip'] != IP) {
|
if (isset($u->info['joinIP']) && $u->info['joinIP'] == 1 && $u->info['ip'] != IP) {
|
||||||
er('#Пожалуйста авторизируйтесь с главной страницы');
|
er('#Пожалуйста авторизируйтесь с главной страницы');
|
||||||
} elseif (isset($_GET['exit'])) {
|
} elseif (isset($_GET['exit'])) {
|
||||||
setcookie('login', '', 0, '', Config::get('host'));
|
gameexit();
|
||||||
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 персонажа<br>Авторизируйтесь с главной страницы.');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u->info['online'] < time() - 60) {
|
if ($u->info['online'] < time() - 60) {
|
||||||
|
@ -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,
|
"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,
|
"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,
|
"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,
|
"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,
|
"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,
|
"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,
|
let cb_id = 1,
|
||||||
cb_date = {},
|
cb_date = {},
|
||||||
@ -105,17 +105,6 @@ function anrenameGo(id, val) {
|
|||||||
getUrl('main', `main.php?newanimal&rename=${id}&vvv=${val}`);
|
getUrl('main', `main.php?newanimal&rename=${id}&vvv=${val}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Каптча на действия
|
|
||||||
// 5
|
|
||||||
function captcha(title, act) {
|
|
||||||
win.add('captcha', `${title} `, '<center><small>Укажите код с картинки:</small><center><img style="margin-bottom:6px;display:inblock-line;" src="/show_reg_img/security3.php" width="70" height="20"><input style="width:80px; height:18px; margin:5px;" id="captchatext1" class="inpt2" type="text" value=""></center></center>', {
|
|
||||||
'a1': `captchatext1($(\'#captchatext1\').val(),\'${act}\')`,
|
|
||||||
'usewin': '$(\'#captchatext1\').focus()',
|
|
||||||
'd': ''
|
|
||||||
}, 3, 1, 'min-width:230px;');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 6
|
// 6
|
||||||
function captchatext1(val, act) {
|
function captchatext1(val, act) {
|
||||||
getUrl('main', `${act}&cptch1=${val}`);
|
getUrl('main', `${act}&cptch1=${val}`);
|
||||||
|
@ -467,9 +467,12 @@ if ($zv->error) {
|
|||||||
<INPUT type="checkbox" name="noatack"> Закрытый поединок <span style="color: #777; ">(бой будет изолирован от нападений)</span><BR>
|
<INPUT type="checkbox" name="noatack"> Закрытый поединок <span style="color: #777; ">(бой будет изолирован от нападений)</span><BR>
|
||||||
<INPUT type="checkbox" name="noeff">
|
<INPUT type="checkbox" name="noeff">
|
||||||
Запрет на использование свитков восстановления НР и Маны<BR>
|
Запрет на использование свитков восстановления НР и Маны<BR>
|
||||||
<?php if (!$u->info['no_zv_key']): ?>
|
<?php if (!$u->info['no_zv_key']):
|
||||||
<img src="/show_reg_img/security2.php?id=<?= time() ?>" width="70" height="20">
|
$security = new Captcha\Captcha();
|
||||||
Код подтверждения: <input style="width:40px;" type="text" name="code21">'
|
$security->width(70)->height(20)->newImage();
|
||||||
|
$_SESSION['code'] = $security->getSum();
|
||||||
|
?>
|
||||||
|
Код подтверждения: <input style="width:40px;" type="text" name="code21">
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<INPUT maxLength="40" size="40" name="cmt" placeholder="Комментарий к бою"><BR>
|
<INPUT maxLength="40" size="40" name="cmt" placeholder="Комментарий к бою"><BR>
|
||||||
<INPUT class="btn" value="Подать заявку" type="submit" name="open">
|
<INPUT class="btn" value="Подать заявку" type="submit" name="open">
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
header("Content-type: image/png");
|
|
||||||
// создаем картинку размером 172X52
|
|
||||||
$img = imagecreatetruecolor(107, 26) or die('Cannot create image');
|
|
||||||
$orange = imageColorAllocate($img, 107, 26, 64);
|
|
||||||
// заполняем фон картинки
|
|
||||||
imagefill($img, 0, 0, 0x616161);
|
|
||||||
$x = -20;
|
|
||||||
$i = 1;
|
|
||||||
$sum = "";
|
|
||||||
//цвет текста
|
|
||||||
$color_RGB = 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)];
|
|
||||||
|
|
||||||
// выводим одну цифру за один проход цикла (всего 6 цифр)
|
|
||||||
$i = 1;
|
|
||||||
while ($i++ <= 4) {
|
|
||||||
// выводим текст поверх картинки
|
|
||||||
imagettftext($img, 15, 0, $x = $x + 25, 20, imagecolorallocate($img, $color_RGB, $color_RGB, $color_RGB), $font, $rnd = mt_rand(0, 9));
|
|
||||||
// Собираем в одну строку все символы на картинке
|
|
||||||
$sum = $sum . $rnd;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Не забудьте $sum записать в таблицу как STR1
|
|
||||||
|
|
||||||
// выводим готовую картинку в формате PNG
|
|
||||||
imagepng($img);
|
|
||||||
// освобождаем память, выделенную для картинки
|
|
||||||
imagedestroy($img);
|
|
||||||
// Помещаем защитный код в сессию
|
|
||||||
$_SESSION['code'] = $sum;
|
|
@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
header("Content-type: image/png");
|
|
||||||
// создаем картинку размером 172X52
|
|
||||||
$img = imagecreatetruecolor(70, 20) or die('Cannot create image');
|
|
||||||
$orange = imageColorAllocate($img, 255, 128, 64);
|
|
||||||
// заполняем фон картинки
|
|
||||||
imagefill($img, 0, 0, 0x616161);
|
|
||||||
$x=0;
|
|
||||||
$i = 1;
|
|
||||||
$sum = "";
|
|
||||||
//цвет текста
|
|
||||||
$color_RGB = rand(180,200);
|
|
||||||
while ($i++ <=5000)
|
|
||||||
{
|
|
||||||
imageSetPixel($img, rand(0,170), rand(0,50),0x515151);
|
|
||||||
}
|
|
||||||
|
|
||||||
//рисуем 2 линии
|
|
||||||
imageLine($img, rand(0,10), rand(0,50), rand(110,170), rand(0,50), 0x909090);
|
|
||||||
imageLine($img, rand(0,10), rand(0,50), rand(110,170), rand(0,50), 0x909090);
|
|
||||||
|
|
||||||
//рамка
|
|
||||||
imageRectangle($img,0,0,170,50,0x343434);
|
|
||||||
|
|
||||||
$fonts = array ('fonts/CHILLER.ttf');
|
|
||||||
$font = '../'.$fonts[rand(0, sizeof($fonts)-1)];
|
|
||||||
|
|
||||||
// выводим одну цифру за один проход цикла (всего 6 цифр)
|
|
||||||
$i = 1;
|
|
||||||
while ($i++ <= 5)
|
|
||||||
{
|
|
||||||
// выводим текст поверх картинки
|
|
||||||
imagettftext($img, rand(18,18), 0, $x=$x+10, 16+rand(0,4),
|
|
||||||
imagecolorallocate($img, $color_RGB,$color_RGB,$color_RGB), $font, $rnd = rand(0,9));
|
|
||||||
// Собираем в одну строку все символы на картинке
|
|
||||||
$sum = $sum.(string)$rnd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Не забудьте $sum записать в таблицу как STR1
|
|
||||||
|
|
||||||
// выводим готовую картинку в формате PNG
|
|
||||||
imagepng($img);
|
|
||||||
// освобождаем память, выделенную для картинки
|
|
||||||
imagedestroy($img);
|
|
||||||
// Помещаем защитный код в сессию
|
|
||||||
$_SESSION['code'] = $sum;
|
|
||||||
?>
|
|
@ -1,48 +0,0 @@
|
|||||||
<?php
|
|
||||||
header("Content-type: image/png");
|
|
||||||
// создаем картинку размером 172X52
|
|
||||||
$img = imagecreatetruecolor(70, 20) or die('Cannot create image');
|
|
||||||
$orange = imageColorAllocate($img, 255, 128, 64);
|
|
||||||
// заполняем фон картинки
|
|
||||||
imagefill($img, 0, 0, 0x616161);
|
|
||||||
$x=0;
|
|
||||||
$i = 1;
|
|
||||||
$sum = "";
|
|
||||||
//цвет текста
|
|
||||||
$color_RGB = rand(180,200);
|
|
||||||
while ($i++ <=5000)
|
|
||||||
{
|
|
||||||
imageSetPixel($img, rand(0,170), rand(0,50),0x515151);
|
|
||||||
}
|
|
||||||
|
|
||||||
//рисуем 2 линии
|
|
||||||
imageLine($img, rand(0,10), rand(0,50), rand(110,170), rand(0,50), 0x909090);
|
|
||||||
imageLine($img, rand(0,10), rand(0,50), rand(110,170), rand(0,50), 0x909090);
|
|
||||||
|
|
||||||
//рамка
|
|
||||||
imageRectangle($img,0,0,170,50,0x343434);
|
|
||||||
|
|
||||||
$fonts = array ('fonts/CHILLER.ttf');
|
|
||||||
$font = '../'.$fonts[rand(0, sizeof($fonts)-1)];
|
|
||||||
|
|
||||||
// выводим одну цифру за один проход цикла (всего 6 цифр)
|
|
||||||
$i = 1;
|
|
||||||
while ($i++ <= 4)
|
|
||||||
{
|
|
||||||
// выводим текст поверх картинки
|
|
||||||
imagettftext($img, rand(18,18), 0, $x=$x+10, 16+rand(0,4),
|
|
||||||
imagecolorallocate($img, $color_RGB,$color_RGB,$color_RGB), $font, $rnd = rand(0,9));
|
|
||||||
// Собираем в одну строку все символы на картинке
|
|
||||||
$sum = $sum.(string)$rnd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Не забудьте $sum записать в таблицу как STR1
|
|
||||||
|
|
||||||
// выводим готовую картинку в формате PNG
|
|
||||||
imagepng($img);
|
|
||||||
// освобождаем память, выделенную для картинки
|
|
||||||
imagedestroy($img);
|
|
||||||
// Помещаем защитный код в сессию
|
|
||||||
$_SESSION['code3'] = $sum;
|
|
||||||
?>
|
|
@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
Class Captcha{
|
|
||||||
|
|
||||||
public $imgDir = 'images'; // директория где хранятся изображения
|
|
||||||
|
|
||||||
public $length = '5'; // количество цифр в капче
|
|
||||||
|
|
||||||
public function __construct(){
|
|
||||||
|
|
||||||
$this->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 .= '<img src="'.$this->imgDir.DIRECTORY_SEPARATOR.$keystring.'.gif" border="0">';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $img;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function getKeyString(){
|
|
||||||
return implode($this->keystring);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
require "captcha.class.php"; //Подключаем класс капчи
|
|
||||||
|
|
||||||
//Рнициализируем капчу
|
|
||||||
$captcha = new Captcha();
|
|
||||||
|
|
||||||
$_SESSION['keystring'] = $captcha->getKeyString();
|
|
||||||
|
|
||||||
echo $captcha->draw();
|
|
||||||
|
|
||||||
?>
|
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 621 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 330 B |
Before Width: | Height: | Size: 318 B |
@ -1,75 +1,73 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Captcha\Captcha;
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
//error_reporting(E_ALL);
|
|
||||||
//ini_set('display_errors', 'On');
|
|
||||||
error_reporting(E_ALL ^ E_NOTICE);
|
|
||||||
ini_set('display_errors', 'Off');
|
|
||||||
|
|
||||||
|
|
||||||
require_once 'validator.php';
|
require_once 'validator.php';
|
||||||
|
require_once '../_incl_data/class/Captcha/Captcha.php';
|
||||||
|
|
||||||
$validator = new Validator();
|
$validator = new Validator();
|
||||||
|
|
||||||
$validator->set_error_delimiters('<div class="error">', '</div>');
|
$validator->set_error_delimiters('<div class="error">', '</div>');
|
||||||
|
|
||||||
|
$security = new Captcha();
|
||||||
|
|
||||||
//Задаем правила валидации
|
//Задаем правила валидации
|
||||||
$rules = array(
|
$rules = [
|
||||||
array(
|
[
|
||||||
'field' => 'user_name',
|
'field' => 'user_name',
|
||||||
'label' => 'Ваше ник в игре',
|
'label' => 'Ваше ник в игре',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '', //Обрезаем пробелы по бокам
|
'trim' => '', //Обрезаем пробелы по бокам
|
||||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||||
'required' => 'Поле %s обязательно для заполнения'
|
'required' => 'Поле %s обязательно для заполнения',
|
||||||
)
|
],
|
||||||
),
|
],
|
||||||
array(
|
[
|
||||||
'field' => 'user_email',
|
'field' => 'user_email',
|
||||||
'label' => 'Ваш e-mail адрес связанный с ником',
|
'label' => 'Ваш e-mail адрес связанный с ником',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '',
|
'trim' => '',
|
||||||
'required' => 'Поле %s обязательно для заполнения',
|
'required' => 'Поле %s обязательно для заполнения',
|
||||||
'valid_email' => 'Поле %s должно содержать правильный email-адрес'
|
'valid_email' => 'Поле %s должно содержать правильный email-адрес',
|
||||||
)
|
],
|
||||||
),
|
],
|
||||||
array(
|
[
|
||||||
'field' => 'user_url',
|
'field' => 'user_url',
|
||||||
'label' => 'URL info персонажа',
|
'label' => 'URL info персонажа',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '',
|
'trim' => '',
|
||||||
'valid_url' => 'Поле %s должно содержать правильный URL адрес'
|
'valid_url' => 'Поле %s должно содержать правильный URL адрес',
|
||||||
)
|
],
|
||||||
),
|
],
|
||||||
array(
|
[
|
||||||
'field' => 'subject',
|
'field' => 'subject',
|
||||||
'label' => 'Тема обращения',
|
'label' => 'Тема обращения',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '', //Обрезаем пробелы по бокам
|
'trim' => '', //Обрезаем пробелы по бокам
|
||||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||||
'required' => 'Поле %s обязательно для заполнения'
|
'required' => 'Поле %s обязательно для заполнения',
|
||||||
)
|
],
|
||||||
),
|
],
|
||||||
array(
|
[
|
||||||
'field' => 'text',
|
'field' => 'text',
|
||||||
'label' => 'Суть проблемы/обращения',
|
'label' => 'Суть проблемы/обращения',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '', //Обрезаем пробелы по бокам
|
'trim' => '', //Обрезаем пробелы по бокам
|
||||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||||
'required' => 'Поле %s обязательно для заполнения'
|
'required' => 'Поле %s обязательно для заполнения',
|
||||||
)
|
],
|
||||||
),
|
],
|
||||||
array(
|
[
|
||||||
'field' => 'keystring',
|
'field' => 'keystring',
|
||||||
'label' => 'Капча',
|
'label' => 'Капча',
|
||||||
'rules' => array(
|
'rules' => [
|
||||||
'trim' => '', //Обрезаем пробелы по бокам
|
'trim' => '', //Обрезаем пробелы по бокам
|
||||||
'required' => 'Вы не ввели цифры изображенные на картинке',
|
'required' => 'Вы не ввели цифры изображенные на картинке',
|
||||||
'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки'
|
'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки',
|
||||||
)
|
],
|
||||||
)
|
],
|
||||||
);
|
];
|
||||||
|
|
||||||
//Устанавливаем правила валидации
|
//Устанавливаем правила валидации
|
||||||
$validator->set_rules($rules);
|
$validator->set_rules($rules);
|
||||||
@ -89,7 +87,9 @@ if($validator->run()){
|
|||||||
|
|
||||||
//Формируем текст сообщения
|
//Формируем текст сообщения
|
||||||
foreach ($rules as $rule) {
|
foreach ($rules as $rule) {
|
||||||
if($rule['field'] == 'keystring') continue;
|
if ($rule['field'] == 'keystring') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$mail_body .= $rule['label'] . ': ' . $validator->postdata($rule['field']) . "\r\n";
|
$mail_body .= $rule['label'] . ': ' . $validator->postdata($rule['field']) . "\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,28 +104,24 @@ if($validator->run()){
|
|||||||
|
|
||||||
//Очищаем форму обратной связи
|
//Очищаем форму обратной связи
|
||||||
$validator->reset_postdata();
|
$validator->reset_postdata();
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
|
|
||||||
$message = '<div class="error">Ваше сообщение не отправлено!</div>';
|
$message = '<div class="error">Ваше сообщение не отправлено!</div>';
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
|
|
||||||
//Получаем сообщения об ошибках в виде строки
|
//Получаем сообщения об ошибках в виде строки
|
||||||
$message = $validator->get_string_errors();
|
$message = $validator->get_string_errors();
|
||||||
|
|
||||||
//Получаем сообщения об ошибках в виде массива
|
//Получаем сообщения об ошибках в виде массива
|
||||||
$errors = $validator->get_array_errors();
|
$errors = $validator->get_array_errors();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
<html>
|
<html lang="ru">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<title>Форма обратной связи с Администрацией проекта «Бойцовский клуб» </title> <meta name="description" content="Здесь Вы можете обратиться к Администрации Бойцовского клуба, с просьбой решения технического характера ⭐ связанной с нашей игрой"/>
|
<title>Форма обратной связи с Администрацией проекта «Бойцовский клуб» </title>
|
||||||
|
<meta name="description" content="Здесь Вы можете обратиться к Администрации Бойцовского клуба, с просьбой решения технического характера ⭐ связанной с нашей игрой"/>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
<!--
|
<!--
|
||||||
@ -137,6 +133,7 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oneColFixCtrHdr #container {
|
.oneColFixCtrHdr #container {
|
||||||
width: 780px;
|
width: 780px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
@ -144,15 +141,18 @@ body {
|
|||||||
border: 1px solid #000000;
|
border: 1px solid #000000;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oneColFixCtrHdr #mainContent {
|
.oneColFixCtrHdr #mainContent {
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oneColFixCtrHdr #footer {
|
.oneColFixCtrHdr #footer {
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
background: #DDDDDD;
|
background: #DDDDDD;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oneColFixCtrHdr #footer p {
|
.oneColFixCtrHdr #footer p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
@ -176,7 +176,6 @@ form.form input.text,
|
|||||||
height: 20px;
|
height: 20px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
color: #333;
|
color: #333;
|
||||||
background:url(images/bginput.jpg) repeat-x bottom #fff;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@ -205,7 +204,6 @@ form.form .btn {
|
|||||||
display: block;
|
display: block;
|
||||||
height: 31px;
|
height: 31px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
background:url(images/bgbtn.jpg) repeat-x;
|
|
||||||
color: #565e62;
|
color: #565e62;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
@ -250,9 +248,10 @@ div.errors .error{
|
|||||||
</head>
|
</head>
|
||||||
<body class="oneColFixCtrHdr">
|
<body class="oneColFixCtrHdr">
|
||||||
|
|
||||||
<div id="container"> <p><align="center"><strong>Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.</strong></p>
|
<div id="container">
|
||||||
|
|
||||||
<div id="mainContent">
|
<div id="mainContent">
|
||||||
|
<p style="font-weight: bold;">Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.</p>
|
||||||
|
|
||||||
<?= (!empty($message)) ? '<div class="errors">' . $message . '</div>' : '' ?>
|
<?= (!empty($message)) ? '<div class="errors">' . $message . '</div>' : '' ?>
|
||||||
<form action="" method="post" class="form">
|
<form action="" method="post" class="form">
|
||||||
@ -283,7 +282,10 @@ div.errors .error{
|
|||||||
|
|
||||||
<div <?= (!empty($errors['keystring'])) ? 'class="error_field"' : ''; ?>>
|
<div <?= (!empty($errors['keystring'])) ? 'class="error_field"' : ''; ?>>
|
||||||
<label class="captcha">Введите цифры изображенные на картинке:</label>
|
<label class="captcha">Введите цифры изображенные на картинке:</label>
|
||||||
<div class="capth_images"><?php require 'captcha.php';?></div>
|
<div class="capth_images">
|
||||||
|
<?php $security->width(100)->height(30)->newImage();
|
||||||
|
$_SESSION['keystring'] = $security->getSum(); ?>
|
||||||
|
</div>
|
||||||
<input type="text" class="text" name="keystring" value=""/>
|
<input type="text" class="text" name="keystring" value=""/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|