<?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>4coders &#187; PHP</title>
	<atom:link href="http://4coders.info/category/programming/php/feed" rel="self" type="application/rss+xml" />
	<link>http://4coders.info</link>
	<description>It's not about coding, dude!</description>
	<lastBuildDate>Sat, 20 Nov 2010 11:30:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Jak wysłać zdalnie wiadomość na Twittera?</title>
		<link>http://4coders.info/jak-wyslac-zdalnie-wiadomosc-na-twittera.html</link>
		<comments>http://4coders.info/jak-wyslac-zdalnie-wiadomosc-na-twittera.html#comments</comments>
		<pubDate>Mon, 20 Jul 2009 08:33:39 +0000</pubDate>
		<dc:creator>coder</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[wysyłanie do Twittera]]></category>
		<category><![CDATA[zdalne wiadomości]]></category>

		<guid isPermaLink="false">http://4coders.info/?p=181</guid>
		<description><![CDATA[Cześć hakerzy, Dziś drogie dzieci nauczymy się jak zdalnie wysłać wiadomość na najpopularniejszego w świecie mikrobloga czyli Twittera. Łaaał &#8230; function send2twitter&#40;$message, $twitter_user, $twitter_password&#41; &#123; $context = stream_context_create&#40; array &#40; 'http' =&#62; array&#40; 'method' =&#62; 'POST', 'header' =&#62; sprintf&#40;&#34;Authorization: Basic %s\r\n&#34;, base64_encode&#40;$twitter_user . ':' . $twitter_password&#41;&#41;.&#34;Content-type: application/x-www-form-urlencoded\r\n&#34;, 'content' =&#62; http_build_query&#40;array&#40;'status' =&#62; $message&#41;&#41;, 'timeout' =&#62; 5, [...]]]></description>
			<content:encoded><![CDATA[<p>Cześć hakerzy,</p>
<p>Dziś drogie dzieci nauczymy się jak zdalnie wysłać wiadomość na najpopularniejszego w świecie mikrobloga czyli <a href="http://twitter.com/" target="_blank">Twittera</a>. Łaaał &#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> send2twitter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$message</span><span style="color: #339933;">,</span> <span style="color: #000088;">$twitter_user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$twitter_password</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$context</span> <span style="color: #339933;">=</span> <span style="color: #990000;">stream_context_create</span><span style="color: #009900;">&#40;</span>
		<span style="color: #990000;">array</span> <span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'http'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
				<span style="color: #0000ff;">'method'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'POST'</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'header'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Authorization: Basic <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">base64_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$twitter_user</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$twitter_password</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;Content-type: application/x-www-form-urlencoded<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">http_build_query</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'status'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$message</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				<span style="color: #0000ff;">'timeout'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span>
			<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://twitter.com/statuses/update.xml'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #000088;">$context</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Jak widać banalnie prosta funkcja <em>send2twitter</em> jest tak prosta, że każdy hakier sobie dalej poradzi sam &#8230;  W przypadku pytań można teoretycznie zostawić komentarz.</p>
<h3  class="related_post_title">Zobacz inne ↓</h3><ul class="related_post"><li><a href="http://4coders.info/o-gotowaniu-bedzie-teraz.html" title="O gotowaniu będzie teraz">O gotowaniu będzie teraz</a> (0)</li><li><a href="http://4coders.info/jquery-13-wydane.html" title="jQuery 1.3 wydane">jQuery 1.3 wydane</a> (0)</li><li><a href="http://4coders.info/adsense-sie-konczy.html" title="AdSense się kończy">AdSense się kończy</a> (0)</li><li><a href="http://4coders.info/404-day.html" title="4.04 Day">4.04 Day</a> (0)</li><li><a href="http://4coders.info/position-fixed-w-internet-explorer.html" title="position: fixed w Internet Explorer">position: fixed w Internet Explorer</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://4coders.info/jak-wyslac-zdalnie-wiadomosc-na-twittera.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-site scripting &#8211; bezpieczeństwo formularzy</title>
		<link>http://4coders.info/cross-site-scripting-bezpieczenstwo-formularzy.html</link>
		<comments>http://4coders.info/cross-site-scripting-bezpieczenstwo-formularzy.html#comments</comments>
		<pubDate>Thu, 18 Dec 2008 16:37:42 +0000</pubDate>
		<dc:creator>coder</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[$_POST]]></category>
		<category><![CDATA[bezpieczeństwo]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[Cross-site scripting]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[czyszczenie]]></category>
		<category><![CDATA[formularze]]></category>
		<category><![CDATA[htmlspecialchars]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[porady]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[stripslashes]]></category>
		<category><![CDATA[strip_tags]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://4coders.info/?p=59</guid>
		<description><![CDATA[Cross-site scripting (XSS lub inaczej CSS), to jak wiadomo taki rodzaj ataku na serwisy WWW, najczęściej przez źle walidowane formularze i najczęściej przez wstrzykiwany przez nie kod JavaScript. Pokażę dziś jak można łatwo zabezpieczyć swoje formularze. Wystarczy kilka prostych wierszy kodu i po problemie. Najważniejsze jest aby całą tablicę $_POST umieć łatwo wyczyścić. Pokaże jak [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cross-site scripting</strong> (XSS lub inaczej CSS), to jak wiadomo taki <a rel="nofollow" target="_blank" href="http://pl.wikipedia.org/wiki/Cross-site_scripting">rodzaj ataku</a> na serwisy WWW, najczęściej przez źle walidowane formularze i najczęściej przez wstrzykiwany przez nie kod <strong>JavaScript</strong>.</p>
<p>Pokażę dziś jak można łatwo zabezpieczyć swoje formularze. Wystarczy kilka prostych wierszy kodu i po problemie. Najważniejsze jest aby całą tablicę <strong>$_POST</strong> umieć łatwo wyczyścić. Pokaże jak to zrobić rekurencyjnie.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Common<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> TidyString<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">return</span> <span style="color: #000088;">$str</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> TidyArray<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$array</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</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: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Common<span style="color: #339933;">::</span><span style="color: #004000;">TidyString</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</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: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Common<span style="color: #339933;">::</span><span style="color: #004000;">TidyArray</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</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;">return</span> <span style="color: #000088;">$array</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>W naszej klasie <strong>Common</strong>, widzimy dwie proste metody, <strong>TidyArray()</strong> oraz <strong>TidyString()</strong>. <strong>TidyArray()</strong> działa rekurencyjnie, obiega elementy tablicy i jeśli wartość nie jest tablicą to ją czyści poprzez <strong>TidyString()</strong>, jeśli element jest tablicą to wywołujemy naszą metodę rekurencyjnie na danym fragmencie tablicy. Wartości tablicy przekazujemy metodzie przez referencje.</p>
<p>Mając taka klasę możemy umieścić takie wywołanie gdzieś np. w pliku konfiguracyjnym naszej aplikacji.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$_POST</span> <span style="color: #339933;">=</span> Common<span style="color: #339933;">::</span><span style="color: #004000;">TidyArray</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Należy pamiętać, że nasza metoda <strong>TidyString()</strong> posiada podstawowe funkcje &#8222;czyszczące&#8221;, można sobie ją dowolnie rozszerzyć np. dodać funkcję <strong>strip_tags()</strong>. Dodam jeszcze, że należy być ostrożnym przy filtrowaniu danych po serializacji.</p>
<h3  class="related_post_title">Podobne ↓</h3><ul class="related_post"><li><a href="http://4coders.info/30-dobrych-praktyk-dla-poczatkujacych-z-html-i-css.html" title="30 dobrych praktyk dla początkujących z HTML i CSS">30 dobrych praktyk dla początkujących z HTML i CSS</a> (0)</li><li><a href="http://4coders.info/seksowne-przyciski-w-css.html" title="Seksowne przyciski w CSS">Seksowne przyciski w CSS</a> (0)</li><li><a href="http://4coders.info/jak-zrobic-przyjazne-wyszukiwarkom-logo.html" title="Jak zrobić przyjazne wyszukiwarkom logo?">Jak zrobić przyjazne wyszukiwarkom logo?</a> (2)</li><li><a href="http://4coders.info/jak-zaznaczyc-wiele-checkboxow-w-jquery.html" title="Jak zaznaczyć wiele checkboxów w jQuery?">Jak zaznaczyć wiele checkboxów w jQuery?</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://4coders.info/cross-site-scripting-bezpieczenstwo-formularzy.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dziury w Internet Explorer</title>
		<link>http://4coders.info/dziury-w-internet-explorer.html</link>
		<comments>http://4coders.info/dziury-w-internet-explorer.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 20:53:39 +0000</pubDate>
		<dc:creator>coder</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[błędy]]></category>
		<category><![CDATA[hyperlink]]></category>
		<category><![CDATA[hypertext reference]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[REQUEST_URI]]></category>

		<guid isPermaLink="false">http://4coders.info/?p=50</guid>
		<description><![CDATA[Szału nie ma, każdy zna, wszędzie są nie tylko w IE, podobno w Firefoxie jest jeszcze więcej ;-) Czytałem właśnie jakiś artykulik o tym, że Microsoft będzie dziś łatał jakąś super poważną dziurę i przypomniało mi się jak mnie dziś Explorer pięknie zaskoczył. Weźmy pod lupę taki prosty kod HTML: &#60;a href=&#34;&#34;&#62;link&#60;/a&#62; Czego się spodziewamy? [...]]]></description>
			<content:encoded><![CDATA[<p>Szału nie ma, każdy zna, wszędzie są nie tylko w IE, podobno w Firefoxie jest jeszcze więcej ;-) Czytałem właśnie jakiś artykulik o tym, że Microsoft będzie dziś łatał jakąś super poważną dziurę i przypomniało mi się jak mnie dziś Explorer pięknie zaskoczył.</p>
<p>Weźmy pod lupę taki prosty kod HTML:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;&quot;&gt;link&lt;/a&gt;</pre></div></div>

<p>Czego się spodziewamy? Że atrybut <em>href</em> (<strong>H</strong>ypertext <strong>REF</strong>erence) domyślenie przyjmie wartość tego co mamy obecnie w pasku adresu &#8211; tak jest w Firefox. W Internet Explorerze 7 nie zawsze. Dla przykładowego adresu:</p>
<p><code>http://server/folder/plik.xml</code></p>
<p>Nasz link będzie wskazywał na:</p>
<p><code>http://server/folder/</code></p>
<p>A potem klient do Ciebie pisze &#8211; &#8222;<em>czemu to k*** nie działa w IE</em>&#8222;!</p>
<p>Szybki fix takiej sytuacji w PHP, użyj:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span></pre></div></div>

<h3  class="related_post_title">Zobacz inne ↓</h3><ul class="related_post"><li><a href="http://4coders.info/jak-zaznaczyc-wiele-checkboxow-w-jquery.html" title="Jak zaznaczyć wiele checkboxów w jQuery?">Jak zaznaczyć wiele checkboxów w jQuery?</a> (2)</li><li><a href="http://4coders.info/najdrozsze-polskie-domeny.html" title="Najdroższe polskie domeny">Najdroższe polskie domeny</a> (1)</li><li><a href="http://4coders.info/internet-explorer-8.html" title="Internet Explorer 8">Internet Explorer 8</a> (0)</li><li><a href="http://4coders.info/jak-zablokowac-linkowanie-zdjec-z-naszej-domeny.html" title="Jak zablokować linkowanie zdjęć z naszej domeny?">Jak zablokować linkowanie zdjęć z naszej domeny?</a> (1)</li><li><a href="http://4coders.info/jquery-13-wydane.html" title="jQuery 1.3 wydane">jQuery 1.3 wydane</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://4coders.info/dziury-w-internet-explorer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

