<?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>Advanced Programming Stories &#187; mod_rewrite</title>
	<atom:link href="http://developstories.gr/cat/mod_rewrite/feed/" rel="self" type="application/rss+xml" />
	<link>http://developstories.gr</link>
	<description>advanced web development techniques &#38; reverse engineering stories</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:57:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Site verification over mod_rewrite or error 404 redirect</title>
		<link>http://developstories.gr/php/site-verification-over-mod_rewrite-or-error-404-redirect/</link>
		<comments>http://developstories.gr/php/site-verification-over-mod_rewrite-or-error-404-redirect/#comments</comments>
		<pubDate>Tue, 06 May 2008 09:46:38 +0000</pubDate>
		<dc:creator>thek</dc:creator>
				<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[404 error]]></category>
		<category><![CDATA[site verification]]></category>

		<guid isPermaLink="false">http://developstories/?p=16</guid>
		<description><![CDATA[Ένας τρόπος για να ελέγχεις αν ανήκει ένα domain σε κάποιον, είναι να του ζητήσεις να βάλει ένα αρχείο (zero byte) στον docroot του site του, όπως γίνεται στο google html verification. Αυτό είναι εύκολο να το ελέγξεις με php χρησιμοποιώντας την fopen ή την fsockopen. Τι γίνεται όμως αν υπάρχει rewrite module για να [...]]]></description>
			<content:encoded><![CDATA[<p>Ένας τρόπος για να ελέγχεις αν ανήκει ένα <a href="http://en.wikipedia.org/wiki/Domain">domain</a> σε κάποιον, είναι να του ζητήσεις να βάλει ένα αρχείο (zero byte) στον docroot του site του, όπως γίνεται στο <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35658&amp;ctx=sibling">google html verification</a>. Αυτό είναι εύκολο να το ελέγξεις με <a href="http://www.php.net/">php</a> χρησιμοποιώντας την <a href="http://www.php.net/fopen">fopen</a> ή την <a href="http://www.php.net/fsockopen">fsockopen</a>. Τι γίνεται όμως αν υπάρχει <a href="http://en.wikipedia.org/wiki/Rewrite_engine">rewrite</a> module για να έχει <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=76329">friendly urls</a> (<a href="http://en.wikipedia.org/wiki/Search_engine_optimization">seo</a>) ή <a href="http://en.wikipedia.org/wiki/404_error">error 404</a> με redirect σε κάποια άλλη σελίδα (παλιά τεχνική – σήμερα αποφεύγεται για διάφορους λόγους). Σε αυτές τις δύο περιπτώσεις, χωρίς να υπάρχει το αρχείο, ο έλεγχος θα βρίσκει ότι υπάρχει. Η λύση είναι πολύ απλή, ανοίγουμε το connection και διαβάζουμε τα raw data. Αν δεν υπάρχει η σελίδα το connection θα αποτύχει. Αν όμως πετύχει το connection τότε θα πρέπει να μην υπάρχουν καθόλου raw data.</p>
<pre class="brush: php;">
function url_valid($url) {
	$found=true;
	$fp=@fopen($url,&quot;r&quot;);
	if ($fp) {
		if (fgetc($fp)) $found=false;
		fclose($fp);
	} else
		$found=false;
	return $found;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/php/site-verification-over-mod_rewrite-or-error-404-redirect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create thumbs with mod_rewrite, php and gd2</title>
		<link>http://developstories.gr/php/12/</link>
		<comments>http://developstories.gr/php/12/#comments</comments>
		<pubDate>Fri, 02 May 2008 09:41:06 +0000</pubDate>
		<dc:creator>thek</dc:creator>
				<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://developstories/?p=12</guid>
		<description><![CDATA[Σε συνεργασία με τον Παρασκευά Σμυρλάκη, υπεύθυνο του τμήματος Seo Development της εταιρείας Netwerk, σκεφτήκαμε ένα έξυπνο τρόπο για να φτιάχνεις thumbs on the fly σε μία gallery από φωτογραφίες. Εκμεταλλευτήκαμε τις δυνατότητες του mod rewrite, για να ελέγχουμε αν υπάρχει το thumb αρχείο στον δίσκο, και αν δεν υπάρχει να το κατευθύνουμε σε ένα [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Σε συνεργασία με τον Παρασκευά Σμυρλάκη, υπεύθυνο του τμήματος <a href="http://en.wikipedia.org/wiki/Search_engine_optimization"><span lang="EN-US">Seo</span><span lang="EN-US"> </span><span lang="EN-US">Development</span></a><span lang="EN-US"> </span>της εταιρείας <a href="http://www.netwerk.gr/"><span lang="EN-US">Netwerk</span></a>, σκεφτήκαμε ένα έξυπνο τρόπο για να φτιάχνεις <span lang="EN-US">thumbs</span><span lang="EN-US"> </span><span lang="EN-US">on</span><span lang="EN-US"> </span><span lang="EN-US">the</span><span lang="EN-US"> </span><span lang="EN-US">fly</span><span lang="EN-US"> </span>σε μία <span lang="EN-US">gallery</span><span lang="EN-US"> </span>από φωτογραφίες. Εκμεταλλευτήκαμε τις δυνατότητες του <a href="http://en.wikipedia.org/wiki/Rewrite_engine#Apache"><span lang="EN-US">mod</span><span lang="EN-US"> </span><span lang="EN-US">rewrite</span></a>, για να ελέγχουμε αν υπάρχει το <span lang="EN-US">thumb</span><span lang="EN-US"> </span>αρχείο στον δίσκο, και αν δεν υπάρχει να το κατευθύνουμε σε ένα <a href="http://en.wikipedia.org/wiki/PHP"><span lang="EN-US">php</span></a><span lang="EN-US"><a href="http://en.wikipedia.org/wiki/PHP"> script</a> </span>που με την σειρά του το δημιουργεί.</p>
<p class="MsoNormal">Ποιο συγκεκριμένα έχουμε μία σελίδα που θέλουμε να δημιουργήσουμε ένα <span lang="EN-US">thumb</span><span lang="EN-US"> </span>στο <a href="http://en.wikipedia.org/wiki/HTML"><span lang="EN-US">html</span></a><span lang="EN-US"> </span>δίνουμε απλά την διαδρομή του <span lang="EN-US">thumb</span><span lang="EN-US"> </span>&lt;<span lang="EN-US">img</span><span lang="EN-US"> </span><span lang="EN-US">src</span>=”/<span lang="EN-US">photos</span>/<span lang="EN-US">thumb</span>/<span lang="EN-US">demo</span>.<span lang="EN-US">jpg</span>” /&gt;.</p>
<p class="MsoNormal">Αυτό που χρειάζεται είναι ένα .<a href="http://en.wikipedia.org/wiki/Htaccess"><span lang="EN-US">htaccess</span></a><span lang="EN-US"> </span>στο <span lang="EN-US">folder</span><span lang="EN-US"> </span><span lang="EN-US">thumb</span><span lang="EN-US"> </span>με το παρακάτω.</p>
<p class="MsoNormal"><span style="font-style: italic; font-size: 85%;"><span lang="EN-GB">RewriteEngine on<br />
RewriteBase /<br />
RewriteCond %{REQUEST_FILENAME} !-f</span><br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
<span lang="EN-GB">RewriteRule ^(.*) /thumb.php?ph=$1&amp;w=100&amp;h=100&amp;q=70 [L,QSA]</span></span><em></em></p>
<p class="MsoNormal">Για όσους δεν το καταλάβανε, ελέγχουμε αν είναι <span lang="EN-US">file</span> ή <span lang="EN-US">folder</span><span lang="EN-US"> </span>με τα <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond"><span lang="EN-GB">RewriteCond</span></a> και αν δεν είναι το κατευθύνουμε με <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule"><span lang="EN-GB">RewriteRule</span></a><em><span lang="EN-GB"> </span></em>στο <span lang="EN-GB">thumb</span>.<span lang="EN-GB">php</span> με παραμέτρους το $<span lang="EN-US">ph</span><span lang="EN-US"> </span>το όνομα του αρχείου και $<span lang="EN-US">w</span> &amp; $<span lang="EN-US">h</span><span lang="EN-US"> </span>το μέγεθος του <span lang="EN-US">thumb</span><span lang="EN-US"> </span>και $<span lang="EN-US">q</span><span lang="EN-US"> </span>την ποιότητα του <a href="http://en.wikipedia.org/wiki/JPEG"><span lang="EN-US">jpeg</span></a>.</p>
<p class="MsoNormal">Το <span lang="EN-US">php</span><span lang="EN-US"> </span><span lang="EN-US">script</span><span lang="EN-US"> </span><span lang="EN-US">thumb</span>.<span lang="EN-US">php</span><span lang="EN-US"> </span>κατασκευάζει το <span lang="EN-US">thumb</span><span lang="EN-US"> </span>μεγέθους ($<span lang="EN-US">w</span><span lang="EN-US"> </span><span lang="EN-US">x</span> $<span lang="EN-US">h</span>), χρησιμοποιώντας το <a href="http://www.php.net/manual/en/internals2.structure.php"><span lang="EN-US">php extension</span></a><span lang="EN-US"> </span>για <a href="http://www.php.net/gd"><span lang="EN-US">gd</span>2</a>. Διαβάζει από το /<span lang="EN-US">photos</span>/<span lang="EN-US">normal</span>/ την μεγάλη φωτογραφία δημιουργεί το <span lang="EN-US">thumb</span><span lang="EN-US"> </span>και το αποθηκεύει στον φάκελο /<span lang="EN-US">photos</span>/<span lang="EN-US">thumb</span>/ με το όνομα που έχει περάσει στην μεταβλητή $<span lang="EN-US">ph</span>. Επειδή αυτό το <span lang="EN-US">script</span><span lang="EN-US"> </span>τρέχει μέσα από το <span lang="EN-US">img</span><span lang="EN-US"> </span><span lang="EN-US">tag</span>, επιστρέφει με <a href="http://en.wikipedia.org/wiki/List_of_HTTP_headers"><span lang="EN-US">header</span></a><span lang="EN-US"> </span>για <span lang="EN-US">jpeg</span><span lang="EN-US"> </span>και τα <a href="http://en.wikipedia.org/wiki/Raw_data"><span lang="EN-US">raw</span><span lang="EN-US"> </span><span lang="EN-US">data</span></a><span lang="EN-US"> </span>του <span lang="EN-US">thumb</span>.</p>
<pre class="brush: php;">
&lt;?php
header(&quot;Content-type: image/jpeg&quot;);
$imNormal=ImageCreateFromString(file_get_contents(&quot;photos/normal/&quot;.$_GET['ph']));
$imThumb=ImageCreateTrueColor($_GET['w'],$_GET['h']);
ImageCopyResampled($imThumb,$imNormal,0,0,0,0,$_GET['w'],$_GET['h'],ImageSX($imNormal),ImageSY($imNormal));
ImageJpeg($imThumb,&quot;photos/thumbs/&quot;.$_GET['ph'],$_GET['q']);
ImageJpeg($imThumb,&quot;&quot;,$_GET['q']);
ImageDestroy($imNormal);
ImageDestroy($imThumb);
?&gt;
</pre>
<p class="MsoNormal">Εμείς πάντως κάναμε ένα ακόμα βήμα παραπέρα, και με δύο .<span lang="EN-US">htaccess</span><span lang="EN-US"> </span>καταφέραμε κάτι ακόμα ποιο <span lang="EN-US">advanced</span>. Το αφήνω στην φαντασία σας.</p>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/php/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
