Ru-MaNGOS  

Вернуться   Ru-MaNGOS > Дополнения > WWW

Важная информация

WWW Web интерфейс для MaNGOS

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.05.2010, 10:29   #1
HarpyWar
Новичок
 
Регистрация: 14.05.2010
Адрес: Moskow
Сообщений: 29
Сказал(а) спасибо: 14
Поблагодарили 36 раз(а) в 11 сообщениях
HarpyWar На верном пути
Лампочка WoW TrueShots

Сделал хостинг изображений для игроков WoW - http://trueshots.org
На него можно загружать скриншоты из игры World of Warcraft, которые сделаны через игру, путем нажатия кнопки PRINTSCREEN (все остальные изображения помечаются ненастоящими). Например, если отредактировать скрин фотошопом, то он будет ненастоящим.

Собственно, если изображение на нём, то можно быть уверенным, что оно настоящее
Этот хостинг может использоваться в качестве средства для подачи игроками жалоб на читеров, да и просто любые скрины, для которых должна быть уверенность, что они не модифицированы.

Админам серверов ещё предлагается связать свой игровой сервер wow с trueshots.org, и игроки смогут добавлять скриншоты под своими игровыми персами.
Если кого заинтересует, подробности по ссылкам:
http://trueshots.org/idea.php
http://trueshots.org/add_server.php


Если у пользователя русский язык в браузере, то отображается русский интерфейс. Для всех остальных - английский.


Прикладываю исходники, если кто-то захочет поставить у себя такой же хостинг. У них немного меньший функционал, но основную функцию загрузки и отображения скриншотов выполняют.
Требуется веб сервер, mysql, php5+ и свободное место для файлов-скринов.
Установка очень простая, 4 последовательных шага описаны в файле README.txt

Версия 1.1 - без аккаунтов
Версия 2.2 - с аккаунтами из базы сервера wow с личной галереей пользователя, и с общей галереей, где можно посмотреть все загруженные скриншоты; игроки сервера могут оставлять комменты к каждому скриншоту
Миниатюры
Нажмите на изображение для увеличения
Название: trueshots-ru.png
Просмотров: 1085
Размер:	236.4 Кб
ID:	365   Нажмите на изображение для увеличения
Название: trueshots-image.jpg
Просмотров: 1026
Размер:	101.4 Кб
ID:	369   Нажмите на изображение для увеличения
Название: trueshots-screenshots.jpg
Просмотров: 866
Размер:	86.1 Кб
ID:	399  
Вложения
Тип файла: zip trueshots-production-1.1.zip (211.3 Кб, 474 просмотров)
Тип файла: zip trueshots-production-2.2.zip (292.6 Кб, 538 просмотров)

Последний раз редактировалось HarpyWar; 26.07.2010 в 13:11.
HarpyWar вне форума   Ответить с цитированием
18 пользователя(ей) сказали cпасибо:
Dlink (26.06.2010), Dragon (30.06.2010), Feel the Power (21.05.2010), Free (31.08.2010), Hantet (18.06.2010), JafarGH (01.11.2010), kBaTT (16.05.2010), Konctantin (14.05.2010), labor (02.10.2012), Lightunit (14.05.2010), Medivh (20.06.2010), Shadez (14.05.2010), tempura (18.05.2010), trtw89 (14.05.2010), Vik (12.06.2010), wk23 (19.05.2010), ВИТАС (22.05.2010), Кот ДаWINчи (20.02.2016)
Старый 26.07.2010, 08:07   #41
HarpyWar
Новичок
 
Регистрация: 14.05.2010
Адрес: Moskow
Сообщений: 29
Сказал(а) спасибо: 14
Поблагодарили 36 раз(а) в 11 сообщениях
HarpyWar На верном пути
По умолчанию

