<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>SUCKUP.de: Mein IT-Blog</title><link>http://suckup.de</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/voku-online" /><description>Mein IT-Blog, in welchem ich über Linux, Windows, Programmierung und dem Web 2.0 schreibe, halt alles was ich selber nicht vergessen möchte.</description><language>de-DE-lite</language><lastBuildDate>Wed, 05 Jun 2013 01:47:18 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.5.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/voku-online" /><feedburner:info uri="voku-online" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/voku-online" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fvoku-online" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item><title>php – die nächsten Mittwoche berechnen</title><link>http://feedproxy.google.com/~r/voku-online/~3/wO66plm5Sis/</link><category>PHP</category><category>nächsten Mittwoch berechnen</category><category>nächsten Montag berechnen</category><category>next Wednesday</category><category>strtotime</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Wed, 05 Jun 2013 01:47:02 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5461</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>&#8220;Mittwoche&#8221; klingt irgendwie falsch &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>for ($i = 0; $i < = 4; $i++) {
	if ($i == 0) {
		$next_wednesday[$i] = date("Y-m-d", strtotime("next Wednesday"));
	}
	else {
		$next_wednesday[$i] = date("Y-m-d", strtotime("next Wednesday", strtotime($next_wednesday[($i-1)])));
	}
}

// DEBUG
print_r($next_wednesday);</pre>

<div class="wp_rp_wrap  wp_rp_plain" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-839" data-post-type="none" ><a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/20.jpg" alt="PHP optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_title">PHP optimieren</a></li><li data-position="1" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="2" data-poid="in-528" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="Twitter automatisieren!" /></a>9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="3" data-poid="in-350" data-post-type="none" ><a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/28.jpg" alt="APC + eAccelerator + XCache" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_title">APC + eAccelerator + XCache</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/wO66plm5Sis" height="1" width="1"/>]]></content:encoded><description>&amp;#8220;Mittwoche&amp;#8221; klingt irgendwie falsch &amp;#8230;  
for ($i = 0; $i  = 4; $i++) {
	if ($i == 0) {
		$next_wednesday[$i] = date("Y-m-d", strtotime("next Wednesday"));
	}
	else {
		$next_wednesday[$i] = date("Y-m-d", strtotime("next Wednesday", strtotime($next_wednesday[($i-1)])));
	}
}

//  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/php-howto/php-die-naechsten-mittwoche-berechnen/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://suckup.de/howto/php-howto/php-die-naechsten-mittwoche-berechnen/</feedburner:origLink></item><item><title>crontab: Tipp</title><link>http://feedproxy.google.com/~r/voku-online/~3/8w-gB2bySW8/</link><category>Linux</category><category>ubuntuusers.de</category><category>cron</category><category>cronjob</category><category>crontab</category><category>crontap</category><category>linux-cron</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Tue, 04 Jun 2013 00:25:16 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5456</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Einfach folgenden Kommentar in der <a title="crontab - HowTo" href="http://suckup.de/linux/crontab/" target="_blank">crontab</a> eintragen &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>#* * * * * command to be executed<br />#- &#8211; - &#8211; -<br />#| | | | |<br />#| | | | +&#8212;&#8211; day of week (0 &#8211; 6) (Sunday=0)<br />#| | | +&#8212;&#8212;- month (1 &#8211; 12)<br />#| | +&#8212;&#8212;&#8212; day of month (1 &#8211; 31)<br />#| +&#8212;&#8212;&#8212;&#8211; hour (0 &#8211; 23)<br />#+&#8212;&#8212;&#8212;&#8212;- min (0 &#8211; 59)</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-382" data-post-type="none" ><a href="http://suckup.de/linux/crontab/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/02/chuleta_cron-150x150.png" alt="crontab" /></a>8. Februar 2010 -- <a href="http://suckup.de/linux/crontab/" class="wp_rp_title">crontab</a></li><li data-position="1" data-poid="in-840" data-post-type="none" ><a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="MySQL-Server optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_title">MySQL-Server optimieren</a></li><li data-position="2" data-poid="in-3227" data-post-type="none" ><a href="http://suckup.de/linux/hacken-fuer-anfaenger/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/09/mim-150x150.png" alt="Hacken f&uuml;r Anf&auml;nger" /></a>18. September 2010 -- <a href="http://suckup.de/linux/hacken-fuer-anfaenger/" class="wp_rp_title">Hacken f&uuml;r Anf&auml;nger</a></li><li data-position="3" data-poid="in-4671" data-post-type="none" ><a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/14.jpg" alt="Screenshots von Android via shell" /></a>9. Juni 2011 -- <a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_title">Screenshots von Android via shell</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/8w-gB2bySW8" height="1" width="1"/>]]></content:encoded><description>Einfach folgenden Kommentar in der crontab eintragen &amp;#8230;  
&amp;#160;
#* * * * * command to be executed#- &amp;#8211; - &amp;#8211; -#&amp;#124; &amp;#124; &amp;#124; &amp;#124; &amp;#124;#&amp;#124; &amp;#124; &amp;#124; &amp;#124; +&amp;#8212;&amp;#8211; day of week (0 &amp;#8211; 6) (Sunday=0)#&amp;#124; &amp;#124; &amp;#124; +&amp;#8212;&amp;#8212;- month (1 &amp;#8211; 12)#&amp;#124; &amp;#124; +&amp;#8212;&amp;#8212;&amp;#8212; day of month (1 &amp;#8211; 31)#&amp;#124; +&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211; hour (0 &amp;#8211; 23)#+&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- min (0 &amp;#8211; 59)

