<?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>Bogdan's Corner &#187; tutorial</title>
	<atom:link href="http://www.clawbc.ro/tag/tutorial/feed" rel="self" type="application/rss+xml" />
	<link>http://www.clawbc.ro</link>
	<description>Programator. Web developer. Consultant IT.</description>
	<lastBuildDate>Mon, 02 Aug 2010 09:47:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial PHP: Get real IP</title>
		<link>http://www.clawbc.ro/it/tutorial-php-get-real-ip.html</link>
		<comments>http://www.clawbc.ro/it/tutorial-php-get-real-ip.html#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:16:19 +0000</pubDate>
		<dc:creator>Bogdan</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.clawbc.ro/?p=80</guid>
		<description><![CDATA[În construirea unui site la un moment dat, probabil, este nevoie de aflarea IP-ului vizitatorului. Scopurile sunt destule, cel mai întâlnit (de exemplu pentru bloggeri) ar fi banarea comentatorilor nedoriţi. Alt exemplu ar fi ascunderea unor pagini (de exemplu cele de administrare) şi afişarea lor doar pentru anumiţi useri. Şi exemplele ar putea continua&#8230;
Problema apare [...]]]></description>
			<content:encoded><![CDATA[<p>În construirea unui site la un moment dat, probabil, este nevoie de aflarea IP-ului vizitatorului. Scopurile sunt destule, cel mai întâlnit (de exemplu pentru bloggeri) ar fi banarea comentatorilor nedoriţi. Alt exemplu ar fi ascunderea unor pagini (de exemplu cele de administrare) şi afişarea lor doar pentru anumiţi useri. Şi exemplele ar putea continua&#8230;</p>
<p>Problema apare atunci când vizitatorul foloseşte un proxy, iar IP-ul nu este cel al userului, ci cel al proxy-ului. Am găsit un mic cod care face exact lucrul ăsta, găseşte IP-ul din spatele proxy-ului. Încă nu l-am încercat pe <span id="more-80"></span>proxy-uri anonime (unde prea ai ce face, n-o să afli IP-ul original), dar pentru cât m-am jucat eu cu el s-a comportat bine.</p>
<blockquote><p><span style="font:Courier New"><span style="color: #800000;"><strong>function</strong></span> ip_first(<span style="color: #008080;">$ips</span>) {<br />
<span style="color: #800000;"><strong> if</strong></span> (<span style="color: #000000;">(</span><span style="color: #008080;">$pos</span> = strpos(<span style="color: #008080;">$ips</span>, &#8216;,&#8217;)) != <span style="color: #800000;"><strong>false</strong></span>) {<br />
<span style="color: #800000;"><strong> return</strong></span> substr(<span style="color: #008080;">$ips</span>, 0, <span style="color: #008080;">$pos</span>);<br />
} <span style="color: #800000;"><strong>else</strong></span> {<br />
<span style="color: #800000;"><strong> return</strong></span> <span style="color: #008080;">$ips</span>;<br />
}<br />
}</span></p>
<p><span style="color: #800000;"><strong>function</strong></span> ip_valid(<span style="color: #008080;">$ips</span>) {<br />
<span style="color: #800000;"><strong> if</strong></span> (<span style="color: #800000;"><strong>isset</strong></span>(<span style="color: #008080;">$ips</span>)) {<br />
<span style="color: #008080;"> $ip</span> = ip_first(<span style="color: #008080;">$ips</span>);<br />
<span style="color: #008080;"> $ipnum</span> = ip2long(<span style="color: #008080;">$ip</span>);<br />
if (<span style="color: #008080;">$ipnum</span> !== -1 &amp;&amp; <span style="color: #008080;">$ipnum</span> !== <span style="color: #800000;"><strong>false</strong></span> &amp;&amp; (long2ip(<span style="color: #008080;">$ipnum</span>) === <span style="color: #008080;">$ip</span>)) { <span style="color: #008000;">// PHP 4 and PHP 5</span><br />
if ((<span style="color: #008080;">$ipnum</span> &lt; 167772160   || $ipnum &gt;   184549375) &amp;&amp; <span style="color: #008000;">// Not in 10.0.0.0/8</span><br />
(<span style="color: #008080;">$ipnum</span> &lt; -1408237568 || $ipnum &gt; -1407188993) &amp;&amp; <span style="color: #008000;">// Not in 172.16.0.0/12</span><br />
(<span style="color: #008080;">$ipnum</span> &lt; -1062731776 || $ipnum &gt; -1062666241))   <span style="color: #008000;">// Not in 192.168.0.0/16</span><br />
<span style="color: #800000;"><strong> return true</strong></span>;<br />
}<br />
}<br />
<span style="color: #800000;"><strong> return false</strong></span>;<br />
}</p>
<p><span style="color: #800000;"><strong>function</strong></span> get_real_ip() {<br />
<span style="color: #008080;"> $check</span> = <span style="color: #800000;"><strong>array</strong></span>(<span style="color: #0000ff;"><strong>&#8216;HTTP_X_FORWARDED_FOR&#8217;, &#8216;HTTP_X_FORWARDED&#8217;,<br />
&#8216;HTTP_FORWARDED_FOR&#8217;, &#8216;HTTP_FORWARDED&#8217;,<br />
&#8216;HTTP_VIA&#8217;, &#8216;HTTP_X_COMING_FROM&#8217;, &#8216;HTTP_COMING_FROM&#8217;</strong></span>);</p>
<p><span style="color: #800000;"><strong>foreach</strong></span> (<span style="color: #008080;">$check</span> as <span style="color: #008080;">$c</span>) {<br />
<span style="color: #800000;"><strong> if</strong></span> (ip_valid(<span style="color: #008080;">&amp;$_SERVER</span>[<span style="color: #008080;">$c</span>])) {<br />
<span style="color: #800000;"><strong> return</strong></span> ip_first(<span style="color: #008080;">$_SERVER</span>[<span style="color: #008080;">$c</span>]);<br />
}<br />
}</p>
<p><span style="color: #800000;"><strong>return</strong></span> <span style="color: #008080;">$_SERVER</span>[<span style="color: #0000ff;"><strong>'REMOTE_ADDR'</strong></span>];<br />
}</p></blockquote>
<p>de <a rel="boobkmark" href="http://www.codepost.org/browse/snippets/20" target="_blank">aici</a>.</p>
<h3  class="related_post_title">Post-uri asemănătoare</h3><ul class="related_post"><li><a href="http://www.clawbc.ro/it/istoria-internetului.html" title="Istoria Internetului">Istoria Internetului</a></li><li><a href="http://www.clawbc.ro/online/safe-browsing.html" title="Dacă vrei să navighezi în siguranţă">Dacă vrei să navighezi în siguranţă</a></li><li><a href="http://www.clawbc.ro/online/trilulilu-2-5-mil-euro.html" title="Trilulilu: 2,5 mil. € în 16 luni?">Trilulilu: 2,5 mil. € în 16 luni?</a></li><li><a href="http://www.clawbc.ro/it/me-linkedin.html" title="Me LinkedIn">Me LinkedIn</a></li><li><a href="http://www.clawbc.ro/it/bobby-voicu-manager-yahoo.html" title="Bobby Voicu &#8211; Community Manager Yahoo! Romania">Bobby Voicu &#8211; Community Manager Yahoo! Romania</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.clawbc.ro/it/tutorial-php-get-real-ip.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