Цитата:
Сообщение от kBaTT Посмотреть сообщение
обновился, но не отображает комментарии, точнее ошибка:
PHP код:
Call to undefined function Translate() 
Посмотрел файл func.inc.php, не нашел функции.
Добавь в inc/func.inc.php несколько функций. С ними должно работать.
PHP код:
// добавляет сообщение
function SetMessage($text)
{
    
SessionSetValue('message'$text);
}
// после получения сообщения, оно удаляется 
function GetMessage()
{
    if (
$message SessionGetValue('message'))
    {
        
$output '<div class="form_message">' $message '</div>';
        
SessionSetValue('message'false);
        return 
$output;
    }
    return 
false;
}

// получить локализацию пользователя
function GetCurrentLocale()
{
    global 
$locales;
    
    
// если в сессии есть локализация, то возвратить её
    
$lc = ( SessionGetValue('locale') ) ? SessionGetValue('locale') : CURRENT_LANG;
    
    
// если локализация найдена в списке
    
foreach ($locales as $k => $l)
        if (
$lc == $k)
            return 
$lc;
        
    
// если не найдена - английский
    
return 'en';
}

// возвращает переведенную на текущий язык фразу
function Translate($phrase_id)
{
    global 
$lang;
    
    
// если такая фраза есть - возвратить
    
if ( array_key_exists($phrase_id$lang***91;GetCurrentLocale()***93; ) )
        return 
$lang***91;GetCurrentLocale()***93;***91;$phrase_id***93;;

    
// если такая фраза есть на английском - возвратить её
    
if ( array_key_exists($phrase_id$lang***91;'en'***93; ) )
        return 
$lang***91;'en'***93;***91;$phrase_id***93;;
        
    return 
false;
}

