<?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>Recaptchia &#8211; Strona Szoguna</title>
	<atom:link href="https://szogun1987.pl/show/tag/recaptchia/feed/" rel="self" type="application/rss+xml" />
	<link>https://szogun1987.pl</link>
	<description>Jeszcze wstawię tutaj jakiś głęboki cytat</description>
	<lastBuildDate>Fri, 10 Sep 2010 22:00:00 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3.2</generator>
	<item>
		<title>Nowa wersja bloga</title>
		<link>https://szogun1987.pl/show/nowa-wersja-bloga/4/</link>
		
		<dc:creator><![CDATA[szogun1987]]></dc:creator>
		<pubDate>Fri, 10 Sep 2010 22:00:00 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Recaptchia]]></category>
		<guid isPermaLink="false">https://szogun1987.pl/?p=4</guid>

					<description><![CDATA[Korzystając z okazji przymusowego nieróbstwa związanego ze zwolnieniem lekarskim postanowiłem dokończyć pracę nad Blogiem.
A że nie chciało mi się bawić z instalacją Flex Builde]]></description>
										<content:encoded><![CDATA[<p>Korzystając z okazji przymusowego nier&oacute;bstwa związanego ze zwolnieniem lekarskim postanowiłem dokończyć pracę nad Blogiem.</p>
<p>A że nie chciało mi się bawić z instalacją Flex Builder&#039;a na Ubuntu przepisałem całość na &quot;gołego&quot; PHP&#039;a.</p>
<p>W czasie prac nad nowym wyglądem postanowiłem zastąpić swoją bardzo niedoskonałą Captchę zabawką ze stajni Googla noszącym nazwę &quot;ReCaptchia&quot;. Jest to rozwiązanie darmowe, bardzo skuteczne(większość udanych masowych łamań tego systemu opiera się na pracy Hindus&oacute;w) , posiada wsparcie dla os&oacute;b niewidomych, a na dodatek (jak mi się zdawało) jest łatwe w instalacji na każdej stronie.</p>
<p>O ile z wyświetleniem dialogu nie było większych problem&oacute;w:</p>
<div class="code">
<pre class="brush:">echo recaptcha_get_html($publicKey);</pre>
</div>
<p>O tyle weryfikacja poprawności wprowadzonego obrazka okazała się znacznie trudniejsza ponieważ standardowe wywołanie:</p>
<div class="code">
<pre class="prettyprint lang-php">$resp = recaptcha_check_answer ($privateKey,
                                $_SERVER[&quot;REMOTE_ADDR&quot;],
                                $_POST[&quot;recaptcha_challenge_field&quot;],
                                $_POST[&quot;recaptcha_response_field&quot;]);
if($resp-&gt;is_valid)
{
    //TODO: Obsługa zapisu
} else {
    // TODO: Wyświetlić komunikat o błędzie
}</pre>
</div>
<p>Sprawiała że moja strona kończyła się komunikatem &#039;Could not open socket&#039;.</p>
<p>Po dłuższym śledztwie okazało się że komunikat ten pojawia się wielu użytkownikom a błąd z nim związany jest nierozwiązany od dw&oacute;ch lat <a href="http://code.google.com/p/recaptcha/issues/detail?id=26" target="_blank">link</a>.</p>
<p>Jest on bardzo często spowodowany blokowaniem przez firmy hostujące połączeń wychodzących na port 80. Ponieważ walka z OVH o otwarcie portu wydała mi się nie do wygrania (Błąd fsockopen Connection refused jest dość częsty na stronach hostowanych przez tą firmę &#8211; wystarczy wpisać ten komunikat w google) postanowiłem poszukać obejścia, kt&oacute;rym okazały się być serwery Proxy, kt&oacute;re przekierowują połączenie z jednego portu na inny port innego serwera.</p>
<p>Recaptchia nie wspiera Proxy na szczęście biblioteka PHP kt&oacute;ra zapewnia dostęp do Recaptchia jest w pełni Open Source&#039;owa więc otworzyłem ją sobie i zmieniłem metodę _recaptcha_http_post dodając jej parametry $proxyHost = null i $proxyPort = null do kt&oacute;rych można przekazać adres i port serwera proxy. Oczywiście musiałem zmodyfikować też ciało funkcji dodając kod modyfikujący treść zapytania HTTP, oraz musiałem zmodyfikować funkcję recaptcha_check_answer tak aby mogła przekazać informacje na temat proxy do ww. metody.</p>
<p>Ostatecznie kod sprawdzający poprawność tekstu z obrazka wygląda następująco:</p>
<div class="code">
<pre class="prettyprint lang-php">$resp = recaptcha_check_answer ($privateKey,
                                $_SERVER[&quot;REMOTE_ADDR&quot;],
                                $_POST[&quot;recaptcha_challenge_field&quot;],
                                $_POST[&quot;recaptcha_response_field&quot;],
                                array(),
                                &#039;190.90.128.233&#039;, #adres serwera proxy
                                8080);</pre>
</div>
<p>Moje zmiany w bibliotece są wysłane do googla jako załącznik do <a href="http://code.google.com/p/recaptcha/issues/detail?id=80" target="_blank">Zadania nr 80</a> w projekcie Recaptcha mam nadzieję że zostaną włączone do oficjalnej wersji tej biblioteki.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
