01:16
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Alcoholik  
Система обмена сообщениями [MySQL]
ApecДата: Воскресенье, 29.04.2012, 20:50 | Сообщение # 1
Группа: Mappers
Сообщений: 1307
Награды: 29
Город: Минск
Репутация: 1922
Замечания: 0%
Статус:
Описание от Games:

Приветствую Всех!
Как всегда, АРЕС подкидывает интересные идеи.
В этот раз этому безумному человеку пришла мысль в голову создать систему обмена сообщений между пользователями, но отправка должна быть возможна, даже если игрок (получатель) не находится в данный момент на сервере.

Что включено в это готовое решение:

-Использование MySQL;
-Отправка сообщения игроку, даже если он оффлайн;
-Поиск получателя в базе: Можно использовать маску для поиска, т.е. если вы хотите найти игрока с ником Games, можно в поиск ввести следущее: "G%ES"
% - означает произвольную длину символов, она может быть равна и нулю (кто сдает ЕГЭ по информатике, в задании А4 аналогичная вещь :ay:);
-Чтение сообщений (входящих и исходящих), возможность удаления сообщений;
-Все непрочитанные сообщения отмечены, а их кол-во указано в главном меню системы;
-После первого спавна при наличии непрочитанных сообщений, в правом нижнем углу будет уведомление о новых письмах;
-Также уведомление приходит, когда Вам отправил сообщение любой онлайн игрок на сервере;
-Возможность отправки онлайн игрокам через клик в табе, при клике в табе на себя - происходит открытие главного меню;



Видео:


Качество видео не самое лучшее, поэтому более подробно посмотрите сами в игре.

SQL запрос для создания таблиц:
Code

CREATE TABLE `messages` (
      `mID` int(6) NOT NULL AUTO_INCREMENT,
      `Receiver` varchar(24) NOT NULL,
      `Sender` varchar(24) NOT NULL,
      `Date` varchar(32) NOT NULL,
      `Message` varchar(200) NOT NULL,
      `display` int(1) NOT NULL DEFAULT '0',
       PRIMARY KEY (`mID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `Names` (
`Name` VARCHAR( 24 ) NOT NULL     
) ENGINE = MYISAM ;


Как вы могли заметить, таблицы в запросе создается 2.
Первая - хранит сообщения, вторая - добавляет при коннекте ники в базу (используется для поиска Ник-Неймов).
Если у вас аккуанты хранятся в MySQL, рекомендую заменить вторую таблицу на чтение данных из вашей таблицы с аккуантами.
[bgcolor=#CCCCCC]СКАЧАТЬ[/bgcolor]

Авторы:
Games & APEC





Сообщение отредактировал Apec - Вторник, 01.05.2012, 10:25
Fus1Дата: Воскресенье, 29.04.2012, 21:46 | Сообщение # 2
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Прикольно, но к сожелению уже не новое)
ApecДата: Воскресенье, 29.04.2012, 22:06 | Сообщение # 3
Группа: Mappers
Сообщений: 1307
Награды: 29
Город: Минск
Репутация: 1922
Замечания: 0%
Статус:
В паблике нету ведь...


LatronДата: Воскресенье, 29.04.2012, 22:43 | Сообщение # 4
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Apec, Молодцы ,хорошая работа. Только исправьте: строку:
Code
ShowPlayerDialog(playerid,ID_DIALOG+6,DIALOG_STYLE  _INPUT,"Ввод текста","Введите текст сообщения:","Ок", "Отмена");

на:
Code
ShowPlayerDialog(playerid,ID_DIALOG+6,DIALOG_STYLE_INPUT,"Ввод текста","Введите текст сообщения:","Ок", "Отмена");

и строку:
Code
else if(listitem == 2) ShowPlayerDialog(playerid,ID_DIALOG+4,DIALOG_STYLE  _INPUT,"Поиск имени получателя","Перед отправкой сообщения Вам необходимо ввести имя пользователя,\nкоторому вы хотите отправить сообшение.Вы можете ввести и часть имени.\nНапример, Вы хотите отправить сообшение игроку с ником Games.\nВ этом случае для поиска имени достаточно ввести, \"mes\" или \"game\""," .:Ок:."," .:Отмена:.");

на:
Code
else if(listitem == 2) ShowPlayerDialog(playerid,ID_DIALOG+4,DIALOG_STYLE_INPUT,"Поиск имени получателя","Перед отправкой сообщения Вам необходимо ввести имя пользователя,\nкоторому вы хотите отправить сообшение.Вы можете ввести и часть имени.\nНапример, Вы хотите отправить сообшение игроку с ником Games.\nВ этом случае для поиска имени достаточно ввести, \"mes\" или \"game\""," .:Ок:."," .:Отмена:.");

и строку:
Code
ShowPlayerDialog(playerid,ID_DIALOG+6,DIALOG_STYLE  _INPUT,"Ввод текста","Введите текст сообщения:","Ок", "Отмена");

на:
Code
ShowPlayerDialog(playerid,ID_DIALOG+6,DIALOG_STYLE_INPUT,"Ввод текста","Введите текст сообщения:","Ок", "Отмена");

и строку:
Code
else format(string, sizeof(string), "{0000ff}Получатель:\n{ff0000}%s\n\n{0000ff}Время:\  n{ff0000}%s\n\n{0000ff}Текст сообщения:\n{ff0000}%s", Receiver, Date , Message );

на:
Code
else format(string, sizeof(string), "{0000ff}Получатель:\n{ff0000}%s\n\n{0000ff}Время:\n{ff0000}%s\n\n{0000ff}Текст сообщения:\n{ff0000}%s", Receiver, Date , Message );



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )




Сообщение отредактировал Latron - Воскресенье, 29.04.2012, 23:02
oleg_tarantulaДата: Понедельник, 30.04.2012, 12:37 | Сообщение # 5
Постоялец
Группа: Продвинутые
Сообщений: 345
Награды: 5
Город: -
Репутация: 118
Замечания: 60%
Статус:
Отличная работа. Спасибо.


AirKiteДата: Понедельник, 30.04.2012, 16:50 | Сообщение # 6
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус:
Молодцы конечно, код тчатеьлно не просматривал, это по всей видимости сделал Latron. Тем не менее мельком глянул. Очень плохо что не используется отдельный поток. И самое главное скрипт открывает уязвимость SQL Injection для базы к которой он подключен.


[1337GAMES] Easy RP
(SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)


Jabber: airkite@qip.ru
[Addon] QuickBinder
[FS] Online Players Record
Fus1Дата: Понедельник, 30.04.2012, 16:55 | Сообщение # 7
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (AirKite)
это по всей видимости сделал Latron

не, Латрон пишит по другому, даже по самому элементарному он разделяет всё, к примеру

PlayerInfo [ playerid ] [ test ] = 0 ; :D

Да и думаю вообще, его бы указали.
Quote (Apec)
Авторы: Games & APEC


AirKite, скажи пожалуйста как именно можно взломать спомощью sql иньекции данный скрипт. Подключится к бд , вытащить данные ? (PS: в этом вообще 0 :) )



Сообщение отредактировал Fus1 - Понедельник, 30.04.2012, 16:57
MarkeloFFДата: Понедельник, 30.04.2012, 17:31 | Сообщение # 8
Советчик
Группа: I'm V.I.P.
Сообщений: 1033
Награды: 14
Город: Калининград
Репутация: 191
Замечания: 80%
Статус:
Мне не очень понравилось, кажется стандарт удобнее.
[off]p.s. 800 постов[/off] crazy



Сообщение отредактировал MarkeloFF - Понедельник, 30.04.2012, 17:31
LatronДата: Понедельник, 30.04.2012, 22:20 | Сообщение # 9
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Quote (Fus1)
не, Латрон пишит по другому, даже по самому элементарному он разделяет всё, к примеру

PlayerInfo [ playerid ] [ test ] = 0 ; :D

Да и думаю вообще, его бы указали.

Ну не я не участвовал в создании я просто увидел и исправил ошибки ))



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


ApecДата: Вторник, 01.05.2012, 01:17 | Сообщение # 10
Группа: Mappers
Сообщений: 1307
Награды: 29
Город: Минск
Репутация: 1922
Замечания: 0%
Статус:
Насчёт кода это пинайте Игоря (Games) я просто говорю как всё должно работать
Quote (MarkeloFF)
Мне не очень понравилось, кажется стандарт удобнее.

эм... не понял о каком стандарте идёт речь.



LatronДата: Вторник, 01.05.2012, 01:32 | Сообщение # 11
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Quote (Apec)

эм... не понял о каком стандарте идёт речь.

Успокойся, маркелоф бредит, какой к черту стандарт, в паблике даже не было такого еще. А стандартно в самп нет такого .

Добавлено (01.05.2012, 01:32)
---------------------------------------------
[off]

Quote (Fus1)
Cream Life - Luxury RP [ последней версии!!!! ] - скачать


Я не поверил fun , но потом всё таки решил проверить bad fun [/off]



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


AirKiteДата: Вторник, 01.05.2012, 06:18 | Сообщение # 12
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус:
Fus1, я где то не правильно высказался?
Quote (AirKite)
Молодцы конечно, код тчатеьлно не просматривал, это по всей видимости сделал Latron.

Речь идёт о тщательном просмотре кода, которое уже и так сделал Latron судя по его посту. Причём тут его отношение к разработке данного скрипта?

Quote (Fus1)
AirKite, скажи пожалуйста как именно можно взломать спомощью sql иньекции данный скрипт. Подключится к бд , вытащить данные ? (PS: в этом вообще 0 )

Я же прикрепил ссылку на википедию по SQL injection. Суть взлома что можно выполнить произвольный SQL запрос. (Добавить админа, отредактировать любые данные и т.д.) Взлом возможен при помощи построения специального кода в диалог окна ввода нового сообщения.



[1337GAMES] Easy RP
(SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)


Jabber: airkite@qip.ru
[Addon] QuickBinder
[FS] Online Players Record
GamesДата: Вторник, 01.05.2012, 07:36 | Сообщение # 13
Новенький
Группа: Продвинутые
Сообщений: 8
Награды: 1
Город: Прим. край
Репутация: 147
Замечания: 0%
Статус:
Приветствую Вас, господа!
Как вижу, здесь начинается холивар.
Автор этого кода я... Тем более - авторы указаны в первом посту, так что не нужно тут что-либо придумывать.
А теперь по порядку...

Latron, спасибо, действительно, в коде образовались пробелы.
Причиной всего этого является прямое копирование кода из Pawno и его вставка непосредственно на сайт.
Как видим, в результате этого и образовались пробелы.
Поэтому, как альтернатива - была опубликована ссылка на скачивание pwn-файла.

Quote (AirKite)
Молодцы конечно, код тчатеьлно не просматривал, это по всей видимости сделал Latron.

Надеюсь, Вы поняли, что авторы этой работы Games и Арес :)

Quote (AirKite)
И самое главное скрипт открывает уязвимость SQL Injection для базы к которой он подключен.

Действительна, уязвимость есть.
Для этого в плагине MySQL есть замечательная ф-ия mysql_real_escape_string, которую я кстати и использовал в SQL-запросе при поиске Ник-Неймов в СУБД.
Но в форме ввода текста, к сожалению, я забыл её прописать.

В моем коде есть и еще один недостаток, если отправить пустой запрос при поиске имени - то отобразится весь список Ник-Неймов, т.к. все эти имена будут удовлетворять условию поиска "%%".
Но, проверка на пустой текст всё равно не поможет, ведь можно просто ввести "%%%%" к примеру, и тогда результат будет такой же, как и в первом случае.

Для этого я написал ф-ию bool:CheckInput(source[]), которая будет требовать наличие как минимум 2 символов, будь это a-z, A-Z или 0-9.

Исправленный код можно скачать здесь:
www.cruelgame.ru/offmsg/offmsg1.1.rar

Exclus1veДата: Вторник, 01.05.2012, 11:57 | Сообщение # 14
Освоившийся
Группа: Продвинутые
Сообщений: 141
Награды: 4
Город: Санкт-Петербург
Репутация: 330
Замечания: 40%
Статус:
[off]Молодцы конечно, код тчатеьлно не просматривал, это по всей видимости сделал Latron[/off]

wtf?

А так - Игорь молодец.



node.js

Сообщение отредактировал Exclus1ve - Вторник, 01.05.2012, 11:59
LatronДата: Вторник, 01.05.2012, 13:10 | Сообщение # 15
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Quote (Exclus1ve)
Оффтопик
Молодцы конечно, код тчатеьлно не просматривал, это по всей видимости сделал Latron
wtf?

Что хоть не понятного ? AirKite не стал смотреть код тчатеьлно по тому что это сделал Latron .



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua