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;
|
||||
|
||||
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;">
|
||||
<form method="post" style="margin:0px;padding:0px;"
|
||||
action="/main.php?zayvka=1&r=<?= $r ?>&rnd=<?= $code ?>"><br>
|
||||
<img src="/show_reg_img/security2.php?id='<?= time() ?>" width="70" height="20">
|
||||
<form method="post" style="margin:0px;padding:0px;" action="/main.php?zayvka=1&r=<?= $r ?>&rnd=<?= $code ?>"><br>
|
||||
<?php $security->width(70)->height(20)->newImage();
|
||||
$_SESSION['code'] = $security->getSum(); ?>
|
||||
Код подтверждения: <input style="width:40px;" type="text" name="code21">
|
||||
<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 class="btn" style="margin-top:1px;" type="submit" value="Принять вызов">
|
||||
</form>
|
||||
|
30
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 персонажа<br>Авторизируйтесь с главной страницы.');
|
||||
gameexit();
|
||||
}
|
||||
|
||||
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,
|
||||
"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} `, '<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
|
||||
function captchatext1(val, act) {
|
||||
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="noeff">
|
||||
Запрет на использование свитков восстановления НР и Маны<BR>
|
||||
<?php if (!$u->info['no_zv_key']): ?>
|
||||
<img src="/show_reg_img/security2.php?id=<?= time() ?>" width="70" height="20">
|
||||
Код подтверждения: <input style="width:40px;" type="text" name="code21">'
|
||||
<?php if (!$u->info['no_zv_key']):
|
||||
$security = new Captcha\Captcha();
|
||||
$security->width(70)->height(20)->newImage();
|
||||
$_SESSION['code'] = $security->getSum();
|
||||
?>
|
||||
Код подтверждения: <input style="width:40px;" type="text" name="code21">
|
||||
<?php endif; ?>
|
||||
<INPUT maxLength="40" size="40" name="cmt" placeholder="Комментарий к бою"><BR>
|
||||
<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,301 +1,303 @@
|
||||
<?php
|
||||
|
||||
use Captcha\Captcha;
|
||||
|
||||
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 '../_incl_data/class/Captcha/Captcha.php';
|
||||
|
||||
$validator = new Validator();
|
||||
|
||||
$validator->set_error_delimiters('<div class="error">', '</div>');
|
||||
|
||||
$security = new Captcha();
|
||||
|
||||
//Задаем правила валидации
|
||||
$rules = array(
|
||||
array(
|
||||
$rules = [
|
||||
[
|
||||
'field' => 'user_name',
|
||||
'label' => 'Ваше ник в игре',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '', //Обрезаем пробелы по бокам
|
||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||
'required' => 'Поле %s обязательно для заполнения'
|
||||
)
|
||||
),
|
||||
array(
|
||||
'required' => 'Поле %s обязательно для заполнения',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'user_email',
|
||||
'label' => 'Ваш e-mail адрес связанный с ником',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '',
|
||||
'required' => 'Поле %s обязательно для заполнения',
|
||||
'valid_email' => 'Поле %s должно содержать правильный email-адрес'
|
||||
)
|
||||
),
|
||||
array(
|
||||
'valid_email' => 'Поле %s должно содержать правильный email-адрес',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'user_url',
|
||||
'label' => 'URL info персонажа',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '',
|
||||
'valid_url' => 'Поле %s должно содержать правильный URL адрес'
|
||||
)
|
||||
),
|
||||
array(
|
||||
'valid_url' => 'Поле %s должно содержать правильный URL адрес',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'subject',
|
||||
'label' => 'Тема обращения',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '', //Обрезаем пробелы по бокам
|
||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||
'required' => 'Поле %s обязательно для заполнения'
|
||||
)
|
||||
),
|
||||
array(
|
||||
'required' => 'Поле %s обязательно для заполнения',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'text',
|
||||
'label' => 'Суть проблемы/обращения',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '', //Обрезаем пробелы по бокам
|
||||
'strip_tags' => '', // Удаляем HTML и PHP теги
|
||||
'required' => 'Поле %s обязательно для заполнения'
|
||||
)
|
||||
),
|
||||
array(
|
||||
'required' => 'Поле %s обязательно для заполнения',
|
||||
],
|
||||
],
|
||||
[
|
||||
'field' => 'keystring',
|
||||
'label' => 'Капча',
|
||||
'rules' => array(
|
||||
'rules' => [
|
||||
'trim' => '', //Обрезаем пробелы по бокам
|
||||
'required' => 'Вы не ввели цифры изображенные на картинке',
|
||||
'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки'
|
||||
)
|
||||
)
|
||||
);
|
||||
'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
//Устанавливаем правила валидации
|
||||
$validator->set_rules($rules);
|
||||
$message = '';
|
||||
|
||||
//Запускаем валидацию POST данных
|
||||
if($validator->run()){
|
||||
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') ) . "?=";
|
||||
$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";
|
||||
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'). ">";
|
||||
$header .= "From: " . $from . " <" . $validator->postdata('user_email') . ">";
|
||||
|
||||
//Отправка сообщения
|
||||
if(mail($to, $subject, $mail_body, $header)){
|
||||
if (mail($to, $subject, $mail_body, $header)) {
|
||||
|
||||
$message = '<div class="error">Ваше сообщение успешно отправлено!</div>';
|
||||
|
||||
//Очищаем форму обратной связи
|
||||
$validator->reset_postdata();
|
||||
}
|
||||
else{
|
||||
|
||||
} else {
|
||||
$message = '<div class="error">Ваше сообщение не отправлено!</div>';
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
|
||||
//Получаем сообщения об ошибках в виде строки
|
||||
$message = $validator->get_string_errors();
|
||||
|
||||
//Получаем сообщения об ошибках в виде массива
|
||||
$errors = $validator->get_array_errors();
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Форма обратной связи с Администрацией проекта «Бойцовский клуб» </title> <meta name="description" content="Здесь Вы можете обратиться к Администрации Бойцовского клуба, с просьбой решения технического характера ⭐ связанной с нашей игрой"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Форма обратной связи с Администрацией проекта «Бойцовский клуб» </title>
|
||||
<meta name="description" content="Здесь Вы можете обратиться к Администрации Бойцовского клуба, с просьбой решения технического характера ⭐ связанной с нашей игрой"/>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font: 100% Verdana, Arial, Helvetica, sans-serif;
|
||||
background: #666666;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: #000000;
|
||||
}
|
||||
.oneColFixCtrHdr #container {
|
||||
}
|
||||
|
||||
.oneColFixCtrHdr #container {
|
||||
width: 780px;
|
||||
background: #FFFFFF;
|
||||
margin: 15px auto;
|
||||
border: 1px solid #000000;
|
||||
text-align: left;
|
||||
}
|
||||
.oneColFixCtrHdr #mainContent {
|
||||
}
|
||||
|
||||
.oneColFixCtrHdr #mainContent {
|
||||
padding: 0 20px;
|
||||
background: #FFFFFF;
|
||||
position: relative;
|
||||
}
|
||||
.oneColFixCtrHdr #footer {
|
||||
}
|
||||
|
||||
.oneColFixCtrHdr #footer {
|
||||
padding: 0 10px;
|
||||
background:#DDDDDD;
|
||||
}
|
||||
.oneColFixCtrHdr #footer p {
|
||||
background: #DDDDDD;
|
||||
}
|
||||
|
||||
.oneColFixCtrHdr #footer p {
|
||||
margin: 0;
|
||||
padding: 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
form.form{
|
||||
form.form {
|
||||
width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
form.form div {
|
||||
padding:4px;
|
||||
form.form div {
|
||||
padding: 4px;
|
||||
margin: 4px 0;
|
||||
position:relative;
|
||||
}
|
||||
position: relative;
|
||||
}
|
||||
|
||||
form.form input.text,
|
||||
.textarea {
|
||||
padding:5px 10px;
|
||||
height:20px;
|
||||
border:1px solid #ddd;
|
||||
color:#333;
|
||||
background:url(images/bginput.jpg) repeat-x bottom #fff;
|
||||
position:relative;
|
||||
z-index:2;
|
||||
form.form input.text,
|
||||
.textarea {
|
||||
padding: 5px 10px;
|
||||
height: 20px;
|
||||
border: 1px solid #ddd;
|
||||
color: #333;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
form.form input.text {
|
||||
width:290px;
|
||||
}
|
||||
form.form input.text {
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
form.form .textarea {
|
||||
height:150px;
|
||||
width:290px;
|
||||
}
|
||||
form.form .textarea {
|
||||
height: 150px;
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
form.form label {
|
||||
float:left;
|
||||
width:120px;
|
||||
text-align:right;
|
||||
margin-right:15px;
|
||||
font-weight:bold;
|
||||
color:#666;
|
||||
form.form label {
|
||||
float: left;
|
||||
width: 120px;
|
||||
text-align: right;
|
||||
margin-right: 15px;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
form.form .btn {
|
||||
display:block;
|
||||
height:31px;
|
||||
padding:0 10px;
|
||||
background:url(images/bgbtn.jpg) repeat-x;
|
||||
color:#565e62;
|
||||
font-weight:bold;
|
||||
font-size:12px;
|
||||
border:1px solid #e1e0df;
|
||||
outline:none;
|
||||
form.form .btn {
|
||||
display: block;
|
||||
height: 31px;
|
||||
padding: 0 10px;
|
||||
color: #565e62;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
border: 1px solid #e1e0df;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
/* CSS3 */
|
||||
form.form .btn,
|
||||
form.form .text,
|
||||
form.form .textarea {
|
||||
-moz-border-radius:8px;
|
||||
-webkit-border-radius:8px;
|
||||
border-radius:8px;
|
||||
}
|
||||
/* CSS3 */
|
||||
form.form .btn,
|
||||
form.form .text,
|
||||
form.form .textarea {
|
||||
-moz-border-radius: 8px;
|
||||
-webkit-border-radius: 8px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
|
||||
div.error_field{
|
||||
div.error_field {
|
||||
background: #FEDAFB;
|
||||
border: 1px solid #FA74F0;
|
||||
}
|
||||
}
|
||||
|
||||
div.errors{
|
||||
div.errors {
|
||||
width: 580px;
|
||||
margin: 15px auto;
|
||||
padding: 10px;
|
||||
border: 1px solid #ccc;
|
||||
background: #FDFEC2;
|
||||
}
|
||||
}
|
||||
|
||||
div.errors .error{
|
||||
div.errors .error {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
margin: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-->
|
||||
</style>
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body class="oneColFixCtrHdr">
|
||||
|
||||
<div id="container"> <p><align="center"><strong>Заполните контактную форму и мы свяжемся с вами в ближайшее время, чтобы сообщить об устранении неисправностей.</strong></p>
|
||||
<div id="container">
|
||||
|
||||
<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">
|
||||
<div <?=(!empty($errors['user_name']))? 'class="error_field"': '';?>>
|
||||
<div <?= (!empty($errors['user_name'])) ? 'class="error_field"' : ''; ?>>
|
||||
<label>Ваш ник в игре:</label>
|
||||
<input type="text" class = "text" name="user_name" value="<?=$validator->postdata('user_name');?>" />
|
||||
<input type="text" class="text" name="user_name" value="<?= $validator->postdata('user_name'); ?>"/>
|
||||
</div>
|
||||
|
||||
<div <?=(!empty($errors['user_email']))? 'class="error_field"': '';?>>
|
||||
<div <?= (!empty($errors['user_email'])) ? 'class="error_field"' : ''; ?>>
|
||||
<label>Ваш e-mail адрес:</label>
|
||||
<input type="text" class = "text" name="user_email" value="<?=$validator->postdata('user_email');?>" />
|
||||
<input type="text" class="text" name="user_email" value="<?= $validator->postdata('user_email'); ?>"/>
|
||||
</div>
|
||||
|
||||
<div <?=(!empty($errors['user_url']))? 'class="error_field"': '';?>>
|
||||
<div <?= (!empty($errors['user_url'])) ? 'class="error_field"' : ''; ?>>
|
||||
<label>URL Info персонажа:</label>
|
||||
<input type="text" class = "text" name="user_url" value="<?=$validator->postdata('user_url');?>" />
|
||||
<input type="text" class="text" name="user_url" value="<?= $validator->postdata('user_url'); ?>"/>
|
||||
</div>
|
||||
|
||||
<div <?=(!empty($errors['subject']))? 'class="error_field"': '';?>>
|
||||
<div <?= (!empty($errors['subject'])) ? 'class="error_field"' : ''; ?>>
|
||||
<label>Тема обращения:</label>
|
||||
<input type="text" class = "text" name="subject" value="<?=$validator->postdata('subject');?>"/>
|
||||
<input type="text" class="text" name="subject" value="<?= $validator->postdata('subject'); ?>"/>
|
||||
</div>
|
||||
|
||||
<div class="area<?=(!empty($errors['text']))? ' error_field': '';?>">
|
||||
<div class="area<?= (!empty($errors['text'])) ? ' error_field' : ''; ?>">
|
||||
<label>Суть обращения:</label>
|
||||
<textarea cols="40" class = "textarea" rows="5" name="text"><?=$validator->postdata('text');?></textarea>
|
||||
<textarea cols="40" class="textarea" rows="5" name="text"><?= $validator->postdata('text'); ?></textarea>
|
||||
</div>
|
||||
|
||||
<div <?=(!empty($errors['keystring']))? 'class="error_field"': '';?>>
|
||||
<div <?= (!empty($errors['keystring'])) ? 'class="error_field"' : ''; ?>>
|
||||
<label class="captcha">Введите цифры изображенные на картинке:</label>
|
||||
<div class="capth_images"><?php require 'captcha.php';?></div>
|
||||
<input type="text" class = "text" name="keystring" value=""/>
|
||||
<div class="capth_images">
|
||||
<?php $security->width(100)->height(30)->newImage();
|
||||
$_SESSION['keystring'] = $security->getSum(); ?>
|
||||
</div>
|
||||
<input type="text" class="text" name="keystring" value=""/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label> </label>
|
||||
<input type="submit" class="btn" value="Отправить сообщение" />
|
||||
<input type="submit" class="btn" value="Отправить сообщение"/>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|