&amp;#196;hnliche Blog-Eintr&amp;#228;ge8. Februar 2010 --  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/linux/crontab-tipp/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://suckup.de/linux/crontab-tipp/</feedburner:origLink></item><item><title>php – Regular Expression Schnipsel – Escaping “/”</title><link>http://feedproxy.google.com/~r/voku-online/~3/Jz9U-SlYeWw/</link><category>PHP</category><category>Beispiel</category><category>Delimiter #</category><category>RegEx</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Tue, 25 Sep 2012 02:56:00 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5405</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den <em>Delimiter</em>  &#8220;#&#8221; verbessern kann &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123";
#$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/";
$suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#";
preg_match($suchmuster, $zeichenkette, $treffer);
print_r($treffer);
</pre>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Ausgabe:</span></p>
<p>Array ( [0] =&gt; suckup.de Informationen / test, lall / Linux / )</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5364" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="php &#8211; Regular Expression Schnipsel &#8211; Links aus &lt;a&gt;-Tags" /></a>10. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_title">php &#8211; Regular Expression Schnipsel &#8211; Links aus <a>-Tags</a></li><li data-position="1" data-poid="in-528" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="Twitter automatisieren!" /></a>9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="2" data-poid="in-839" data-post-type="none" ><a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/20.jpg" alt="PHP optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/php-optimieren/" class="wp_rp_title">PHP optimieren</a></li><li data-position="3" data-poid="in-5394" data-post-type="none" ><a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" alt="UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;" /></a>24. September 2012 -- <a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_title">UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/Jz9U-SlYeWw" height="1" width="1"/>]]></content:encoded><description>Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den Delimiter  &amp;#8220;#&amp;#8221; verbessern kann &amp;#8230;  
$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123";
#$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/";
$suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#";
preg_match($suchmuster,  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/</feedburner:origLink></item><item><title>UTF-8 Byte Order Mark (BOM) in php-Dateien …</title><link>http://feedproxy.google.com/~r/voku-online/~3/ODW7owzMjkM/</link><category>Linux</category><category>PHP</category><category>BOM</category><category>Byte_Order_Mark</category><category>entfernen</category><category>remove</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Mon, 24 Sep 2012 07:45:26 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5394</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>for Linux (shell):</p>
<p>&nbsp;</p>
<p>BOM aus allen PHP-Dateien entfernen:</p>
<p>
<pre>find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;</pre>
</p>
<p>&nbsp;</p>
<p>PHP-Dateien mit BOM anzeigen:</p>
<p>
<pre>find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;</pre>
</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">mehr Infos: </span></p>
<p>sed &#8211; <a title="sed" href="http://suckup.de/linux/streameditor-sed/">suckup.de/linux/streameditor-sed</a></p>
<p>find &#8211; <a title="find" href="http://suckup.de/linux/find-linux/">suckup.de/linux/find-linux</a></p>
<p>Byte Order Mark &#8211; <a title="Byte_Order_Mark (BOM)" href="http://de.wikipedia.org/wiki/Byte_Order_Mark" target="_blank">http://de.wikipedia.org/wiki/Byte_Order_Mark</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5364" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="php &#8211; Regular Expression Schnipsel &#8211; Links aus &lt;a&gt;-Tags" /></a>10. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/" class="wp_rp_title">php &#8211; Regular Expression Schnipsel &#8211; Links aus <a>-Tags</a></li><li data-position="1" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="2" data-poid="in-528" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="Twitter automatisieren!" /></a>9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="3" data-poid="in-350" data-post-type="none" ><a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/28.jpg" alt="APC + eAccelerator + XCache" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_title">APC + eAccelerator + XCache</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/ODW7owzMjkM" height="1" width="1"/>]]></content:encoded><description>for Linux (shell):
&amp;#160;
BOM aus allen PHP-Dateien entfernen:

find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;

&amp;#160;
PHP-Dateien mit BOM anzeigen:

find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;

&amp;#160;
mehr Infos: 
sed &amp;#8211; suckup.de/linux/streameditor-sed
find &amp;#8211;  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/</feedburner:origLink></item><item><title>php – Regular Expression Schnipsel – Links aus -Tags</title><link>http://feedproxy.google.com/~r/voku-online/~3/M819LtXKrHE/</link><category>PHP</category><category>Regular Expression Schnipsel</category><category>Reguläre Ausdrücke</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Mon, 10 Sep 2012 14:29:42 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5364</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Habe zu dem Thema (&#8220;Regul&auml;re Ausdr&uuml;cke&#8221;) bereits ausf&uuml;hrlicher geschrieben -&gt; <a href="http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/">http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/</a> &lt;- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann &#8230; <img src='http://suckup.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre>&lt;?php
$lall =' lall lall123
&lt;a style="gfsedfd;" href="http://test1.de"&gt;test
&lt;a style="gfsedfd;" href="test2.php" target="_blank&gt;test&lt;/a&gt; dsadsa
&lt;a style="gfsedfd;" href="http://test3.de" target="_blank&gt;test&lt;/a&gt;
dsads
';

$lall = str_ireplace("\r", '', $lall);
$lall = str_ireplace("\n", '', $lall);
$lall = str_ireplace("\t", '', $lall);
preg_match_all('/&lt;a [^&gt;].*href="(.*)".*&gt;/i', $lall, $lall_new);
$allLinks = explode("&lt;/a&gt;", $lall_new[0][0]);
foreach ($allLinks as $key =&gt; $val) {
  $val = trim($val);
  if ($val != '') {
    $data =preg_replace('/.*&lt;a [^&gt;].*href\s*=\s*(["\'])(.*?)\1.*&gt;.*/i',"$2",$val);
    echo $data . "\n";
  }
}
?&gt;
</pre>
<pre>php testtest.php</pre>
<p>http://test1.de<br /> test2.php<br /> http://test3.de</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="1" data-poid="in-350" data-post-type="none" ><a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/28.jpg" alt="APC + eAccelerator + XCache" /></a>26. Juli 2010 -- <a href="http://suckup.de/howto/apc-eaccelerator-xcache/" class="wp_rp_title">APC + eAccelerator + XCache</a></li><li data-position="2" data-poid="in-5394" data-post-type="none" ><a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" alt="UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;" /></a>24. September 2012 -- <a href="http://suckup.de/linux/utf-8-byte-order-mark-bom-in-php-dateien/" class="wp_rp_title">UTF-8 Byte Order Mark (BOM) in php-Dateien &#8230;</a></li><li data-position="3" data-poid="in-528" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="Twitter automatisieren!" /></a>9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/M819LtXKrHE" height="1" width="1"/>]]></content:encoded><description>Habe zu dem Thema (&amp;#8220;Regul&amp;#228;re Ausdr&amp;#252;cke&amp;#8221;) bereits ausf&amp;#252;hrlicher geschrieben -&amp;#62; http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/ &amp;#60;- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann &amp;#8230;  
&amp;#60;?php
$lall =' lall lall123
&amp;#60;a style="gfsedfd;"  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-links-aus-tags/</feedburner:origLink></item><item><title>PHP-Sicherheit erhöhen – Teil 2</title><link>http://feedproxy.google.com/~r/voku-online/~3/FAtPDWR-1QE/</link><category>PHP</category><category>php - regex</category><category>php - regulären Ausdrücke</category><category>php-isset</category><category>php-sicherheit</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Mon, 04 Jun 2012 07:17:04 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5336</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte <a title="de.php.net - phpinfo()" href="http://de.php.net/manual/de/function.phpinfo.php" target="_blank">PHP-Version</a> auf dem <a title="Download PHP" href="http://php.net/downloads.php" target="_blank">aktuellen Stand</a> ist und somit weniger Angriffsfl&auml;che bietet. -&gt; <a title="PHP-Sicherheit erh&ouml;hen - Teil 1" href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/%20" target="_blank">PHP-Sicherheit erh&ouml;hen &#8211; Teil 1</a></p>
<h3>1.) &#8220;register_globals&#8221; sollten deaktiviert sein!!!</h3>
<p>Falls diese Option aktiv ist, ist das &Uuml;berschreiben lokaler Variablen via GET / POST m&ouml;glich z.B.:</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (!isset($test)) <br />{ <br />  $test = 1; <br />} <br />echo 'Der Wert von test ist: '.$test; <br />?&gt; </pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?test=2</p>
<p>Ab PHP 4.2 ist diese Option (php.ini -&gt; register_globals = Off) jedoch bereits standardm&auml;&szlig;ig auf &#8220;Off&#8221; gesetzt.</p>
<p>&nbsp;</p>
<h3>2.) &#8220;Type Casting&#8221; verwenden</h3>
<p>Casting bedeutet so viel wie Umwandeln einer Variable in einen bestimmten Type z.B. wird aus &#8220;123z&#8221; -&gt; &#8220;123&#8243; wenn wir dies zu einer Ganzzahl (int) casten. z.B.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />$zahl = (int)$_GET['zahl']; <br />?&gt;</pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?zahl=123z</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />Type Casting -&gt; <a title="PHP: Type Casting" href="http://de2.php.net/manual/de/language.types.type-juggling.php" target="_blank">http://de2.php.net/manual/de/language.types.type-juggling.php</a></p>
<p>&nbsp;</p>
<h3>3.) Variablen pr&uuml;fen</h3>
<p>Allgemein kann man pr&uuml;fen, ob die Variablen &uuml;berhaupt vorhanden/gesetzt sind.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (empty($_GET['zahl']) { [...]<br />if (!isset(($_GET['zahl']) { [...]<br />if (!$_GET['zahl']) { [...] // Warnung ("Notice") falls "error_reporting(E_ALL)" und die Variable nicht definiert wurde</pre>
</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />empty() -&gt; <a title="PHP: empty()" href="http://php.net/manual/de/function.empty.php" target="_blank">http://php.net/manual/de/function.empty.php</a><br />isset() -&gt; <a title="PHP: isset()" href="http://php.net/manual/de/function.isset.php" target="_blank">http://php.net/manual/de/function.isset.php</a></p>
<p>&nbsp;</p>
<h3>4.) Variablen &#8220;Type&#8221; pr&uuml;fen</h3>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>&lt;?php <br />if (gettype($_GET['zahl']) == "integer") { $zahl = $_GET['zahl']; }<br />else { $zahl = (int) $_GET['zahl']; }<br />?&gt;</pre>
</p>
<p>Alternative: if (is_int($_GET['zahl'])) { [...]</p>
<p>&nbsp;</p>
<h3>5.) &#8220;Ctype&#8221; Funktionen</h3>
<p>Es gibt noch weitere php-Module z.B. &#8220;ctype&#8221; mit denen sich Variablen &uuml;berpr&uuml;fen lassen, ich will jedoch als n&auml;chstes einen allgemein g&uuml;ltigen Ansatz via &#8220;regul&auml;ren Ausdr&uuml;cken&#8221; zeigen.</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: ctype" href="http://de2.php.net/manual/de/ref.ctype.php" target="_blank">http://de2.php.net/manual/de/ref.ctype.php</a><br />    <br />    </p>
<h3>6.) Variablen pr&uuml;fen / zuschneiden via &#8220;regul&auml;ren Ausdr&uuml;cke&#8221;</h3>
<p>Regul&auml;re Ausdr&uuml;cke sind Muster, mit denen Zeichenketten beschrieben werden k&ouml;nnten!</p>
<p>Wer die Syntax noch nicht im Kopf hat sollte sich einmal &#8220;The Regex Coach&#8221; anschauen -&gt; <a title="PHP: regex-coach" href="http://weitz.de/regex-coach/" target="_blank">http://weitz.de/regex-coach/</a></p>
<div id="attachment_5338" class="wp-caption aligncenter" style="width: 287px"><a href="http://suckup.de/wp-content/uploads//2012/06/The-Regex-Coach_2011-11-28_15-22-03.png"><img class="size-medium wp-image-5338" title="The Regex Coach" src="http://suckup.de/wp-content/uploads//2012/06/The-Regex-Coach_2011-11-28_15-22-03-277x300.png" alt="The Regex Coach" width="277" height="300" /></a><p class="wp-caption-text">The Regex Coach</p></div>
<p>&nbsp;</p>
<p>Zusammenfassung:<br />&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>[abc]</strong> -&gt; a oder b oder c<br /><strong>[^abc]</strong> -&gt; nicht a oder b oder c<br /><strong>[a-z]</strong> -&gt; von a bis z -&gt; alle Kleinbuchstaben<br /><strong>[A-Z]</strong> -&gt; von A bis Z -&gt; alle Gro&szlig;buchstaben<br /><strong>[a-zA-Z]</strong> -&gt; Buchstaben</p>
<p><strong>[0-9]</strong> -&gt; von 0 bis 9 -&gt; Ziffern<br /><strong>\d</strong> -&gt; von 0 bis 9 -&gt; Ziffern<br /><strong>\D</strong> -&gt; keine Ziffer</p>
<p><strong>[a-zA-Z0-9_]</strong> -&gt; Buchstaben, Ziffern, Unterstrich<br /><strong>\w</strong> -&gt; Buchstaben, Ziffern, Unterstrich<br /><strong>\W</strong> -&gt; keine Buchstaben, Ziffern, Unterstrich</p>
<p><strong>[\r\n\t\f]]</strong> -&gt; Wagenr&uuml;cklauf, New Line, Tabulatur, Seitenwechsel -&gt; Leerzeichen<br /><strong>\s</strong> -&gt; Leerzeichen<br /><strong>\S</strong> -&gt; keine Leerzeichen</p>
<p><strong>\b</strong> -&gt; Wortanfang bzw. Wortende z.B. &#8220;/\bWort\b/&#8221;<br /><strong>\B</strong> -&gt; kein Wortanfang bzw. Wortende z.B. &#8220;/\BWort\B/&#8221;</p>
<p><strong>.</strong> -&gt; ein beliebiges Zeichen (Punkt)</p>
<p><strong>x{m}</strong> -&gt; &#8220;x&#8221; muss genau &#8220;m&#8221;-Mal vorkommen<br /><strong>x{m,}</strong> -&gt; &#8220;x&#8221; muss min. &#8220;m&#8221;-Mal vorkommen (Ende offen)<br /><strong>x{,n}</strong> -&gt; &#8220;x&#8221; darf max. &#8220;n&#8221;-Mal vorkommen (Anfang offen)<br /><strong>x{m,n}</strong> -&gt; &#8220;x&#8221; muss zwischen &#8220;m&#8221;- und &#8220;n&#8221;-Mal vorkommen<br /><strong>x?</strong> -&gt; &#8220;x&#8221; kann, muss aber nicht an dieser Stelle vorkommen =&gt; x{0,1}<br /><strong>x*</strong> -&gt; &#8220;x&#8221; kann kein, ein oder mehrmals an dieser Stelle vorkommen =&gt; x{0,}<br /><strong>x+</strong> -&gt; &#8220;x&#8221; kann ein oder mehrmals an dieser Stelle vorkommen =&gt; x{1,}</p>
<p><strong>^</strong> -&gt; markiert den Beginn einer Zeichenkette<br /><strong>$</strong> -&gt; markiert das Ende einer Zeichenkette</p>
<p><strong>|</strong> -&gt; Alternative z.B. &#8220;/ae|a/&#8221;</p>
<p><strong>\</strong> -&gt; Maskierung (Escape-Zeichen) f&uuml;r z.B. einen Punkt &#8220;\.&#8221;</p>
<p><strong>[]</strong> -&gt; Zusammenfassung von Mustern</p>
<p><strong>()</strong> -&gt; Zusammenfassung von Mustern + selektieren und an PHP zur&uuml;ckgeben</p>
<h6> </h6>
<h5>6.1) ein Beispiel</h5>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br />if((!empty($_GET['Text'])) &amp;&amp; (preg_match("/^(T|t)est(ing*){0,1}$/",$_GET['Text'])))<br />{<br />    $variable = "OK"; <br />} else {<br />    $variable = "nicht OK";<br />}<br />echo 'Der Wert ist '.$variable; <br />?&gt;</pre>
</p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?Text=Test -&gt; OK -&gt; (T|t)est<br />&#8230;/test.php?Text=test -&gt; OK -&gt; test(ing){0,1} = test(ing)?<br />&#8230;/test.php?Text=testing -&gt; OK -&gt; test(ing){0,1} = test(ing)?<br />&#8230;/test.php?testinggggg -&gt; OK -&gt; g*</p>
<p>&nbsp;</p>
<h5>6.2) noch ein Beispiel</h5>
<p>Hier sind nur Zahlen zugelassen &#8230;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br />if((!empty($_GET['Text'])) &amp;&amp; (preg_match("/^\d+([\.,]\d+)?$/",$_GET['Text'])))<br />{<br />    $variable = "OK"; <br />} else {<br />    $variable = "nicht OK";<br />}<br />echo 'Der Wert ist '.$variable; <br />?&gt;</pre>
</p>
<p>Info: <br />&#8212;&#8211;<br /><strong>/^\d+([\.,]\d+)?$/</strong> -&gt; ist gleich -&gt; <strong>/^[0-9]{1,}([\.,][0-9]{1,})?$/</strong></p>
<p>Browser:<br />&#8212;&#8212;&#8211;<br />&#8230;/test.php?Text=1 -&gt; OK -&gt; [0-9]{1,}<br />&#8230;/test.php?Text=123456789 -&gt; OK -&gt; [0-9]{1,}<br />&#8230;/test.php?Text=1.9 -&gt; OK -&gt; [0-9][\.,][0-9]<br />&#8230;/test.php?Text=123.789 -&gt; OK -&gt; [0-9]{1,}[\.,][0-9]{1,}<br />&#8230;/test.php?Text=123,789 -&gt; OK -&gt; [0-9]{1,}[\.,][0-9]{1,}</p>
<p>&nbsp;</p>
<h5>6.3) und noch ein Beispiel</h5>
<p>Hier schneiden wir einen Teil aus einen String aus und geben diesen aus &#8230;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;</p>
<p>
<pre>&lt;?php <br />$imagemap = "&lt;map id=\"imgmap201111415460\" name=\"imgmap201111415460\"&gt;&lt;area shape=\"rect\" alt=\"\" title=\"\" coords=\"151,58,221,148\" href=\"\" target=\"\" /&gt;&lt;/map&gt;";</pre>
</p>
<p>$imagemap_name = preg_replace(&#8216;/^&lt;map(.+)name=\&#8221;(.+)\&#8221;&gt;&lt;area(.+)/i&#8217;, &#8220;$2&#8243;, $imagemap);</p>
<p>echo &#8216;Imagemap-Name: &#8216;.$imagemap_name;<br />?&gt;</p>
<p>Ausgabe =&gt; Imagemap-Name: imgmap201111415460</p>
<p>Info: <br />&#8212;&#8211;<br /><strong>(.+) -&gt; ist gleich -&gt; (.{1,})</strong></p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: preg-replace()" href="http://de3.php.net/manual/de/function.preg-replace.php" target="_blank">http://de3.php.net/manual/de/function.preg-replace.php</a></p>
<p>&nbsp;</p>
<h3>7.) Maskieren von Strings zur Nutzung in Datenbanken</h3>
<p>Sobald Daten in einer Datenbank gespeichert werden, sollte man diese via &#8220;<em>mysql_real_escape_string</em>&#8221; bzw. &#8220;<em>mysqli_real_escape_string</em>&#8221; maskieren, so dass &#8220;SQL Injection Angriffe&#8221; verhindert werden.</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: mysql-real-escape-string()" href="http://php.net/manual/de/function.mysql-real-escape-string.php" target="_blank">http://php.net/manual/de/function.mysql-real-escape-string.php</a></p>
<p>&nbsp;</p>
<h3>8.) Ein-Weg-Verschl&uuml;sselung</h3>
<p>Bei der Ein-Weg-Verschl&uuml;sselung wird nicht die original Eingabe, sondern ein Hash-Wert davon gespeichert z.B. md5</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php $passwort = 'mein_Pwd';<br />echo md5($passwort); ?&gt;</pre>
</p>
<p>Ausgabe: b4e28e9d7dbf6d41d6e609b3eb46fac4</p>
<p>Das Problem ist jedoch, dass man diese Verschl&uuml;sselung via &#8220;Brute-Force-Attacke&#8221; erraten bzw. in einer &#8220;b&ouml;sen&#8221;-Datenbank <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  mit vielen Kombinationen aus md5-hash und original-Wert auslesen kann.<br />Daher kann man z.B. auch sha1() anstelle von md5() nutzen, was zwar den Zeitaufwand bei &#8220;Brute-Force-Attacke&#8221; erh&ouml;ht, jedoch nicht die Schwachstellen der Ein-Weg-Verschl&uuml;sselung behebt.</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: md5()" href="http://de.php.net/manual/de/function.md5.php" target="_blank">http://de.php.net/manual/de/function.md5.php</a><br /><a title="PHP: sha1" href="http://de.php.net/manual/de/function.sha1.php" target="_blank">http://de.php.net/manual/de/function.sha1.php</a></p>
<p>&nbsp;</p>
<h3>9.) Zwei-Wege-Verschl&uuml;sselung</h3>
<p>Bei der Zwei-Wege-Verschl&uuml;sselung werden Daten &uuml;ber einen Schl&uuml;ssel verschl&uuml;sselt, so dass diese auch wieder entschl&uuml;sselt werden k&ouml;nnen.</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> function encryptData($value){ <br /> $key = "top secret key"; <br /> $text = $value; <br /> $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); <br /> $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); <br /> $crypttext = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv); <br /> return $crypttext; <br /> } </pre>
</p>
<p>function decryptData($value){ <br /> $key = &#8220;top secret key&#8221;; <br /> $crypttext = $value; <br /> $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); <br /> $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); <br /> $decrypttext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $crypttext, MCRYPT_MODE_ECB, $iv); <br /> return trim($decrypttext); <br /> }</p>
<p>$test = encryptData(&#8220;Dies ist ein TEST!!!&#8221;);</p>
<p>echo $test; <br /> echo &#8220;&lt;br&gt;&lt;br&gt;&#8221;; <br /> echo decryptData($test); <br />?&gt;</p>
<p>&nbsp;</p>
<p>Algorithmus:<br />&#8212;&#8212;&#8212;&#8212;<br />-&gt; MCRYPT_BLOWFISH (blowfish)<br />-&gt; MCRYPT_TRIPLEDES (tripledes)<br />-&gt; MCRYPT_RJINDAEL_256 (rjindael-256)<br />-&gt; MCRYPT_CAST_256 (cast-256)</p>
<p>&nbsp;</p>
<p>Modus:<br />&#8212;&#8212;<br />-&gt; MCRYPT_MODE_ECB (electronic codebook): f&uuml;r kurze Zeichenketten<br />-&gt; MCRYPT_MODE_CBC (cipher block chaining): zur Dateiverschl&uuml;sselung<br />-&gt; MCRYPT_MODE_CFB (cipher feedback): f&uuml;r Bytestr&ouml;me, mit Verschl&uuml;sselung einzelner Bytes<br />-&gt; [...]</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br /><a title="PHP: mcrypt-encrypt()" href="http://php.net/manual/de/function.mcrypt-encrypt.php" target="_blank">http://php.net/manual/de/function.mcrypt-encrypt.php</a></p>
<p>&nbsp;</p>
<p>Unter MySQL ist die &#8220;Zwei-Wege-Verschl&uuml;sselung&#8221; einfacher zu handhaben, es gibt nur zwei Alternativen</p>
<p>- AES (Advanced Encryption Standard)<br />- DES: TripleDES</p>
<p>z.B.:<br />AES_DECRYPT(verschluesselt,schluessel)<br />AES_ENCRYPT(text,schluessel)</p>
<p>&nbsp;</p>
<p>dev.mysql.com:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="dev.mysql.com: encryption-functions" href="http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html" target="_blank">http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html</a></p>
<p>&nbsp;</p>
<h3>10.) SSL (Secure Socket Layer)</h3>
<p>Da das HTTP-Protokoll Daten plain (unverschl&uuml;sselt) &uuml;bertr&auml;gt, ist eine SSL- bzw. HTTPS-Verschl&uuml;sselung immer dann sinnvoll, wenn sensible Daten &uuml;bertragen werden. So k&ouml;nnen die Daten beim Transport &uuml;ber das Internet nicht von dritten mitgelesen (Sniffing) werden.</p>
<p>&nbsp;</p>
<h3>11.) Cross-Site-Scripting (XSS)</h3>
<p>Es geht darum Code auszuf&uuml;hren, der von einer fremden Webseite, in die aktuelle Webseite eingeschleust wird. Es ist ein Oberbrgriff f&uuml;r unterschiedliche Arten (serverseitiges &amp; clientseitiges Cross-Site-Scripting) von Angriffen.</p>
<p>&nbsp;</p>
<p>wikipedia.org:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="wiki - Cross-Site-Scripting" href="http://de.wikipedia.org/wiki/Cross-Site-Scripting" target="_blank">http://de.wikipedia.org/wiki/Cross-Site-Scripting</a></p>
<p>&nbsp;</p>
<h5>11.1) Serverseitiges Cross-Site-Scripting</h5>
<p>Hier wird der &#8220;b&ouml;se&#8221; Code direkt auf dem Server der angegriffenen Webseite ausgef&uuml;hrt (z.B.: von PHP) &#8230;</p>
<p>&#8230; es folgt ein sehr schwerwiegender Programmierfehler, eine include &amp; GET kombination, um serverseitiges XSS zu demonstrieren.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> inculde($_GET['skript'];<br /> // etc.<br /> ...<br /> ?&gt;</pre>
</p>
<p>Info: Clientseitiges Cross-Site-Scripting -&gt; Hier wird der &#8220;b&ouml;se&#8221; Code via Browser-Technologien (z.B. via JavaScript, ActiveX &#8230;) eingeschleust.</p>
<p>&nbsp;</p>
<h5>11.2) SQL Injection</h5>
<p>&nbsp;</p>
<p>wikipedia.org:<br />&#8212;&#8212;&#8212;&#8212;&#8211;<br /><a title="wiki - SQL-Injection" href="http://de.wikipedia.org/wiki/SQL-Injection" target="_blank">http://de.wikipedia.org/wiki/SQL-Injection</a></p>
<p>&nbsp;</p>
<p>Auch dies ist eine Art des serverseitiges Cross-Site-Scriptings und das Ziel des Angreifers ist die Datenbank.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>&lt;?php <br /> [...] <br /> $sql = "SELECT * FROM tabelle WHERE id=" . $id; <br /> [...] <br /> ?&gt; </pre>
</p>
<p>Wenn die Variable die nun per GET, POST oder Cookie &uuml;berschrieben werden kann, wird eine neue SQL-Query an die Datenbank gesendet. Dabei wird die Tatsache ausgenutzt, dass man mehrere SQL-Befehle mit <br />Simikolon getrennt, ausf&uuml;hren kann.</p>
<p><strong>Gegenma&szlig;nahmen:</strong></p>
<p>-&gt; <em>Anf&uuml;hrungsstriche verwenden</em></p>
<p>Anf&uuml;hrungsstriche werden dazu verwendet um Variablen in SQL-Queries zu benutzen.</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>[...] SELECT * FROM xyz WHERE id = '$Test' [...]</pre>
</p>
<p>&nbsp;</p>
<p>Ein Angreifer, der $Test ver&auml;ndert kann nicht aus den Anf&uuml;hrungsstrichen ausbrechen, sloange $Test geparst wurde und alle &#8216; mit \&#8217; maskiert sind. <br />Es gibt jedoch noch weitere M&ouml;glichkeiten um sich vor solchen Angriffen zu sch&uuml;tzen.</p>
<p>&nbsp;</p>
<p>-&gt; <em>Keine Strings in numerischen Variablen zulassen</em></p>
<p>Die Funktion settype wandelt Variablen (var) in einen Integer (int) um:</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;
<pre>[...]<br />settype($Variable, 'integer');<br />[...]</pre>
</p>
<p>&nbsp;</p>
<p>php.net:<br />&#8212;&#8212;&#8211;<br />settype -&gt; <a title="PHP: settype()" href="http://www.php.net/manual/de/function.settype.php" target="_blank">http://www.php.net/manual/de/function.settype.php</a></p>
<p>&nbsp;</p>
<p>-&gt; <em>Datenbankverbindungen mit eingeschr&auml;nkten Rechten</em></p>
<p>Gehe sparsam mit der Rechtevergabe an die Web (User) um, so dass im Notfall nicht die komplette Datenbank (DROP DATABASE name) betroffen ist. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>-&gt; <em>Werte maskieren</em></p>
<p>Mit der Funktion mysql(i)_real_escape_string bietet PHP eine einfache M&ouml;glichkeit SQL-Befehle zu maskieren.</p>
<p>Hinweis: Neben dem Semikolon ist auch ein doppelter Bindestrich (Kommentar in MySQL) dazu geeignet SQL-Kommandos nach dem eingeschleusten Code abzubrechen.</p>
<p>&nbsp;</p>
<p><strong>Zusammenfassung:</strong> Wenn man generell Anf&uuml;hrungszeichen in den SQL-Kommandos benutzt und Variablen immer maskiert, w&uuml;rde dies zirka wie folgt aussehen&#8230;</p>
<p>&nbsp;</p>
<p>test.php:<br />&#8212;&#8212;&#8212;<br /> 
<pre>[...] <br /> if (!isset($_GET['id'])) { $id = 0; } <br /> else { $id = $_GET['id']; } </pre>
</p>
<p>if (gettype($id) == &#8220;integer&#8221;) { $zahl = $id; } <br /> else { $zahl = settype($id, &#8216;integer&#8217;); }</p>
<p>$sql = &#8220;SELECT * FROM tabelle <br /> WHERE id=&#8217;&#8221; . mysqli_real_escape_string($zahl) . &#8220;&#8216; <br /> AND user=&#8217;test&#8217; <br /> &#8220;; <br /> [...]</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-5178" data-post-type="none" ><a href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2012/01/Unbenannt-1-150x150.jpg" alt="PHP-Sicherheit erh&ouml;hen &#8211; Teil 1" /></a>16. Januar 2012 -- <a href="http://suckup.de/linux/ubuntu/php-sicherheit-erhoehen-teil-1/" class="wp_rp_title">PHP-Sicherheit erh&ouml;hen &#8211; Teil 1</a></li><li data-position="1" data-poid="in-528" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/6.jpg" alt="Twitter automatisieren!" /></a>9. Februar 2010 -- <a href="http://suckup.de/howto/php-howto/twitter-automatisieren/" class="wp_rp_title">Twitter automatisieren!</a></li><li data-position="2" data-poid="in-5405" data-post-type="none" ><a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; " /></a>25. September 2012 -- <a href="http://suckup.de/howto/php-howto/php-regular-expression-schnipsel-escaping/" class="wp_rp_title">php – Regular Expression Schnipsel – Escaping &#8220;/&#8221; </a></li><li data-position="3" data-poid="in-249" data-post-type="none" ><a href="http://suckup.de/linux/cdrecord-iso-erstellen-und-brennen/" class="wp_rp_thumbnail"><img src="cdrecord - ISO erstellen und CD brennen" alt="cdrecord &#8211; ISO erstellen und CD brennen" /></a>31. Januar 2010 -- <a href="http://suckup.de/linux/cdrecord-iso-erstellen-und-brennen/" class="wp_rp_title">cdrecord &#8211; ISO erstellen und CD brennen</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/FAtPDWR-1QE" height="1" width="1"/>]]></content:encoded><description>Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte PHP-Version auf dem aktuellen Stand ist und somit weniger Angriffsfl&amp;#228;che bietet. -&amp;#62;  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><feedburner:origLink>http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/</feedburner:origLink></item><item><title>Rewrite-Rules: Apache vs Nginx</title><link>http://feedproxy.google.com/~r/voku-online/~3/57f2_JQ69Gc/</link><category>HowTo</category><category>MySQL</category><category>Nginx</category><category>PHP</category><category>htaccess</category><category>Nginx-config</category><category>php-fpm config</category><category>Rewrite-Regeln</category><category>Rewrite-Rules</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Tue, 29 May 2012 01:03:43 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5310</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via <a title=".htaccess &amp; Mod-Rewrite - suckup.de" href="http://suckup.de/howto/htaccess-mod-rewrite/" target="_blank">.htaccess</a> gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine solche Datei gepr&uuml;ft, diese anschlie&szlig;end eingelesen und verarbeitet werden muss, macht es Sinn wie z.B. beim Nginx Webserver diese in die Konfiguration des Webs aufzunehmen. Leider ist die Syntax und Logik dieser beiden Rewrite-Rules nicht kompatibel, daher folgt eine Einf&uuml;hrung in dieses Thema &#8230; au&szlig;erdem habe ich auf <a title="github.com/voku - suckup.de Config" href="https://github.com/voku/CONFIG--nginx---php-fpm---mysql" target="_blank">github.com/voku/ </a>meine kompletten Konfigurationsdaten f&uuml;r Nginx + PHP + MySQL hochgeladen. </p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> einfache Weiterleitung</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>: </em></p>
<p>Redirect /altes_Verzeichnis/alte_Seite.html http://suckup.de/</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> </p>
<p>rewrite /altes_Verzeichnis/alte_Seite.html http://suckup.de/ last;</p>
<p>&nbsp;</p>
<p>Falls &#8220;/altes_Verzeichnis/alte_Seite.html&#8221; hinter deiner Domain in der URL steht, wird die Anfrage auf die Domain &#8220;meine_domain.de&#8221; umgeleitet.</p>
<p>z.B. <a href="http://suckup.de/altes_Verzeichnis/alte_Seite.html">http://suckup.de/altes_Verzeichnis/alte_Seite.html</a></p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> Domain Weiterleitung</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>:</em></p>
<p>RewriteCond %{HTTP_HOST} ^voku-online.de$ [NC]<br />RewriteRule ^(.*)$ http://www.suckup.de/$1 [R=301,L]</p>
<p>&nbsp;</p>
<p>%{HTTP_HOST} -&gt; Hostname</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> </p>
<p>if ($host ~* voku-online.de) {<br /> rewrite ^(.*)$ http://suckup.de$1 permanent;<br /> }</p>
<p>&nbsp;</p>
<p>Fall der Hostname &#8220;voku-online.de&#8221; ist, dann wird dieser zu &#8220;suckup.de&#8221; umgeschrieben und alles was hinter der urspr&uuml;nglichen Hostnamen stand, wird hinter den neuen gesetzt. </p>
<p>^ -&gt; Anfang </p>
<p>.* -&gt; &#8220;.&#8221; ein beliebiges Zeichen, &#8220;*&#8221; Wiederholung =&gt; alle beliebigen Zeichen</p>
<p>( ) -&gt; erstes Vorkommen der einfachen Klammern wird zur ersten Variable $1 &#8230; u.s.w.</p>
<p>$ -&gt; Ende</p>
<p>z.B. <a href="http://voku-online.de/altes_Verzeichnis/alte_Seite.html">http://voku-online.de/altes_Verzeichnis/alte_Seite.html</a></p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> entferne doppelte &#8220;/&#8221;</h3>
<p>&nbsp;</p>
<p><em><strong>Apa­che</strong>:</em></p>
<p>RewriteCond %{REQUEST_URI} ^(.*)//(.*)$<br />RewriteRule . %1/%2 [R=301,L]</p>
<p>&nbsp;</p>
<p> %{REQUEST_URI} -&gt; URL ohne Parameter</p>
<p> ( ) -&gt; erstes Vorkommen der einfachen Klammern in der &#8220;RewriteCond&#8221;-Bedingung wird zur ersten Variable %1 &#8230; u.s.w.</p>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em> <br /> if ($request_uri ~* &#8220;\/\/&#8221;) {<br /> rewrite ^(.*)$ $scheme://$host$1 permanent;<br /> }</p>
<p>&nbsp;</p>
<p>\/ -&gt; Escapezeichen &#8220;\&#8221; vor &#8220;/&#8221;</p>
<p>$scheme -&gt; http bzw. https</p>
<p>$host -&gt; Hostname</p>
<p>permanent -&gt; gibt den Statuscode 301 zur&uuml;ck</p>
<p>&nbsp;</p>
<h3><strong>Erkl&auml;rung:</strong> statische Dateien (.css/.js/.html) beschleunigen</h3>
<p>&nbsp;</p>
<p><em><strong>Nginx:</strong></em></p>
<p>## static files are served directly<br />location ~* \.(?:js|css|htm?|js\?ver.*|css\?ver.*)$ {<br />        set $betterForCache  0;</p>
<p>        if ($args ~* ver=(.*)$) {<br />                set $betterForCache  1;<br />        }<br />        if ($request_uri ~* &#8220;/wp-admin&#8221;) {<br />                set $betterForCache  0;<br />        }<br />        if ($betterForCache = 1) {<br />                rewrite ^(.*) $scheme://$host$uri? last;<br />        }</p>
<p>        gzip_static on;</p>
<p>        autoindex off;<br />        expires 1d;<br />        add_header Pragma public;<br />        # We bypass all delays in the post-check and pre-check parameters of Cache-Control. Both set to 0.<br />        add_header Pragma public;<br />        add_header Cache-Control &#8220;public, must-revalidate, proxy-revalidate, post-check=0, pre-check=0&#8243;;<br />        ## No need to bleed constant updates. Send the all shebang in one<br />        ## fell swoop.<br />        tcp_nodelay off;<br />        ## Set the OS file cache.<br />        open_file_cache max=3000 inactive=120s;<br />        open_file_cache_valid 45s;<br />        open_file_cache_min_uses 2;<br />        open_file_cache_errors off;<br />        break;<br />}</p>
<p>Verschachtelte if-Abfragen kann man einfach via Hilfsvariablen (z.B. $betterForCache) erstellen &#8230;</p>
<p>$uri -&gt; URL ohne Parameter</p>
<p>z.B.: <a href="view-source:http://suckup.de/wp-content/themes/mystique/css/core.css?ver=3.3.2">http://suckup.de/wp-content/themes/mystique/css/core.css?ver=3.3.2</a></p>
<p>&nbsp;</p>
<p><strong><em>weitere Infos:</em></strong></p>
<p>- Nginx &amp; HttpRewriteModule:  <a href="http://wiki.nginx.org/HttpRewriteModule">http://wiki.nginx.org/HttpRewriteModule</a></p>
<p>- Apache &amp; mod_rewrite: <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html">http://httpd.apache.org/docs/current/mod/mod_rewrite.html</a></p>
<p>- Beispiel-Konfiguration (WordPress Multi: Nginx + PHP-FPM): <a title="SUCKUP.de - Server Config" href="https://github.com/voku/CONFIG--nginx---php-fpm---mysql" target="_blank">https://github.com/voku/CONFIG&#8211;nginx&#8212;php-fpm&#8212;mysql</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-1571" data-post-type="none" ><a href="http://suckup.de/linux/ubuntu/nginx-php5-fpm-auf-debianubuntu/" class="wp_rp_thumbnail"><img src="Nginx + PHP5-fpm auf Debian/Ubuntu" alt="Nginx + PHP5-fpm auf Debian/Ubuntu" /></a>31. Juli 2010 -- <a href="http://suckup.de/linux/ubuntu/nginx-php5-fpm-auf-debianubuntu/" class="wp_rp_title">Nginx + PHP5-fpm auf Debian/Ubuntu</a></li><li data-position="1" data-poid="in-775" data-post-type="none" ><a href="http://suckup.de/linux/webseiten-beschleunigen/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/07/tacho3-150x150.gif" alt="Webseiten beschleunigen &#8211; &Uuml;bersicht" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/webseiten-beschleunigen/" class="wp_rp_title">Webseiten beschleunigen &#8211; &Uuml;bersicht</a></li><li data-position="2" data-poid="in-836" data-post-type="none" ><a href="http://suckup.de/linux/webserver-beschleunigen/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/03/nginx-300x153-150x150.png" alt="Webserver beschleunigen" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/webserver-beschleunigen/" class="wp_rp_title">Webserver beschleunigen</a></li><li data-position="3" data-poid="in-1766" data-post-type="none" ><a href="http://suckup.de/howto/debian-ubuntu-paket-selber-bauen-nginx/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/07/nginx_logo_klein2-150x150.jpg" alt="Debian/Ubuntu Paket selber bauen (Nginx)" /></a>21. August 2010 -- <a href="http://suckup.de/howto/debian-ubuntu-paket-selber-bauen-nginx/" class="wp_rp_title">Debian/Ubuntu Paket selber bauen (Nginx)</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/57f2_JQ69Gc" height="1" width="1"/>]]></content:encoded><description>Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via .htaccess gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/rewrite-rules-apache-vs-nginx/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://suckup.de/howto/rewrite-rules-apache-vs-nginx/</feedburner:origLink></item><item><title>Scrollen via jQuery</title><link>http://feedproxy.google.com/~r/voku-online/~3/XVmJmZiGZ0Y/</link><category>jQuery</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Tue, 22 May 2012 04:50:35 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5298</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hier ein kurzes Beispiel, wie man via jQuery die Position eines Elements herausfindet und automatisch an diese Stelle scrollen kann. Wer sich noch nicht so gut mit jQuery- / CSS-Selektoren auskennt, sollte sich einmal folgenden Beitrag durchlesen. -&gt; <a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/">http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/</a></p>
<p>&nbsp;</p>
<p>.scrollTop() -&gt; gibt die Scrollbar Position eines bestimmten Elements zur&uuml;ck </p>
<p>.scroll() -&gt; wird ausgef&uuml;hrt, wenn gescrollt wird (event handler)</p>
<p>.animate() -&gt; erzeugt animations Effekte via numerischer CSS-Einstellungen</p>
<p>.offset() -&gt; gibt die Koordinaten (x,y) eines Elements zur&uuml;ck </p>
<p>.height() -&gt; gibt die H&ouml;he eines Elements zur&uuml;ck</p>
<p>&nbsp;</p>
<p><strong>Beispiel:</strong> <a title="jQuery_scroll.html - Beispiel" href="http://suckup.de/jQuery_scroll.html" target="_blank">jQuery_scroll.html</a></p>
<p>&nbsp;</p>
<p>onClick=&#8221;$(&#8216;#box&#8217;).show(); $(&#8216;html,body&#8217;).stop(true,true); var target = $(&#8216;#box&#8217;); var bottom = target.offset().top+target.height()-250; $(&#8216;html,body&#8217;).animate({scrollTop: bottom}, 500); return false;&#8221;</p>
<p>&nbsp;</p>
<p>-&gt; bei &#8220;Klick&#8221; [onClick] </p>
<p>    -&gt; zeige das Element mit der ID &#8220;box&#8221; [#box] an</p>
<p>        -&gt; halte alle Animationen an [stop(true,true)]</p>
<p>          -&gt; die H&ouml;he des Elements auf den x-Koordinate daraufrechnen [offset().top+target.height()]</p>
<p>            -&gt; zu der neuen Koordinate des Elements scrollen [animate({scrollTop: bottom}, 500)]</p>
<p>&nbsp;</p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-4974" data-post-type="none" ><a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2011/10/250x400-150x150.png" alt="Crashkurs: jQuery-Selektoren" /></a>16. Oktober 2011 -- <a href="http://suckup.de/howto/jquery/crashkurs-jquery-selektoren/" class="wp_rp_title">Crashkurs: jQuery-Selektoren</a></li><li data-position="1" data-poid="in-4206" data-post-type="none" ><a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/10.jpg" alt="C-Programm – Umgebungsvariablen unter Linux" /></a>16. Januar 2011 -- <a href="http://suckup.de/linux/c-programm-umgebungsvariablen-unter-linux/" class="wp_rp_title">C-Programm – Umgebungsvariablen unter Linux</a></li><li data-position="2" data-poid="in-4218" data-post-type="none" ><a href="http://suckup.de/linux/jabber-xmpp-studivz-facebook/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2011/01/Jabber_logo-150x150.png" alt="Jabber &#8211; XMPP + StudiVZ &#8211; Facebook " /></a>20. Januar 2011 -- <a href="http://suckup.de/linux/jabber-xmpp-studivz-facebook/" class="wp_rp_title">Jabber &#8211; XMPP + StudiVZ &#8211; Facebook </a></li><li data-position="3" data-poid="in-318" data-post-type="none" ><a href="http://suckup.de/linux/lvm-logical-volume-manager/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/02/lvm-150x150.jpg" alt="LVM &#8211; Logical Volume Manager" /></a>7. Februar 2010 -- <a href="http://suckup.de/linux/lvm-logical-volume-manager/" class="wp_rp_title">LVM &#8211; Logical Volume Manager</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/XVmJmZiGZ0Y" height="1" width="1"/>]]></content:encoded><description>Hier ein kurzes Beispiel, wie man via jQuery die Position eines Elements herausfindet und automatisch an diese Stelle scrollen kann. Wer sich noch nicht so gut mit jQuery- / CSS-Selektoren auskennt, sollte sich einmal folgenden Beitrag durchlesen.  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/jquery/scrollen-via-jquery/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://suckup.de/howto/jquery/scrollen-via-jquery/</feedburner:origLink></item><item><title>MySQL: Zahl in Datum umwandeln</title><link>http://feedproxy.google.com/~r/voku-online/~3/Y_V4UW8VQwo/</link><category>MySQL</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Tue, 22 May 2012 04:12:49 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5295</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann &#8220;CONVERT&#8221; bzw. &#8220;CAST&#8221; weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass &#8220;date&#8221; / &#8220;datetime&#8221; / &#8230; / als Datentyp verwendet wird. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p><strong>Beispiel-Datenbank:</strong>
<pre>CREATE TABLE `lall` (<br /> `Id` int(11) NOT NULL AUTO_INCREMENT,<br /> `IntDate` int(11) NOT NULL DEFAULT '0',<br /> PRIMARY KEY (`Id`)<br /> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;</pre>
</p>
<p>
<pre>INSERT INTO `lall` VALUES (1,201001);<br /> INSERT INTO `lall` VALUES (2,201002);<br /> INSERT INTO `lall` VALUES (3,201003);<br /> INSERT INTO `lall` VALUES (4,0);<br /> INSERT INTO `lall` VALUES (5,201011);<br /> INSERT INTO `lall` VALUES (6,201012);<br /> INSERT INTO `lall` VALUES (7,201205);</pre>
</p>
<p><strong>SQL:</strong>
<pre>SELECT * FROM lall<br /> WHERE ((CONVERT(CONCAT(IntDate, '01'), datetime))&gt;NOW() - INTERVAL 12 MONTH OR IntDate=0)<br /> </pre>
</p>
<p>&lt; &#8211; dieses SELECT-Statement zeigt alle Datens&auml;tze an, welche nicht &auml;lter als 12 Monate sind oder als (int) Datum &#8220;0&#8243; eingetragen haben.</p>
<p>CONVERT -&gt; <a title="mysql.com - convert" href="http://dev.mysql.com/doc/refman/5.1/de/charset-convert.html" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/charset-convert.html</a><br /> CONCAT -&gt; <a title="mysql.com - string-functions" href="http://dev.mysql.com/doc/refman/5.1/de/string-functions.html#id571625" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/string-functions.html#id571625</a><br /> NOW -&gt; <a title="mysql.com - date-and-time-functions" href="http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html#id586485" target="_blank">http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html#id586485</a></p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-840" data-post-type="none" ><a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/0.jpg" alt="MySQL-Server optimieren" /></a>26. Juli 2010 -- <a href="http://suckup.de/linux/debian/mysql-server-optimieren/" class="wp_rp_title">MySQL-Server optimieren</a></li><li data-position="1" data-poid="in-5310" data-post-type="none" ><a href="http://suckup.de/howto/rewrite-rules-apache-vs-nginx/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/07/nginx_logo_klein2-150x150.jpg" alt="Rewrite-Rules: Apache vs Nginx" /></a>29. Mai 2012 -- <a href="http://suckup.de/howto/rewrite-rules-apache-vs-nginx/" class="wp_rp_title">Rewrite-Rules: Apache vs Nginx</a></li><li data-position="2" data-poid="in-385" data-post-type="none" ><a href="http://suckup.de/linux/mysql-root-passwort-zuruecksetzen/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/29.jpg" alt="MySQL root Passwort zur&uuml;cksetzen" /></a>8. Februar 2010 -- <a href="http://suckup.de/linux/mysql-root-passwort-zuruecksetzen/" class="wp_rp_title">MySQL root Passwort zur&uuml;cksetzen</a></li><li data-position="3" data-poid="in-625" data-post-type="none" ><a href="http://suckup.de/linux/greensql-mysql-firewall/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/02/greensql-architecture-150x150.jpg" alt="GreenSQL &#8211; MySQL Firewall" /></a>14. Februar 2010 -- <a href="http://suckup.de/linux/greensql-mysql-firewall/" class="wp_rp_title">GreenSQL &#8211; MySQL Firewall</a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/Y_V4UW8VQwo" height="1" width="1"/>]]></content:encoded><description>Falls jemand mal z.B. einen Int-Wert in ein Datum umwandeln muss, kann &amp;#8220;CONVERT&amp;#8221; bzw. &amp;#8220;CAST&amp;#8221; weiterhelfen. Auch wenn man eigentlich die Datenbank im Vorhinein so gestalten sollte, dass &amp;#8220;date&amp;#8221; / &amp;#8220;datetime&amp;#8221; / &amp;#8230; / als Datentyp verwendet wird.  
&amp;#160;
Beispiel-Datenbank:
CREATE TABLE `lall` ( `Id` int(11)  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/mysql-howto/mysql-zahl-in-datum-umwandeln/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://suckup.de/howto/mysql-howto/mysql-zahl-in-datum-umwandeln/</feedburner:origLink></item><item><title>Cross-Compiling Android Kernel – Samsung GalaxyS2</title><link>http://feedproxy.google.com/~r/voku-online/~3/yAPsZ_erpQo/</link><category>Android</category><category>HowTo</category><category>ubuntuusers.de</category><category>Android 4.0.4</category><category>CM9</category><category>Galaxy S2</category><category>GalaxyS2</category><category>Samsung</category><category>SGS2</category><category>SiyahKernel</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">voku</dc:creator><pubDate>Wed, 11 Apr 2012 13:13:10 PDT</pubDate><guid isPermaLink="false">http://suckup.de/?p=5280</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Das GalaxyS2 l&auml;uft ziemlich gut mit dem neuen <a title="SGS2 Nightly Builds CM9 | Android 4" href="http://download.cyanogenmod.com/?device=galaxys2" target="_blank">nightly-builds von CM9</a> (Android 4.0.4) &amp; den neusten <a title="die nueste Google Apps | Android" href="http://goo.im/gapps" target="_blank">Google-Apps</a> &amp; dem <a title="gokhanmoral.com" href="http://www.gokhanmoral.com/" target="_blank">SiyahKernel</a>.</p>
<p>Ich m&ouml;chte hier kurz erkl&auml;ren, wie du einen Kernel f&uuml;r das Samsung S2 (CM9) auf Basis vom <a title="SiyahKernel for SGS2 | CM9" href="http://www.gokhanmoral.com/" target="_blank">SiyahKernel</a> kompilierst. <img src='http://suckup.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>&nbsp;</p>
<h3><strong>1.) Installiere Linux + <a title="Cross-Compiler - Wiki" href="http://de.wikipedia.org/wiki/Cross-Compiler" target="_blank">Cross-Compiler</a></strong><strong> </strong></h3>
<p>Als erstes solltest du Linux bereits installiert haben (z.B. <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>, <a href="http://www.debian.org/" target="_blank">Debian</a> &#8230;) ggf. einfach auf einen virtuellen PC z.B. via <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a>. F&uuml;r Ubuntu gibt es bereits ab Werk <a title="Ubuntu - Ergebnisse der Debian-Paketsuche - gcc arm" href="http://packages.ubuntu.com/search?suite=default&amp;section=all&amp;arch=any&amp;lang=de&amp;searchon=names&amp;keywords=gcc+arm" target="_blank">GCC f&uuml;r ARM</a>, bei Debian habe ich bisher folgende Paket-Quellen ( /etc/apt/sources.list ) mit aufgenommen und anschlie&szlig;end gcc-4.6-arm installiert, jedoch bisher nur mit Debian *sid* getestet.</p>
<p>
<pre>deb http://www.emdebian.org/debian/ unstable main</pre>
</p>
<p>Install:</p>
<p>
<pre>sudo apt-get install build-essential git gcc-4.5-arm-linux-gnueabi wget libncurses5-dev</pre>
</p>
<p>&nbsp;</p>
<h3><strong>2.) Download der Quellen via github</strong></h3>
<p><a title="Fork - github.com" href="http://help.github.com/fork-a-repo/" target="_blank">Fork</a> via github die <a title="gokhanmoral | github | sgs2" href="https://github.com/gokhanmoral" target="_blank">Quellen</a> welche du kompilieren m&ouml;chtest und lade deine eigenen &#8220;Sources&#8221; herunter, um sp&auml;ter ggf. &#8220;Pull Requests&#8221; zu stellen. Daher musst du bei den folgenden Befehlen &#8220;voku&#8221; durch deinen eigenen User-Namen bei github ersetzen.</p>
<p>
<pre> mkdir -p ~/sgs2/kernel/</pre>
</p>
<p>
<pre>cd ~/sgs2/kernel/</pre>
</p>
<p>
<pre>git clone https://github.com/voku/siyahkernel3</pre>
</p>
<p>
<pre>git clone https://github.com/voku/initramfs3</pre>
</p>
<p>PS: &#8220;~&#8221; (tilde) = home-Verzeichnis -> <a title="Linux - Info" href="http://www.unixguide.net/linux/linuxshortcuts.shtml" target="_blank">info</a></p>
<p>Falls du nun einen anderen Cross-Compiler installiert hast als ich, musst du in der Datei (<a title="git - siyahkernel3" href="https://github.com/voku/siyahkernel3/blob/master/build_kernel.sh" target="_blank">build_kernel.sh</a>) die CROSS_COMPILE Variable anpassen. (whereis &#8211; locate the binary, source, and manual page files for a command)</p>
<p>
<pre>cd ~/sgs2/kernel/siyahkernel3</pre>
</p>
<p>
<pre>./build_kernel.sh</pre>
</p>
<p>&nbsp;</p>
<p>Sobald der Kernel kompiliert wurde findest du folgende Datei &#8220;zImage&#8221;, welche wiederum der Kernel selber ist. <img src='http://suckup.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>PS: hier meine Version kompiliert mit gcc-4.6 &amp; <a title="gcc 4.6" href="http://gcc.gnu.org/gcc-4.6/changes.html" target="_blank">-Ofast</a> &amp; neuem Tweak-Script ->  <a href="http://samdroid.voku-online.de/index.php?action=list&amp;dir=SGS2&amp;order=name&amp;srt=yes">http://samdroid.voku-online.de/index.php?action=list&amp;dir=SGS2&amp;order=name&amp;srt=yes</a></p>
<p>&nbsp;</p>
<p><strong>Tipps:</strong> </p>
<p>- CyanogenMod 9 Flashen -> <a title="AOSP 4.0.4 Cyanogen (mod) 9 Flash Anleitung" href="http://www.android-hilfe.de/custom-roms-fuer-samsung-galaxy-s2/220145-rom-imm76d-aosp-4-0-4-cyanogen-mod-9-flash-anleitung-faq-11-04-2012-a.html" target="_blank">AOSP 4.0.4 Cyanogen (mod) 9 Flash Anleitung</a></p>
<p>- keine Angst vor git -> man braucht meistens nur ein paar Befehle -> &#8220;git pull&#8221; &amp; &#8220;git  push&#8221; &amp; &#8220;git add &#8211;all&#8221; </p>
<p>- git? -> <a title="Git - HowTo - deutsch" href="http://rogerdudler.github.com/git-guide/index.de.html" target="_blank">http://rogerdudler.github.com/git-guide/index.de.html </a></p>
<p>- Kernel-Config -> ~/sgs2/kernel/siyahkernel3/arch/arm/configs/siyah_defconfig </p>
<p>- Tweak Skript ->  <a title="Tweak SGS2" href="https://github.com/voku/initramfs3/blob/master/sbin/ext/thunderbolt.sh" target="_blank">~/sgs2/kernel/initramfs3/sbin/ext/thunderbolt.sh</a></p>
<p>- Makefile ->  ~/sgs2/kernel/siyahkernel3/Makefile </p>

<div class="wp_rp_wrap  wp_rp_plain" ><div class="wp_rp_content"><h3 class="related_post_title">&Auml;hnliche Blog-Eintr&auml;ge</h3><ul class="related_post wp_rp" style="visibility: visible"><li data-position="0" data-poid="in-1773" data-post-type="none" ><a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/08/Android-Dosenfischer-150x150.png" alt="Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700" /></a>23. August 2010 -- <a href="http://suckup.de/howto/android-2-2-froyo-cyanogenmod-samsung-galaxy-spica-i5700/" class="wp_rp_title">Android 2.2 Froyo (CyanogenMod) &#8211; Samsung GALAXY SPICA I5700</a></li><li data-position="1" data-poid="in-4671" data-post-type="none" ><a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/14.jpg" alt="Screenshots von Android via shell" /></a>9. Juni 2011 -- <a href="http://suckup.de/linux/screenshots-von-android-via-shell/" class="wp_rp_title">Screenshots von Android via shell</a></li><li data-position="2" data-poid="in-4553" data-post-type="none" ><a href="http://suckup.de/howto/optimized-android-apps-mit-linux-erstellen/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/5.jpg" alt="Optimized Android-Apps mit Linux erstellen" /></a>6. M&auml;rz 2011 -- <a href="http://suckup.de/howto/optimized-android-apps-mit-linux-erstellen/" class="wp_rp_title">Optimized Android-Apps mit Linux erstellen</a></li><li data-position="3" data-poid="in-1096" data-post-type="none" ><a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_thumbnail"><img src="http://suckup.de/wp-content/uploads//2010/07/CAP201007232027-150x150.jpg" alt="Free Android-App Sammlung " /></a>28. Juli 2010 -- <a href="http://suckup.de/linux/android/free-android-app-sammlung/" class="wp_rp_title">Free Android-App Sammlung </a></li></ul></div></div>
<img src="http://feeds.feedburner.com/~r/voku-online/~4/yAPsZ_erpQo" height="1" width="1"/>]]></content:encoded><description>Das GalaxyS2 l&amp;#228;uft ziemlich gut mit dem neuen nightly-builds von CM9 (Android 4.0.4) &amp;#38; den neusten Google-Apps &amp;#38; dem SiyahKernel.
Ich m&amp;#246;chte hier kurz erkl&amp;#228;ren, wie du einen Kernel f&amp;#252;r das Samsung S2 (CM9) auf Basis vom SiyahKernel kompilierst.   
&amp;#160;
1.) Installiere Linux + Cross-Compiler 
Als  [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://suckup.de/howto/cross-compiling-android-kernel-samsung-galaxys2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://suckup.de/howto/cross-compiling-android-kernel-samsung-galaxys2/</feedburner:origLink></item></channel></rss>