function 
POSTGetValue($name)
{
    if (isset(
$_POST))
    {
        if (
array_key_exists($name$_POST))
            return 
$_POST***91;(string)$name***93;;
    }
    return 
false;

HarpyWar вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
kBaTT (26.07.2010), unholly (29.07.2010)
Старый 26.07.2010, 09:43   #42
kBaTT
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 31
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 3 сообщениях
Записей в дневнике: 1
kBaTT На верном пути
По умолчанию

PHP код:
WarningInvalid argument supplied for foreach() in /inc/func.inc.php on line 438 
PHP код:
function GetCurrentLocale() 

    global 
$locales
     
    
// если в сессии есть локализация, то возвратить её 
    
$lc = ( SessionGetValue('locale') ) ? SessionGetValue('locale') : CURRENT_LANG
     
    
// если локализация найдена в списке 
    
foreach ($locales as $k => $l//438 строчка
        
if ($lc == $k
            return 
$lc
         
    
// если не найдена - английский 
    
return 'en'

Как я вроде бы понял, он не находит существующую локализацию в сессии
kBaTT вне форума   Ответить с цитированием
Старый 26.07.2010, 10:11   #43
HarpyWar
Новичок
 
Регистрация: 14.05.2010
Адрес: Moskow
Сообщений: 29
Сказал(а) спасибо: 14
Поблагодарили 36 раз(а) в 11 сообщениях
HarpyWar На верном пути
По умолчанию

Да я там напутал че то... в моей версии уже все по-другому.

В config.inc.php добавь
PHP код:
$locales = array
(
    
'en' => "English",
    
'ru' => "Русский",
    
); 
Когда у тебя заработает, я обновлю архив в 1 посте. Спс за тестирование)
HarpyWar вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
kBaTT (26.07.2010)
Старый 26.07.2010, 10:16   #44
kBaTT
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 31
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 3 сообщениях
Записей в дневнике: 1
kBaTT На верном пути
По умолчанию

HarpyWar, спасибо. Теперь все отлично работает
kBaTT вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HarpyWar (26.07.2010)
Старый 05.08.2010, 22:47   #45
Muzhik
Новичок
 
Регистрация: 07.03.2010
Сообщений: 6
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Muzhik На верном пути
По умолчанию

Пожелание автору. Я думаю было бы полезно сделать к примеру в левом блоке вывод последних скриншотов, а в правом вывод последних комментариев(Думаю это многие поддержат, так как будет видимость ответа на сообщения друг друга).
Muzhik вне форума   Ответить с цитированием
Старый 17.10.2010, 19:12   #46
ObeDve
Новичок
 
Регистрация: 17.10.2010
Сообщений: 24
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
ObeDve На верном пути
Восклицание

Безопасно-ли использование данного движка ? Интересно что скажут гуру php
Я о заливке всяких шеллов и т.п. через которые "хакеры-шмакеры" смогут делать что угодно.
ObeDve вне форума   Ответить с цитированием
Старый 27.10.2010, 04:11   #47
leeas
Новичок
 
Регистрация: 16.04.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
leeas На верном пути
По умолчанию

PHP код:
<?php

// функция проверки изображения на валидность (защита от XSS-атак)
function verify_image ($file) {
    
// защита от Null-байт уязвимости PHP
    
$file preg_replace('/\0/uis'''$file);
    
// проверка изображения
    
$txt file_get_contents($file);
    if (
preg_match('#&(quot|lt|gt|nbsp|amp);#i'$txt)) return false;
    elseif (
preg_match("#&\#x(***91;0-9a-f***93;+);#i"$txt)) return false;
    elseif (
preg_match('#&\#(***91;0-9***93;+);#i'$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\`\'\"***93;*)script:#iU"$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\`\'\"***93;*)javascript:#iU"$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\'\"***93;*)vbscript:#iU"$txt)) return false;
    elseif (
preg_match("#(<***91;^>***93;+)style=(***91;\`\'\"***93;*).*expression\(***91;^>***93;*>#iU"$txt)) return false;
    elseif (
preg_match("#(<***91;^>***93;+)style=(***91;\`\'\"***93;*).*behaviour\(***91;^>***93;*>#iU"$txt)) return false;
    elseif (
preg_match("#</*(applet|link|style|script|iframe|frame|frameset)***91;^>***93;*>#i"$txt)) return false;
    return 
true;
}

?>
Если немного помогла
leeas вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
labor (02.10.2012), ObeDve (30.01.2011)
Старый 02.10.2012, 10:42   #48
labor
Новичок
 
Регистрация: 09.03.2010
Сообщений: 12
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
labor На верном пути
По умолчанию

Сори за некропост, автору спасибо!
Применили ваши скрипты и при игре на офф серверах Таким образом отсеиваем игроков с персонажами другой фракций Скоро допилем авторизацию через базу форума, а не realmd.

Еще раз огромное спасибо!
labor вне форума   Ответить с цитированием
Старый 02.10.2012, 21:48   #49
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от leeas Посмотреть сообщение
PHP код:
<?php

// функция проверки изображения на валидность (защита от XSS-атак)
function verify_image ($file) {
    
// защита от Null-байт уязвимости PHP
    
$file preg_replace('/\0/uis'''$file);
    
// проверка изображения
    
$txt file_get_contents($file);
    if (
preg_match('#&(quot|lt|gt|nbsp|amp);#i'$txt)) return false;
    elseif (
preg_match("#&\#x(***91;0-9a-f***93;+);#i"$txt)) return false;
    elseif (
preg_match('#&\#(***91;0-9***93;+);#i'$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\`\'\"***93;*)script:#iU"$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\`\'\"***93;*)javascript:#iU"$txt)) return false;
    elseif (
preg_match("#(***91;a-z***93;*)=(***91;\'\"***93;*)vbscript:#iU"$txt)) return false;
    elseif (
preg_match("#(<***91;^>***93;+)style=(***91;\`\'\"***93;*).*expression\(***91;^>***93;*>#iU"$txt)) return false;
    elseif (
preg_match("#(<***91;^>***93;+)style=(***91;\`\'\"***93;*).*behaviour\(***91;^>***93;*>#iU"$txt)) return false;
    elseif (
preg_match("#</*(applet|link|style|script|iframe|frame|frameset)***91;^>***93;*>#i"$txt)) return false;
    return 
true;
}

?>
Если немного помогла
сделали бы через свитч кейс
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (03.10.2012)
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 21:26. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot