hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.20. 13:12



Jelenlévő felhasználók

Jelenleg 128 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 126 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot], Majestic-12 [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 28 hozzászólás ]  Oldal 1 2 3 Következő
Szerző Üzenet
 Hozzászólás témája: Web Stat
HozzászólásElküldve: 2010.08.13. 03:51 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
Üdv!

Először is nem plugint keresek hanem írni szeretnék egy sajátot. Tehát ha lehet senki ne linkelgessen pluginokat, tudok énis keresni.:)
Amiben elakadtam:
Egy olyan plugint írok ami egy weboldalnak küldi el a játékosok statisztikáját.
Egyenlőre játékos név, fragek, és death-t sikerült a többit majd idővel mivel még a jelenlegi megoldásom sem működik.
Szerintem a probléma oka az hogy socketnél GET-ben adom át az adatokat a weboldalnak és nem meg felelően vannak a nevek konvertálva (base64 el próbálkoztam kicsit javult de nem az igazi).
SMA fájl:
http://pastebin.com/sDhMikgV
BASE64.INC fájl
http://www.4shared.com/file/44MXjEfD/base64.html
PHP fájl:
http://pastebin.com/1zS6kHKk
SQL tábla:
Kód:
CREATE TABLE `users` (
  `id` int(250) NOT NULL auto_increment,
  `nick` varchar(50) NOT NULL,
  `frags` bigint(255) NOT NULL default '0',
  `deaths` bigint(250) NOT NULL default '0',
  `date` int(50) NOT NULL default '0',
  `last_online` int(50) NOT NULL default '0',
  `ban` set('0','1') NOT NULL default '0',
  `flags` set('0','1') NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

A PHP fájlt csak tesztképpen készítettem egyenlőre ez is meg teszi hogy az eredményt lássam.
A lényeg hogy a statisztikát körvégén küldje el a weboldalnak vagy ha valaki tud jobb módszert várom a javaslatokat.
De mindenképpen egy PHP fájlnak akarom küldeni és nem egyből adatbázisba.
Gondolkodtam azon is hogy hátha POST metódusként kellene elküldeni de túl macerás lenne egyenlőre maradok GET megoldásnál hátha csak én csinálok rosszul valamit.
A konkrét hiba az lenne hogy nem küldi el minden játékost a weboldalra vagy rosszul értelmeződik ki a neve így nem kapja meg a weboldal GET -ként hanem üres stringet kap ebben az esetben(tehát ha üres stringet kap a $_GET['nick'] változó akkor nem fut le a játékos hozzá adás, illetve nem is frissül.
Ez a probléma ahogy észre vettem csak olyan játékosokon esik meg akiknek a nevében olyan karakterek vannak amik nem tartoznak az eredeti angol ábécé-hez pl: []/\'",._- stb... karakterek.
Saját gépen kipróbáltam indítottam egy local szervert tettem rá 9botot
és csatlakoztam így 10en voltunk a szerveren egyik játékosnak a nevében sem volt illegálisnak vélhető karakter így tök jól lefutott a program. Minden rendben ment a még nem az adatbázisban lévő játékosokat hozzá adta a meg lévőket frissítette minden kör végén. Tehát valamiért nem akar az adatbázisba kerülni a játékos és a hibára sem tudok rá jönni ez a legőrjítőbb.
A statisztika azaz a játékos kill(frag) és death számolásával semmi probléma csak a nevekkel lehet probléma.

Nagyon szépen meg köszönném a segítségeteket remélem van más aki jobban ért socketeléshez és már csinált ilyent.

UI: Létszíves a nagy pofájú tizen évesek kerüljenek akik csak a meg gondolatlan ötleteikkel soroznák az agyamat konkrét hozzá értő segítséget várnék nagyon köszi a megértést. :)

Üdvözlettel Dénes.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.13. 11:40 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Azért nem fog menni, mivel azok valóban speciális karakterek. Rá kéne eresteni egy sed/grep szerűséget (gondolom tudod mi az), ami replaceli a megfelelő karaktert a hozzá tartozó "kód"ra. Hogy mi ez a kód, nem fogom Neked tudni megmondani, de ha írsz 1 php oldalt, beleteszel 1 TextBox-ot, egy Buttont, ami elküldi a TextBox tartalmát GET-tel, akkor látni fogod az url címében, hoy melyik speci kód, mire cserélődik le.

u.i.: Örülök, h vannak értelmes emberek is a fórumon (ez nem azt jelenti, h csak te vagy az :P)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.13. 19:48 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
A pluginban használjam ezt a "sed/grap"-t amit nem igazán értem hogy mi akar lenni vagy a php fájlban?
Vagy szimplán kifejthetnéd ezt a sed/grapt hogy mire gondoltál ezalatt:)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.13. 20:56 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Replaceled a speckó karaktereket a megfelelő karaktersorozatokra.
sed/grep ezt csinálja, de ezek parancsok a Unix rendszerben (bash)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.14. 14:42 
Offline
Félisten
Avatar

Csatlakozott: 2008.04.28. 16:04
Hozzászólások: 872
Megköszönt másnak: 7 alkalommal
Megköszönték neki: 59 alkalommal
Én igazából nemannyira vagyok otthon ezekbe socket dolgokba, de néhány módszer amivel lehetne kezdeni valamit:

Az AMXX alapból támogat mysql-t, csak engedélyezni kell a modult. Beleírni az adatbázisba közvetlenül az adatokat, aztán az oldalon csak lekérni őket. Biztonságosabb lehet. http://www.amxmodx.org/funcwiki.php?go=module&id=23

Lehetne egyszerű show_motd-vel is adatokat küldeni, ez a módszer hasonlítana a tiedhez:
show_motd(id, "http://www.oldal.com/stat.php?adatok=...", "Korvegi Statod")
Ezzel betöltené az oldalon lévő php kódot (és scriptel mentené is az adatokat), illetve visszajelezné motdben amit akarunk (vagy simán elnyomni a motd-t egy másik parancsal). Ez kevésbé biztonságos, ki lehet játszani bizonyos módszerekkel.
Így is akadhatnak karakterproblémák, azokat simán lekell cserélni még az amxx-es résznél, vagy valami azonosítót használni (IP?).


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.15. 01:01 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
Tudom hogy nem a legbiztonságosabb módszer:)
De az meg végképp nem hogy MySql adatbázisban tudjanak turkálni és ez még inkább előnytelen lenne, de a biztonságot külön szerver azonosítóval oldanám meg így nem tudná egy játékos egy könnyen a statját feltolni weben.
A karakter problémára gondoltam base64-t mivel az lekódolná neveket és PhP meg vissza de így sem a várt eredmény jött.
A motd-s megoldás lehetne egy jó ötlet-is de feltételezem hogy ha socket-nél HTTP headert küldök akkor motd is ugyanazt fogja sok minden nem változhat csak nem használok socketet, de viszont nekem azt kell használjak mert majd akarok adatot is vissza kapni és azt feldolgozni(banlista vagy van e már regisztrálva a weboldalon a neve, web - regisztráció => a szerverhez) és ezt motd-vel kötve hiszem hogy megoldhatnám ennél egyszerűbben.:)
Tehát SQL és Motd kilőve.
Azonosítót meg valami alapján csinálni kéne és én név szerint szeretném csinálni az adat küldést ha csak nincs jobb mint az IP vagy a név (STEAM ID meg kilőve mert a sok non-steames miatt használhatatlan lenne a plugin).
Tehát amit a játékos állít be és egyértelmű a játékosnak is:)
Saját karakter replace-val próbálkozok hátha az beválik csak eléggé idő igényes egy ilyent megírni.
De az is lehet probléma hogy karakter kódólás, erre nem gondoltam de feltételezhetjük mert nem tudom amx-plugin mégis milyen karakter kódolást használ? ASCII vagy.. vagy??


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.18. 10:57 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
Na most végig ellenőriztem az összes karaktert.

Kód:
 § ' " + ! % / = ( ) \ | € ÷  [ ] < > #  & @ { } < ; > * , . - (meg angol ábécé karaktereit) stb...

Base64-ben el lett mindegyik kódolva(egy kis módosítással)

Kód:
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 és . -

karakterekre cseréltettem base64-el.

Na már most ezek végig teszteltem mindegyiket és így nem kaptam egy olyan encode- karakter sorozatot ami URL-encode szabványába ütközne.(feltéve hogy az 1. verzióban a per és a vissza perjel a & a # és a + jelek mind mind akadályozhatták a paraméterek átadását a weboldalnak.
Így még karakter kódolás sem lehet probléma.
Maximum a GET paraméterek mérete lehet probléma de ezeknek nincsen maximum és minimum méret megadva. Ez általában böngésző specifikusak. De még a string is amit definiálok a programban 2048bájt ennél hosszabb base64-kódolás meg eléggé ritka a CS 1.6 maximum kb. 30 karakteres név maximuma miatt.

Ezért nem marad más ötletem minthogy valószínű hogy túl gyors lenne a HTTP socket query küldése a for ban?:/
De ez is elégé hülyén jönne ki ha így lenne.
De még az is eszembe jutott hogy előfordulhat az hogy get_name-nél üres string-et kap a program így weboldalnak elmegy az adat csak mivel weben a PHP program az üres string-eket nem írja SQL-be ezért nem jelenik meg a kért adat?
Az üres string-ekre átlag esetben pedig base64-sem generál semmit.
És akkor itt kérném a segítségeteket, ha üres string-get kapok más megoldás név lekérdezéséhez?
Más ötletem már tényleg nincs


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.18. 16:16 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Ezt nem értem, hogy kapnál üres stringet? Nem lehet nullstringet megadni néven 1.6ban. Ha mégis akkor egyszerűen levizsgálod, hogy null-e, ha igen, akkor megadsz neki egy értéket és kész :)

Kicsit fura az egyik mondat, de szerintem nem lassú ha ciklusban adod át játékosonként az eredményt, feltéve, ha kör végén teszed ezt (vagy map végén). Ha laggot okoz, az se para, mivel nem játék közben laggol :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.19. 12:51 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
A string null értékét úgy értettem hogy a get_name fügvény üreset add vissza.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Web Stat
HozzászólásElküldve: 2010.08.20. 16:12 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Mikor adna vissza üreset?


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 28 hozzászólás ]  Oldal 1 2 3 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 2 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole