<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Noova.pl blog &#187; php</title>
	<atom:link href="http://noova.pl/blog/index.php/category/programowanie/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://noova.pl/blog</link>
	<description>Programmer is an organism that turns coffee into software.</description>
	<lastBuildDate>Thu, 12 Aug 2010 04:48:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>How it&#8217;s made: Bank</title>
		<link>http://noova.pl/blog/index.php/2009/10/17/how-its-made-bank/</link>
		<comments>http://noova.pl/blog/index.php/2009/10/17/how-its-made-bank/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 17:35:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[gry]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[The Godfather Online]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/10/17/how-its-made-bank/</guid>
		<description><![CDATA[Tak, trywialne, ale może i się przyda Sugestie mile widziane ^_^ A więc &#8211; pisanie banku w grze. Dodajemy sobie pole bank oraz bank_time do tabeli z graczami. bank będzie przechowywał gotówkę gracza a bank_time ostatni update odsetek (zakładamy, że gracz dostaje 3% swojej gotówki co 24h) ///Przy okazji &#8211; muszę przepisać od nowa system [...]]]></description>
			<content:encoded><![CDATA[<p>Tak, trywialne, ale może i się przyda <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Sugestie mile widziane ^_^</p>
<p>A więc &#8211; pisanie banku w grze.</p>
<p>Dodajemy sobie pole bank oraz bank_time do tabeli z graczami.</p>
<p>bank będzie przechowywał gotówkę gracza a bank_time ostatni update odsetek (zakładamy, że gracz dostaje 3% swojej gotówki co 24h)</p>
<p>///Przy okazji &#8211; muszę przepisać od nowa system banku w TGO, bo jest tak stary, że pisany wręcz tragicznie <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Zaczynamy! <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank_time'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//$p to tablica z pobranymi danymi gracza</span>
  <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `players` SET `bank_time` = UNIX_TIMESTAMP() WHERE `id`='<span style="color: #006699; font-weight: bold;">$p[id]</span>'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">!=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//Jeśli gracz ma coś w banku</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank_time'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">86400</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #666666; font-style: italic;">//Jeśli ostatni update był ponad 24h temu</span>
   <span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #990000;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank_time'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">86400</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">0.03</span><span style="color: #339933;">*</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
   <span style="color: #666666; font-style: italic;">//Obliczamy ile kasy w banku ma teraz gracz</span>
   <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `players` SET `bank` = '<span style="color: #006699; font-weight: bold;">$p[bank]</span>', `bank_time` = UNIX_TIMESTAMP() WHERE `id`='<span style="color: #006699; font-weight: bold;">$p[id]</span>'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Mam nadzieję, że się nigdzie nie pomyliłem, ja to z palca piszę <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
Czyli mamy już odsetki, teraz zajmiemy się wyjmowaniem i deponowaniem pieniędzy.</p>
<p>Przelewy są opcjonalne i nie będę ich teraz brał pod uwagę, warto zaznaczyć jednak, żeby zrobić limit lvl od którego można robić przelewy,<strong>jeśli</strong> gracz dostaje pieniądze na start.</p>
<p>Dlaczego?<br />
Ano, bo pozakłada sobie 10 kont, z każdego po dajmy na to 150$ prześle i już ma 1500$ dodatkowo <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Wstawiamy sobie dwa formularze &#8211; action=POST, sposób w jaki przekażecie typ operacji nie jest zbytnio ważny, może to być ukryte pole, a może to być tylko jeden formularz ale za to z radio buttonem do wyboru akcji &#8211; to już zostawiam wam.<br />
Ja opiszę na przykładzie ukrytego pola w formularzu o nazwie op &#8211; 0 będzie oznaczało wypłatę o 1 wpłatę <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'op'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cash'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//Jeśli formularz został wysłany</span>
<span style="color: #000088;">$cash</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cash'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Filtrujcie wszystkie zmienne pochodzące od gracza, tyle to za mało.</span>
<span style="color: #666666; font-style: italic;">//To jest tylko mini-poradnik, więc nie robię wszystkiego za was :D</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cash0</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bank'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #000088;">$cash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//Sprawdzamy, czy taką kwotę da się wypłacić</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `players` SET `bank`= `bank` - <span style="color: #006699; font-weight: bold;">$cash</span>,`kasa`=`kasa`+<span style="color: #006699; font-weight: bold;">$cash</span> WHERE `id`='<span style="color: #006699; font-weight: bold;">$p[id]</span>'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'op'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cash'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//Jeśli formularz został wysłany</span>
<span style="color: #000088;">$cash</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cash'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Filtrujcie wszystkie zmienne pochodzące od gracza, tyle to za mało.</span>
<span style="color: #666666; font-style: italic;">//To jest tylko mini-poradnik, więc nie robię wszystkiego za was :D</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cash0</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$p</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'kasa'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #000088;">$cash</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//Sprawdzamy, czy taką kwotę da się wypłacić</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE `players` SET `kasa`= `kasa` - <span style="color: #006699; font-weight: bold;">$cash</span>,`bank`=`bank`+<span style="color: #006699; font-weight: bold;">$cash</span> WHERE `id`='<span style="color: #006699; font-weight: bold;">$p[id]</span>'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Wszelkie informacje o gracza o pomyślnym lub też nie wykonaniu operacji pozostawiam wam, gdyż to nie wymaga specjalnych umiejętności <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
To byłoby na tyle w dzisiejszym How It&#8217;s made, zapraszam do następnego odcinka który ukarze się <em>nie wiadomo kiedy</em> <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
Jeśli gdzieś zrobiłem błąd to napiszcie w komentarzach <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/10/17/how-its-made-bank/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How it&#8217;s made: zapowiedź</title>
		<link>http://noova.pl/blog/index.php/2009/10/04/how-its-made-zapowiedz/</link>
		<comments>http://noova.pl/blog/index.php/2009/10/04/how-its-made-zapowiedz/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 18:26:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[The Godfather Online]]></category>
		<category><![CDATA[gry]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/10/04/how-its-made-zapowiedz/</guid>
		<description><![CDATA[Oto, wszem i wobec zapowiadam nową serię wpisów na blogu, gdzie będę krok po kroku (może nie jak dla totalnego laika) wyjaśniał jak niektóre rzeczy w TGO są zrobione i jak napisać taki skrypt Jeszcze nie wiem, czy będzie to regularnie w jakieś dni, dzisiaj tylko zapowiedź bo i z Rytra wracałem i się z [...]]]></description>
			<content:encoded><![CDATA[<p>Oto, wszem i wobec zapowiadam nową serię wpisów na blogu, gdzie będę krok po kroku (może nie jak dla totalnego laika) wyjaśniał jak niektóre rzeczy w TGO są zrobione i jak napisać taki skrypt <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Jeszcze nie wiem, czy będzie to regularnie w jakieś dni, dzisiaj tylko zapowiedź bo i z Rytra wracałem i się z Kasyx&#8217;em na mieście widziałem i jeszcze muszę na jutro jedną rzecz napisać, także czasu mam mało ;p</p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/10/04/how-its-made-zapowiedz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mini poradnik dla początkujących &#8220;twórców gier&#8221;</title>
		<link>http://noova.pl/blog/index.php/2009/05/23/mini-poradnik-dla-poczatkujacych-tworcow-gier/</link>
		<comments>http://noova.pl/blog/index.php/2009/05/23/mini-poradnik-dla-poczatkujacych-tworcow-gier/#comments</comments>
		<pubDate>Sat, 23 May 2009 10:51:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[gry]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/05/23/mini-poradnik-dla-poczatkujacych-tworcow-gier/</guid>
		<description><![CDATA[To zrozumiałe, że wiele osób chce zrobić własną grę via www i nie ma w tym nic złego.(Na wstępie jeszcze radze przeczytać wpis nt. problemu polskiej sceny tegóż to typu gier, na tym blogu) .Nie jest to how-to, ilustrujące krok po kroku proces tworzenia gry, ale generalne wytyczne dla ludzi, którzy chcą się tą dziedziną [...]]]></description>
			<content:encoded><![CDATA[<p>To zrozumiałe, że wiele osób chce zrobić własną grę <em>via www</em> i nie ma w tym nic złego.<br />(Na wstępie jeszcze radze przeczytać wpis nt. problemu polskiej sceny tegóż to typu gier, na tym blogu) .<br />Nie jest to how-to, ilustrujące krok po kroku proces tworzenia gry, ale generalne wytyczne dla ludzi, którzy chcą się tą dziedziną zajmować.<br />Zanim jeszcze zabierzemy się do nauki czegokolwiek, warto zadać sobie pytanie czy naprawdę to jest to co chcemy robić? Czy nie jest to tylko zachcianka? Słomiany zapał i gry via www to złe połączenie..<br /><strong>Musicie</strong> wbić sobie do głowy, że stworzenie gry, w którą grać będą nie tylko znajomi, nie polega na postawieniu gotowego silnika i <em>jaraniu się super-pro-uber </em>kontem admina.<br />Dobrze, wiemy już, że bez nauki html,css,php i ewentualnie js ani rusz.<br />Ale zanim do tego przejdziemy, zastanówcie się, czy znacie język polski.<br />Nie, nie żartuję.<br />Jeśli podczas tworzenia gry napotkacie problem, a na forum napiszecie &#8220;nie ciaua mi gra, pomuszcie!!!&#8221; to raczej nikt wam nie pomoże.<br />Tak samo, gracze wchodzący na główną stronę i widzący same błędy ortograficzne, stylistyczne i gramatyczne, raczej niezbyt chętnie zarejestrują się w waszej grze.<br />Nie wymagam umiejętności pisania 500 stronnicowych esejów, sam też czasem zrobię  jakiś błąd, ale nie 3 byki w 2 wyrazach..<br />Skoro umiemy już się wysławiać, możemy iść dalej <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />Teraz pytanie &#8211; kupujemy książkę, czy czytamy kursy.<br />Powiem tak &#8211; nt. kursów mam nieco mieszane odczucia, sam uczyłem się z książki niemniej jednak, osobom które niezbyt mogą w danym momencie wydać 100zł na np. świetną moim zdaniem książkę Helionu &#8220;PHP5 i MYSQL &#8211; Biblia&#8221; (<em>o tym, że komuś nie chce się czytac 1000 stron, nie chcę nawet slyszeć, lenistwo to największy problem młodych twórców gier</em>) polecam <a href="http://www.mmocenter.pl/f22-php-mysql/php-kursy-php-89.html">temat na mmocenter</a> i oczywiście <a href="http://www.php.net/manual/pl/">manuala</a> <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />Jeśli np. nie wiemy, co dana funkcja robi, warto zajrzeć na powyższą stronę <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Jest tam też FAQ i właściwie wszystko co byście chcieli wiedzieć, bez php.net czasami ani rusz <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> <br />Oczywiście, zanim php to html i css.<br />Tutaj to uczyłem się sam, już nawet nie pamiętam jak, ale z dobrych kursów jest <a href="http://kurshtml.boo.pl">ten</a>.<br />I na koniec kilka małych porad co do pisania w php <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 
<ul>
<li>Wcięcia &#8211; łatwiej będzie Ci potem czytać kod</li>
<li>Normalne nazwy zmiennych &#8211; nie trzeba potem szukać w całym kodzie co zmienna $xd przechowuje</li>
<li>Porządek w plikach &#8211; folder &#8220;dupa&#8221; może i wydać się sensowny teraz, ale za pare tygodni będziesz przeglądał w nim pliki, żeby dojść do tego, co on tam w ogóle robi</li>
<li?Nie pakuj wszystkiego w funkcje - ok, przydają się i jak najbardziej należy ich używać, ale niektórzy przesadzają dając funkcję error(), która nie robi nic innego jak echo z komunikatem..</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/05/23/mini-poradnik-dla-poczatkujacych-tworcow-gier/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problem polskiej sceny gier via www</title>
		<link>http://noova.pl/blog/index.php/2009/04/23/problem-polskiej-sceny-gier-via-www/</link>
		<comments>http://noova.pl/blog/index.php/2009/04/23/problem-polskiej-sceny-gier-via-www/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 15:43:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[bezedury matergamesa]]></category>
		<category><![CDATA[free-time]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/04/23/problem-polskiej-sceny-gier-via-www/</guid>
		<description><![CDATA[Uwaga: Będzie trochę o kotletach, książkach i jak zwykle parę moich herezji Od jakiegoś czasu obserwuje sobie co dzieje się na polskiej scenie gier via www. Generalnie (pomijając projekty typu Lunaroth, w których autorzy naprawdę wprowadzają coś nowego, a ostatnio w ogóle tworzą własny silnik) to dużo gier opiera się na starych, zabugowanych, dziurawych skryptach [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: orange;">Uwaga: Będzie trochę o kotletach, książkach i jak zwykle parę moich herezji <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span><br />
Od jakiegoś czasu obserwuje sobie co dzieje się na polskiej scenie gier via www.<br />
Generalnie (<span style="font-style: italic;">pomijając projekty typu Lunaroth, w których autorzy naprawdę wprowadzają coś nowego, a ostatnio w ogóle tworzą własny silnik</span>) to dużo gier opiera się na starych, zabugowanych, dziurawych skryptach typu Vallheru,Ugamela czy XNova.<span id="more-29"></span><br />
Już nawet nie jest złe to, że te silniki się wykorzystuje, ale to, że &#8220;admini&#8221; tych &#8220;gier&#8221; nie wprowadzają żadnych zmian do silnika a na pytanie &#8220;Czy znasz php?&#8221; odpowiadają &#8220;A co to??&#8221;..<br />
<span style="font-weight: bold;">Wiele osób myśli</span>, że nie potrafiąc napisać w php Hello World, lub znając może ze 3 funkcje zrobią super-mega-hiper grywalną grę w której zarejestrują się miliony.<br />
Mówiąc delikatnie, to zwykły <span style="font-style: italic;">bullshit</span>.<br />
Przyznam się &#8211; jak jeszcze znałem tylko HTML i CSS to stwierdziłem, że może fajnie będzie założyć sobie grę.<br />
Nieświadomy zła, które czynie, sięgnąłem po Vallheru.<br />
Wgrałem, obejrzałem i wywaliłem.<br />
Stwierdziłem, że nie chce mi się zbytnio uczyć php, ale na takim czymś to ja gry nie postawie, nie ma mowy.<br />
Akurat odbywały się wtedy targi książki w Krakowie.<br />
Wybrałem się tam, podszedłem do stoiska Helionu i zakupił opasłe tomisko (1000 stron z hakiem z tego co pamiętam) o nazwie <span style="font-weight: bold;">PHP5 i MYSQL &#8211; Biblia</span>.<br />
Zacząłem sobie czytać, na początku z lekką niechęcią, ale z kolejnymi stronami pochłaniało mnie to coraz bardziej.<br />
Nim się obejrzałem, książkę przeczytałem.<br />
Ruszyłem więc do praktyki.<br />
Zainstalowałem sobie (wtedy na WinXp) AppSrv i zacząłem bawić się prostymi skryptami.<br />
Pisałem, pisałem i jakoś o tej grze zapomniałem.<br />
Dobra, nie przynudzając &#8211; w końcu nauczyłem się w miarę dobrze php, mysql jakoś ogarniałem i siadłem do wersji pierwszej TGO.<br />
Dzisiaj projekt jest już dość rozwinięty.<br />
<span style="color: red;">Nie sugerujcie się czasem pisania tej wersji TGO, bo tak naprawdę grę można napisać w miesiąc, ale poświęcając dziennie na to przynajmniej z 6h.</span><br />
Ja niestety takiej możliwości nie mam, czasem nie jestem w stanie zdobyć 30minut dziennie, więc prace idą jak idą.</p>
<p>Jak widzę kolejną reklamę &#8220;Nasza super gra, zarejesrtój siem, nie porzałójesz!!!!!!!!!! pierfsze 3 osoby dostanom adma!!!!!!!&#8221; (jakby co &#8211; błędy oczywiście zamierzone..) to mam wrażenie, że mi zaraz coś się stanie i wy&#8230;rzucę monitor za okno.</p>
<p>Tak samo jeśli reklama jakiejś gry zaczyna się od słów &#8220;To coś jak&#8221; to od razu zamykam kartę i idę po szklankę whisky. Rynek jest wypełniony kiepskiej jakości plagiatami innych gier.<br />
Tworzenie kolejnego to tak samo durny pomysł jak leczenie bólu głowy uderzaniem się młotkiem w stopę. Jeśli Twoja gra ma być dobra, to musi być unikalna! Można by powiedzieć, że jestem hipokrytą bo gier gangsterskich jest w ch.. ekhm, bardzo dużo.<br />
I tu się mylicie &#8211; nasza gra opiera się na Ojcu Chrzestnym i nie chcemy w niej graczy, którzy tego nie widzieli, lub nie czytali. To ma być klimatyczna gra, a nie kolejny nudny klikacz. Poza tym akcja dzieje się w 1945r w Nowym Yorku i nie polega na szpanowaniu brykami <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
I jeśli myślisz, że Twoja Ugamela będzie tak dobra jak Ogame, to uwierz, mylisz się strasznie.<br />
Odgrzewany kotlet nie jest już taki dobry.. (co przypomina mi, że obiadu nie jadłem xP)</p>
<p>Jeśli konieczne chcesz mieć jakiś udział w robieniu gry a nie chcesz się uczyć php, to zawsze pozostają tekściarze,graficy i support. Ale nie oczekuj, że możesz się opierdalać a i tak potem zostać uwieczniony w credistach. Nikt nie jest głupi i musisz coś zrobić dla gry. A &#8220;coś&#8221; to nie podanie pomysłu na układ menu, musisz mieć naprawdę duży wkład w tworzenie gry.<br />
I to, że masz pomysł na grę to nie oznacza, że jest dobry, ani to, że ktoś go zrealizuje.<br />
Ludzie mają swoje własne pomysły, a już totalnie bezczelne jest oczekiwanie, że poda się pomysł, potem przez całą fazę produkcji nic nie będzie się robić a na koniec domagać się head admina.<br />
A więc, dla ludzi, którzy i tak pewnie zescrollowali tutaj i dla tych co jednak wytrwali:</p>
<ul>
<li>Vallheru <span style="font-weight: bold;">to nie jest skrypt typu postaw-graj</span>, to tylko może być podstawa, do przerobienia!</li>
<li>Nie znasz php? To zapraszam jak już się nauczysz, bez tego gry nie zrobisz.</li>
<li>Gra powinna być unikalna &#8211; plagiaty to zło.</li>
<li>Jeśli nie chcesz się nauczyć php to postaraj przydać się jakoś inaczej przy projekcie</li>
<li>Musisz coś w teamie robić, nikt nie lubi bumelantów</li>
<li>Raczej nikt nie zrobi dla Ciebie gry i potem pozwoli się pod tym podpisać Tobie</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/04/23/problem-polskiej-sceny-gier-via-www/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google i autologowanie &#8211; wersja poprawiona</title>
		<link>http://noova.pl/blog/index.php/2009/04/10/google-i-autologowanie-wersja-poprawiona/</link>
		<comments>http://noova.pl/blog/index.php/2009/04/10/google-i-autologowanie-wersja-poprawiona/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 20:03:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[na szybko]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[tricki]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/04/10/google-i-autologowanie-wersja-poprawiona/</guid>
		<description><![CDATA[Pamiętacie tamten wpis dotyczący autologowania bota googl&#8217;a?Otóż okazało się, że to nie działa.Chwilkę poszukałem, ponaprawiałem, poczekałem cierpliwie aż bot zaindeksuje ponownie stronę i już wiem czemu Otóż host bota nie kończy się na google.com a na googlebot.com.Czyli teraz cały kod to: &#60;?php if&#40;substr&#40;gethostbyaddr&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;, -13&#41;==&#34;googlebot.com&#34;&#41;&#123; $_SESSION&#91;'nick'&#93;==&#34;GoogleCrawler&#34;; //Czy jak tam logujecie sobie GoogleBota :P &#125;?&#62; I teraz [...]]]></description>
			<content:encoded><![CDATA[<p>Pamiętacie tamten wpis dotyczący autologowania bota googl&#8217;a?<br />Otóż okazało się, że to nie działa.<br />Chwilkę poszukałem, ponaprawiałem, poczekałem cierpliwie aż bot zaindeksuje ponownie stronę i już wiem czemu <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />Otóż host bota nie kończy się na <span style="font-style:italic;">google.com</span> a na <span style="font-style:italic;">googlebot.com</span>.<br />Czyli teraz cały kod to:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">gethostbyaddr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">13</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;googlebot.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nick'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;GoogleCrawler&quot;</span><span style="color: #339933;">;</span>  
<span style="color: #666666; font-style: italic;">//Czy jak tam logujecie sobie GoogleBota :P</span>
<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>I teraz (<span style="font-style:italic;">teoretycznie</span>) działać <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> <br />Ja już pozmieniałem w TGO i dam znać jak tylko google znowu utworzy kopię strony <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/04/10/google-i-autologowanie-wersja-poprawiona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tgo i zaproszenia</title>
		<link>http://noova.pl/blog/index.php/2009/04/04/tgo-i-zaproszenia/</link>
		<comments>http://noova.pl/blog/index.php/2009/04/04/tgo-i-zaproszenia/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 13:20:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[The Godfather Online]]></category>
		<category><![CDATA[free-time]]></category>
		<category><![CDATA[gry]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/04/04/tgo-i-zaproszenia/</guid>
		<description><![CDATA[Postanowiłem dzisiaj włączyć rejestracje do BETY TGO &#8211; w końcu jest już bardzo dużo zrobione A więc &#8211; żeby się zarejestrować trzeba zdobyć od osoby już zarejestrowanej kod zaproszenia, który trzeba wpisać potem przy rejestracji.A tak dla próby wygenerowałem 6 3 kodów, które oddaje w wasze (mam nadzieję dobre) ręce.. 6061b15e703b219d8cc874dfac34e9f0 75fda2ffeca7675a5902c5487d97a165 9d2f97d4f1ffe1e35db49103dc76ce86 Zaznaczam, że [...]]]></description>
			<content:encoded><![CDATA[<p>Postanowiłem dzisiaj włączyć rejestracje do BETY TGO &#8211; w końcu jest już bardzo dużo zrobione <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> <br />A więc &#8211; żeby się zarejestrować trzeba zdobyć od osoby już zarejestrowanej kod zaproszenia, który trzeba wpisać potem przy rejestracji.<br />A tak dla próby wygenerowałem <del datetime="2010-01-15T17:58:53+00:00">6</del> 3 kodów, które oddaje w wasze (mam nadzieję dobre) ręce..
<pre>6061b15e703b219d8cc874dfac34e9f0
75fda2ffeca7675a5902c5487d97a165
9d2f97d4f1ffe1e35db49103dc76ce86
</pre>
<p><span style="color:#FF0000">Zaznaczam, że dalej jest to beta i że stoi u mnie, na localu, także nie oczekujcie super-mega-hiper-ekstra prędkości <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Chociaż, jak na razie z innych kompów dostęp jest w miare szybki, no, pożyjemy &#8211; zobaczymy <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><br /><span style="color:green">Kody są jednorazowego użytku</span></p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/04/04/tgo-i-zaproszenia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reflinki</title>
		<link>http://noova.pl/blog/index.php/2009/03/17/reflinki/</link>
		<comments>http://noova.pl/blog/index.php/2009/03/17/reflinki/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 16:39:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[gry]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/03/17/reflinki/</guid>
		<description><![CDATA[W wielu grach występują tzw. &#8220;reflinki&#8221; &#8211; ktoś kliknie na specjalny link to któryś gracz dostaje jakieśtam niewielkie bonusy typu 5$/ileśtam szacunku itp. Przy czym warto ustawić aby dany gracz mógł otrzymać tylko raz na 24h profity od danej osoby. To zabieramy się do roboty Tworzymy sobie taką tabelę w bazie: CREATE TABLE `ref` &#40; [...]]]></description>
			<content:encoded><![CDATA[<p>W wielu grach występują tzw. &#8220;reflinki&#8221; &#8211; ktoś kliknie na specjalny link to któryś gracz dostaje jakieśtam niewielkie bonusy typu 5$/ileśtam szacunku itp.<br />
Przy czym warto ustawić aby dany gracz mógł otrzymać tylko raz na 24h profity od danej osoby.<br />
To zabieramy się do roboty <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Tworzymy sobie taką tabelę w bazie:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`ref`</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #ff0000;">`kiedy`</span> int<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
<span style="color: #ff0000;">`ip`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
<span style="color: #ff0000;">`user`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><span style="font-weight: bold;">Kiedy</span> &#8211; to pole odpowiada za czas (time()) &#8211; czyli kiedy dana osoba weszła na ten link<br />
<span style="font-weight: bold;">Ip</span> &#8211; IP delikwenta<br />
<span style="font-weight: bold;">User</span> &#8211; nick/można oczywiście użyć id usera na którego konto wpłyneły profity</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//Po odpowiednim przefiltrowaniu pobieramy dane gracza z bazy</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$istnieje</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Taki gracz nie istnieje!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$blad</span><span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;logged&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;login&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Nie mozesz atakowac samego siebie!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$blad</span><span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$blad</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$p</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">86400</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Czasami w ten sposób można oszukać proxy, ale tylko czasami..</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//Sprawdzamy czy z takiego IP ktoś w ciągu ostatnich 24 godzin wchodził na reflinka tej osoby</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$byl</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$now</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO ref VALUES ('<span style="color: #006699; font-weight: bold;">$now</span>','<span style="color: #006699; font-weight: bold;">$_SERVER[REMOTE_ADDR]</span>','<span style="color: #006699; font-weight: bold;">$info[0]</span>')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Wyświetlamy informacje do usera, mówiącą co właśnie się stało</span>
<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'{nick gracza} sprzatnął/eła Cię i w dodatku zgarnął/eła 50 dolarów!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$kasa</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">50</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE players SET kasa=<span style="color: #006699; font-weight: bold;">$kasa</span> WHERE nick='<span style="color: #006699; font-weight: bold;">$info[0]</span>'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' załatwił cie w ciagu ostatnich 24 godzin. Tym razem da Ci spokój'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/03/17/reflinki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Na szybko: Bezpieczeństwo sesji</title>
		<link>http://noova.pl/blog/index.php/2009/03/12/na-szybko-bezpieczenstwo-sesji/</link>
		<comments>http://noova.pl/blog/index.php/2009/03/12/na-szybko-bezpieczenstwo-sesji/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 20:42:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[gry]]></category>
		<category><![CDATA[na szybko]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/03/12/na-szybko-bezpieczenstwo-sesji/</guid>
		<description><![CDATA[Na szybko, bo jeszcze muszę coś dla TGO zrobić &#8211; inaczej czuje że albo Oliwier albo ktoś inny by mnie zadźgał ^^A więc dzisiaj pomówimy o małym skrypcie który (przynajmniej trochę) zwiększy bezpieczeństwo od strony użyszkodników. Zaczynajmy if &#40;!isset&#40;$_SESSION&#91;'start'&#93;&#41;&#41;&#123; session_regenerate_id&#40;&#41;; $_SESSION&#91;'start'&#93; = true; $_SESSION&#91;'ip'&#93; = $_SERVER&#91;'REMOTE_ADDR'&#93;; &#125; if&#40;$_SESSION&#91;'ip'&#93; !== $_SERVER&#91;'REMOTE_ADDR'&#93;&#41;&#123; session_regenerate_id&#40;&#41;; unset&#40;$_SESSION&#91;&#34;logged&#34;&#93;, $_SESSION&#91;&#34;nick&#34;&#93;&#41;; &#125;&#60;br /&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Na szybko, bo jeszcze muszę coś dla TGO zrobić &#8211; inaczej czuje że albo Oliwier albo ktoś inny by mnie zadźgał ^^<br />A więc dzisiaj pomówimy o małym skrypcie który (<span style="font-style:italic;">przynajmniej trochę</span>) zwiększy bezpieczeństwo od strony użyszkodników. <br />Zaczynajmy <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #990000;">session_regenerate_id</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ip'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ip'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!==</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #990000;">session_regenerate_id</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;logged&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;nick&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;</span>br <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>Kod już pewnie wiecie gdzie wkleić <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />A więc pora na małe objaśnienie &#8211; jeśli zmienna sesyjna &#8220;start&#8221; nie ma wartości true, to ustalamy nowe ID dla sesji i przydzielamy odpowiednie wartości.<br />Potem sprawdzamy czy IP zapisane w sesji zgadza się z tym z którego wchodzi user &#8211; jak nie, to ustalamy nowe ID sesji i wylogowywujemy delikwenta.<br />Zapobiegnie to tzw. &#8220;session hijacking&#8221; (zdzielcie mnie jeśli coś tutaj namieszałem).<br />Można dodać autowylogowywanie jeśli user nie był aktywny od powiedzmy 10 minut &#8211; to przynajmniej w pewnym stopniu powinno rozwiązać problem userów, którzy korzystając z kafejki nie wylogowywują się.<br />Oczywiście (<span style="font-style:italic;">a właściwie niestety</span>) żadne skrypty nie zastąpią mózgu, także warto gdzieś na stronie umieścić mały tekst o bezpieczeństwie konta itp. &#8211; nawet jeśli szanse, że ktoś go przeczyta są znikome</p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/03/12/na-szybko-bezpieczenstwo-sesji/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Antyflood na chacie</title>
		<link>http://noova.pl/blog/index.php/2009/03/08/antyflood-na-chacie/</link>
		<comments>http://noova.pl/blog/index.php/2009/03/08/antyflood-na-chacie/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 13:20:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/03/08/antyflood-na-chacie/</guid>
		<description><![CDATA[Witam.Dość ważą rzeczą jest zabezpieczenie swojego systemu chatu/shoutboxa jakimś skryptem, który by zapobiegał floodowaniu. Można by zrobić tabelę w bazie z zapisywanym ostatnim czasem wpisu z danego konta i jeśli różnica obecnego czasu a tamtego jest mniejsza niż 30sekund blokować wysłanie wiadomości, jednak to niezbyt mi sie podoba.Zdecydowałem się na sesje (co prawda gracz może [...]]]></description>
			<content:encoded><![CDATA[<p>Witam.<br />Dość ważą rzeczą jest zabezpieczenie swojego systemu chatu/shoutboxa jakimś skryptem, który by zapobiegał floodowaniu. <br />Można by zrobić tabelę w bazie z zapisywanym ostatnim czasem wpisu z danego konta i jeśli różnica obecnego czasu a tamtego jest mniejsza niż 30sekund blokować wysłanie wiadomości, jednak to niezbyt mi sie podoba.<br />Zdecydowałem się na sesje (co prawda gracz może się wylogować i zalogować ponownie, wtedy wszystkie dane sesyjne są niszczone, ale komu by się to chciało).<br />To do roboty <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />Podczas wysyłania wiadomości robimy tak:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'last_msg'</span><span style="color: #009900;">&#93;</span><span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Odczekaj 30 sekund przed wysłaniem wiadomości'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'last_msg'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Tutaj reszta kodu odpowiedzialna za wysyłanie wiadomości</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Nie było to trudne.<br />Ja w TGO jeszcze zastosowałem sprawdzanie:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$last_user_msg</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT `tresc` FROM `tabela_z_chatem` WHERE `nick`='<span style="color: #006699; font-weight: bold;">$zmienna_z_nickiem</span>' ORDER BY `id` DESC LIMIT 0, 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #000088;">$last_user_msg</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Nie spamuj.'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/03/08/antyflood-na-chacie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google i autologowanie</title>
		<link>http://noova.pl/blog/index.php/2009/03/03/google-i-autologowanie/</link>
		<comments>http://noova.pl/blog/index.php/2009/03/03/google-i-autologowanie/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 15:54:00 +0000</pubDate>
		<dc:creator>matergames</dc:creator>
				<category><![CDATA[gry]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[via www]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noova.pl/blog/index.php/2009/03/03/google-i-autologowanie/</guid>
		<description><![CDATA[Nie od dziś wiadomo, że im więcej stron bot googl&#8217;a zaindeksuje tym lepiej. Niestety, w wielu grach tzw. layout zewnętrzny jest dość skromny i obejmuję nie wiele ponad rejestracje i regulamin, rzadko ranking..O ile z botem googla do reklam adsense nie ma problemu, bo można kazać mu się zalogować, to niestety z zwykłym spiderem zrobić [...]]]></description>
			<content:encoded><![CDATA[<p>Nie od dziś wiadomo, że im więcej stron bot googl&#8217;a zaindeksuje tym lepiej. Niestety, w wielu grach tzw. layout zewnętrzny jest dość skromny i obejmuję nie wiele ponad rejestracje i regulamin, rzadko ranking..<br />O ile z botem googla do reklam adsense nie ma problemu, bo można kazać mu się zalogować, to niestety z zwykłym spiderem zrobić tak nie możemy.<br />Podczas rozmowy ze znajomym programistą (z tego miejsca chciałbym serdecznie pozdrowić Kayen&#8217;a <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) wpadłem na pomysł autologowania bota googl&#8217;a.<br />Można by zrobić listę IP tegoż bota, ale przeszukiwanie takiej tablicy nie jest zbytnio fajne..<br />Można też rozpoznawać bota po UA string, ale ten z kolei każdy user może sobie zmienić..<br />Ale za to host bota google jest zawsze w postaci crawl-IP.googlebot.com.<br />To bierzmy się do roboty ;P</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">gethostbyaddr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">11</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;.google.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
logujemy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kod umieszczamy najlepiej w jakimś pliku includowanym na początku, u mnie to core.php <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br />Pierwsza linijka to ucięcie 11 znaków z hosta i sprawdzenie czy otrzymany string to &#8220;.google.com&#8221;.<br />Potem zwyczajnie logujemy bota na jakieś stworzone do tego celu konto i voila <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <br />Ten sposób jakoś znacznie nie powinien obciążać serwera, a raczej jest to dobry sposób na sprawdzenie czy na stronie jest bot googl&#8217;a.<br />Można też analogicznie pobawić się z botami yahoo czy innych wyszukiwarek, ale to zostawiam wam <img src='http://noova.pl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Edit:<br />
Wersja poprawiona parę postów dalej.</p>
]]></content:encoded>
			<wfw:commentRss>http://noova.pl/blog/index.php/2009/03/03/google-i-autologowanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
