<?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>miZine &#187; php</title>
	<atom:link href="http://mizine.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://mizine.de</link>
	<description>Mac, Internet, SEO, eCommerce, Gadgets und Wordpress</description>
	<lastBuildDate>Thu, 24 May 2012 07:26:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<atom:link rel='hub' href='http://mizine.de/?pushpress=hub'/>
		<item>
		<title>Multidimensionale Arrays per Zufall durchmischen</title>
		<link>http://mizine.de/html/multidimensionale-arrays-per-zufall-durchmischen/</link>
		<comments>http://mizine.de/html/multidimensionale-arrays-per-zufall-durchmischen/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 16:02:56 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[web-development]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[durchmischen]]></category>
		<category><![CDATA[mischen]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shuffle]]></category>
		<category><![CDATA[zafallsprinzip]]></category>
		<category><![CDATA[zufall]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=2871</guid>
		<description><![CDATA[Multidimensionale Arrays per Zufall durchmischen und nur eine bestimmte Teilmenge ausgeben]]></description>
			<content:encoded><![CDATA[<p>Für große SQL Tabellen eignet sich <code>ORDER BY RAND() LIMIT 4</code> nicht um eine zufällige Datenmenge aus der Datenbank zu holen &#8211; erklärt <a href="http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/" title="große Datenmengen aus Sql randomisiert ausgeben">Anton Titov in seinem Blog</a>. Alternativ lässt sich per PHP das Ergebnisarray bearbeiten.</p>
<p>Ein &#8220;normales Array&#8221; mischt man einfach mit <code>$my_array = array_rand($_my_array)</code>. Man kann die Anzahl der Ergebnisse sogar beinflussen indem <code>array_rand($my_array, 4)</code> noch einen <code>(int)</code> Wert für die Anzahl der Elemente angehängt bekommt. Doch was mache ich mit einem mehrdimensionalem Array? Hier funktioniert <code>array_rand()</code> nicht.</p>
<p>Im <a href="http://php.net/manual/de/function.array-rand.php">PHP Manual zu array_rand()</a> findet sich nur eine relativ aufwändige Funktion. Doch es geht auch einfacher &#8211; einfach mit</p>
<pre><code>shuffle($my_array);
$my_array = array_slice($my_array,0,4);</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/html/multidimensionale-arrays-per-zufall-durchmischen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit: Probleme mit PHP und Apache2</title>
		<link>http://mizine.de/linux/bitte-um-hilfe-probleme-mit-php-und-apache2/</link>
		<comments>http://mizine.de/linux/bitte-um-hilfe-probleme-mit-php-und-apache2/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 08:41:02 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Einrichtung]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Problempunkte]]></category>

		<guid isPermaLink="false">http://mizine.de/allgemein/bitte-um-hilfe-probleme-mit-php-und-apache2/</guid>
		<description><![CDATA[EDIT: Lösung des Problems Warum auch immer war meine php5.conf komplett falsch! Sie müsste nämlich wie folgt aussehen: &#60;IfModule mod_php5.c&#62; &#60;FilesMatch "\.ph(p3?&#124;tml)$"&#62; SetHandler application/x-httpd-php &#60;/FilesMatch&#62; &#60;FilesMatch "\.phps$"&#62; SetHandler application/x-httpd-php-source &#60;/FilesMatch&#62; &#60;/IfModule&#62; Vielen Dank an BlackFate vom irc.debian.org ! Problembeschreibung Hallo zusammen, heute wende ich mich hier im Blog an euch um hoffentlich endlich mein Problem [...]]]></description>
			<content:encoded><![CDATA[<h3><marker>EDIT: Lösung des Problems</marker></h3>
<p>Warum auch immer war meine php5.conf komplett falsch!<br />
Sie müsste nämlich wie folgt aussehen:</p>
<pre><code>&lt;IfModule mod_php5.c&gt;
    &lt;FilesMatch "\.ph(p3?|tml)$"&gt;
        SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;
    &lt;FilesMatch "\.phps$"&gt;
        SetHandler application/x-httpd-php-source
    &lt;/FilesMatch&gt;
&lt;/IfModule&gt; </code></pre>
<p>Vielen Dank an BlackFate vom irc.debian.org !</p>
<p><span id="more-2008"></span></p>
<h3>Problembeschreibung</h3>
<p>Hallo zusammen, heute wende ich mich hier im Blog an euch um hoffentlich endlich mein Problem mit PHP5 und Apache2 auf einem hetzner Server zu lösen. </p>
<p>Ich habe es auf einem <strong>debian lenny 64bit</strong> wie folgt installiert:<br /> <code># apt-get install php5 libapache2-mod-php5 php5-cli php5-common php5-cgi</code></p>
<p>In der <em>/etc/apache2/mods-enabled/php5.conf</em> steht: </p>
<pre><code>&lt;ifmodule mod_php5.c&gt;
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
&lt;/ifmodule&gt;</code></pre>
</p>
<p>in der <em>/etc/php5/apache2/php.ini</em> ist <br />
<code>engine = On</code></p>
<p>die Vhosts sind in der <em>/etc/apache2/sites-available/default</em> wie folgt eingetragen: </p>
<pre><code>&lt;virtualhost xx.xx.xx.xx:80&gt;
  ServerAdmin  dite@xx.xx.xx.xx.xx.net
  DocumentRoot /var/www/domain1/htdocs
  &lt;directory&gt;
    Options FollowSymLinks
    AllowOverride FileInfo
  &lt;/directory&gt;
  &lt;Directory /var/www/&gt;
    Options FollowSymLinks
    AllowOverride FileInfo
    Order allow,deny
    allow from all
&lt;/virtualhost&gt;</code></pre>
</p>
<p>in der php5.load habe ich <br /> php5.load auf <em>/usr/lib/apache2/modules/libphp5.so</em> und <br /> php5.load auf <em>/usr/lib64/apache2/modules/libphp5.so</em> probiert, kein Unterschied</p>
<p>404 Fehlerseiten enthalten den Hinweis, dass Apache mit PHP läuft<br />
<img src="http://mizine.de/wp-content/uploads/2010/01/Screenshot-2010-01-18-um-10.20.43.png" alt="" title="Screenshot 2010-01-18 um 10.20.43" width="479" height="134" class="alignnone size-full wp-image-2012 colorbox-2008" /></p>
<p>Das PHP Modul ist in Apache eingebunden, da es in der <em>/etc/apache2/mods-enabled/</em> steht und mir a2enmod folgendes liefert: </p>
<pre><code>Debian-50-lenny-64-minimal:~# a2enmod php5
Module php5 already enabled</code></pre>
</p>
<p>Wenn ich nun eine php Datei via http aufrufen möchte wird Sie runtergeladen und wenn ich <code>&lt;?php phpinfo() ?&gt;</code> einbinde zeigt es mir nur eine weiße Seite.</p>
<p>Das ist äußerst seltsam und ich kann es mir nicht erklären. Laut diversen Foren sind meine Einstellungen alle korrekt!</p>
<p>Ich bin schon echt am verzweifeln und hetzner bietet NULL Software Support! :(</p>
<p>Wenn ich in der bash <code>php index.php</code> aufrufe, wird es korrekt ausgeführt. Führe ich die gleiche Datei mit <code>lynx http://localhost/index.php</code> auf, geht es wieder nicht! es liegt also weder an der Firewall, noch meinen Ports?!</p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/linux/bitte-um-hilfe-probleme-mit-php-und-apache2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>replace self-defined chars with htmlcode</title>
		<link>http://mizine.de/html/replace-self-defined-chars-with-htmlcode/</link>
		<comments>http://mizine.de/html/replace-self-defined-chars-with-htmlcode/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:33:19 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[web-development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[entfernen]]></category>
		<category><![CDATA[escape]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[str_replace]]></category>
		<category><![CDATA[Umlaute]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=1717</guid>
		<description><![CDATA[str_replace ( array ( '&#38;', '&#60;', '&#62;','ä','Ä','ö','Ö','ü','Ü','ß' ), array ( '&#38;amp;', '&#38;lt;' , '&#38;gt;', '&#38;auml;','&#38;Auml;', '&#38;oum;l','&#38;Ouml;' ,'&#38;uuml;','&#38;Uuml;','&#38;szlig;' ), $string ); str_repalce durchsucht in diesem Fall die Quelle $string mit einem Suchmuster, welches im ersten Array definiert ist und ersetzt diese durch die dazugehörigen Zeichen im zweiten Array.]]></description>
			<content:encoded><![CDATA[<pre><code >str_replace ( array ( '&amp;', '&lt;', '&gt;','ä','Ä','ö','Ö','ü','Ü','ß' ),
array ( '&amp;amp;', '&amp;lt;' , '&amp;gt;', '&amp;auml;','&amp;Auml;', '&amp;oum;l','&amp;Ouml;'
       ,'&amp;uuml;','&amp;Uuml;','&amp;szlig;' ),
$string );</code></pre>
<p><code>str_repalce</code> durchsucht in diesem Fall die Quelle <code>$string</code> mit einem Suchmuster, welches im ersten Array definiert ist und ersetzt diese durch die dazugehörigen Zeichen im zweiten Array. </p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/html/replace-self-defined-chars-with-htmlcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GD Library Probleme bei 1und1</title>
		<link>http://mizine.de/html/gd-library-probleme-bei-1und1/</link>
		<comments>http://mizine.de/html/gd-library-probleme-bei-1und1/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 17:17:20 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[1und1]]></category>
		<category><![CDATA[gd library]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[NextGen Gallery]]></category>
		<category><![CDATA[nggallery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Speicher]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=1613</guid>
		<description><![CDATA[1und1 Server scheinen mächtige Probleme mit der GD Library zu haben. Will man beispielsweise mit der WordPresserweiterung NextGen Gallery die Bilder automatisch verkleinern, Thumbnails erstellen oder die Größe der Bilder reduzieren bricht der Vorgang meist ohne einer nachvollziehbaren Fehlermeldung vom Server ab. Ich hatte es bei einem Projekt nur mit Bildern unter 900&#215;600 geschafft, was [...]]]></description>
			<content:encoded><![CDATA[<p>1und1 Server scheinen mächtige Probleme mit der GD Library zu haben. Will man beispielsweise mit der WordPresserweiterung <a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/">NextGen Gallery</a> die Bilder automatisch verkleinern, Thumbnails erstellen oder die Größe der Bilder reduzieren bricht der Vorgang meist ohne einer nachvollziehbaren Fehlermeldung vom Server ab. Ich hatte es bei einem Projekt nur mit Bildern unter 900&#215;600 geschafft, was aber auch nicht immer ging. </p>
<p>Lang habe ich nach einem Ausweg dafür gesucht und dann entdecke ich zufällig eine wirklich simple Rätsels Lösung. Anstatt PHP 4.x zu benutzen, teile man dem Server mit, dass man von ab an nur noch PHP 5.x verwenden möchte &#8212; und die Lösung wär nicht einfach, wenn das nicht nur mit Hilfe einer einzigen Zeile in der .htaccess Datei ginge.</p>
<p>Also einfach eine neue .htaccess Datei im Wurzelverzeichnis von WordPress (root) anlegen (falls nicht eh schon eine vorhanden ist) und darin an oberster Stelle folgendes eintragen:</p>
<pre><code># PHP5 auf 1und1 einschalten
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php</code></pre>
<p>Zum weiterlesen <a href="http://alexrabe.de/2008/03/21/11-3/">geht es hierlang</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/html/gd-library-probleme-bei-1und1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sicheres Kontaktformular mit jQuery und PHP erstellen</title>
		<link>http://mizine.de/html/sicheres-kontaktformular-mit-jquery-und-php-erstellen/</link>
		<comments>http://mizine.de/html/sicheres-kontaktformular-mit-jquery-und-php-erstellen/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:38:32 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[web-development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kontaktformular]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=1565</guid>
		<description><![CDATA[Ein Kontaktformular ist mit PHP eigentlich schnell erstellt und lässt sich einfachste Weise in jede Webseite einbauen. Was leider oft vergessen wird ist die Sicherheit -- nicht nur zum Schutz vor SPAM des Kontaktformular-Administrators, sondern auch zum Schutz vor Injections, die das Skript zum versenden von SPAM unter dem Namen des Webseitenbetreibers missbrauchen können.

<blockquote>Oft wird diese vermeintlich triviale Website-Funktion von Programmier-Anfängern umgesetzt, die keine Erfahrung mit der sicheren Web-Programmierung haben. Solche Skripte prüfen die Formular-Eingaben nicht auf unerlaubte Zeichen - dadurch können sie von Spammern als Spam-Verteiler missbraucht werden.</blockquote>]]></description>
			<content:encoded><![CDATA[<p>Ein Kontaktformular ist mit PHP eigentlich schnell erstellt und lässt sich einfachste Weise in jede Webseite einbauen. Was leider oft vergessen wird ist die Sicherheit &#8212; nicht nur zum Schutz vor SPAM des Kontaktformular-Administrators, sondern auch zum Schutz vor Injections, die das Skript zum versenden von SPAM unter dem Namen des Webseitenbetreibers missbrauchen können.</p>
<blockquote><p>Oft wird diese vermeintlich triviale Website-Funktion von Programmier-Anfängern umgesetzt, die keine Erfahrung mit der sicheren Web-Programmierung haben. Solche Skripte prüfen die Formular-Eingaben nicht auf unerlaubte Zeichen &#8211; dadurch können sie von Spammern als Spam-Verteiler missbraucht werden &#8230; Das oberste Gebot eines jeden Web-Programmierers muss lauten: &#8220;Vertraue nichts und niemandem&#8221;. Daten, die ein Skript aus HTML-Formularen, POST/GET-Übergabeparametern oder sonstwoher erhält müssen grundsätzlich als potenziell gefährlich angesehen und vor der Verarbeitung &#8220;gesäubert&#8221; werden. Eine &#8220;gesunde&#8221; Portion Paranoia ist sehr hilfreich beim Web-Programmieren, auch wenn Auftraggeber oder Vorgesetzte manchmal schief gucken mögen.</p></blockquote>
<p>Auch wenn man ein Webskript nicht so sicher machen kann wie ein Tresor, lässt sich ein Kontaktformular doch recht einfach absichern. Damit die SPAMmer nicht so einfach freies Futter finden, <a href="http://www.drweb.de/magazin/spam-gefahr-durch-kontaktformulare/">hier also eine Anleitung, wie ein Formular sehr einfach abgesichert werden kann</a> &#8212; <strike>und dazu passend ein <a href="http://ocean90.wphelper.de/2478/tutorial-ajax-kontaktformular-mit-jquery-und-php/">How-To zur Erstellung eines sicheres Kontaktformulars mit PHP und jQuery</a></strike></p>
<p><span class="dropcap">EDIT:</span> ich habe seit der Erstellung des Posts gelernt, dass eine alleinige JS Validierung aus Sicherheitstechnischer Sicht eigentlich gar keine ist, denn: <em>&#8220;Die Validierung von Formularen über JavaScript kann zwar nützlich sein, da sie oft schneller ist und die Seite nicht neu geladen werden muss, allerdings ist sie kein Ersatz für eine erneute Validierung der Daten auf der Seite des Servers. Sind die Daten nicht serverseitig validiert worden, kann man davon ausgehen dass sie überhaupt nicht validiert wurden.&#8221;</em> [<a href="http://www.webmasterpro.de/server/article/gaengige-sicherheitsprobleme-im-web.html#goto-formularvalidierungsprobleme">gängige Sicherheitsprobleme im Web</a></p>
<p>Zudem <em>"hat sich leider immer wieder herausgestellt, das es mit Javascript unmöglich ist, eine Validierung zu garantieren. Irgendwelche Trottel haben Javascript immer ausgeschaltet oder es buggt. "</em> [<a href="http://www.phpblogger.net/2007/07/09/formularinhalte-mit-php-validieren/">phpBlogger</a>]</p>
<p>Ich werde demnächst also nur noch eine phpValidierung durchführen, und wohlmöglich mit Hilfe dieser <a href="http://www.phpblogger.net/2007/07/09/formularinhalte-mit-php-validieren/">Bibliothek</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/html/sicheres-kontaktformular-mit-jquery-und-php-erstellen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tweets2Delicious &#8211; Twittermeldungen automatisch an delicious weiterreichen</title>
		<link>http://mizine.de/internet/tweets2delicious-twittermeldungen-automatisch-an-delicious-weiterreichen/</link>
		<comments>http://mizine.de/internet/tweets2delicious-twittermeldungen-automatisch-an-delicious-weiterreichen/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 23:37:30 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Headline]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[del.icio.us]]></category>
		<category><![CDATA[hashtags]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Skript]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=1470</guid>
		<description><![CDATA[Zahlreiche Services wie TweetBackup oder Tag.this erlauben eine kostenfreie Sicherung eines festgelegten Twitter-Streams. Tweets2Delicious ist einer mehr, der eigene Tweets, die mit mindestens einem Link und Hashtag versehen sind,in vollwertige Bookmarks bei Delicious umwandelt.
Andere Tools haben meist jedoch den Nachteil, dass die Hashtags nicht als Tags und der eigene Tweet-Text nicht in delicious übernommen werden. Tweets2Delicious hingegen erlaubt es, alle Hashtags und den eigenen Tweettext nach delicious zu übernehmen. Zudem werden nicht alle Tweets gesichert, sondern nur solche, die mindestens eine URL und einen Hashtag beinhalten.]]></description>
			<content:encoded><![CDATA[<h3><marker>Update:</marker></h3>
<p> Ihr könnt nun meine angepasste Version weiter unten downloaden. </p>
<p><a href="http://mizine.de/wp-content/uploads/2009/08/twitter2delicious.jpg"><img src="http://mizine.de/wp-content/uploads/2009/08/twitter2delicious-150x150.jpg" alt="twitter2delicious" title="twitter2delicious" width="150" height="150" class="alignleft size-thumbnail wp-image-1477 colorbox-1470" /></a></p>
<h3>Aus spannenden Tweets werden nützliche Bookmarks</h3>
<p><em>Zahlreiche Services wie <a href="http://tweetbackup.com/">TweetBackup</a> oder <a href="http://mizine.de/internet/the-ultimate-delicious-tools-pack-for-a-mac/">Tag.this</a> erlauben eine kostenfreie Sicherung eines festgelegten Twitter-Streams. <a href="http://playground.ebiene.de/2321/tweets-delicious-backup/">Tweets2Delicious</a> ist einer mehr, der eigene Tweets, die mit <marker>mindestens einem Link und Hashtag versehen sind,</marker> in vollwertige Bookmarks bei Delicious umwandelt.</em><br />
Andere Tools haben meist jedoch den Nachteil, dass die Hashtags nicht als Tags und der eigene Tweet-Text nicht in delicious übernommen werden. <a href="http://playground.ebiene.de/2321/tweets-delicious-backup/">Tweets2Delicious</a> hingegen erlaubt es, alle Hashtags und den eigenen Tweettext nach delicious zu übernehmen. Zudem werden nicht alle Tweets gesichert, sondern nur solche, die mindestens eine URL und einen Hashtag haben.<br />
<em>Mit einem täglichen Cronjob – exemplarisch bei Cronjob.de oder vom eigenen Webhoster ausgeführt – kann der Export der Tweets mit Leichtigkeit automatisiert werden.</em></p>
<div class="ad"><script type="text/javascript"><!--
google_ad_client = "pub-5182098267045147";
/* mizine bigbox */
google_ad_slot = "7650732569";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>Das Skript war für mich genau das, wonach ich schon seit einigen Wochen gesucht habe. Allerdings hatte es meiner Meinung nach einige Schwächen, die ich nun beseitigt habe.</p>
<p>Ein großer Nachteil &#8212; finde ich &#8212; war, dass der Tweet-Text als Titel und nicht als Description in die delicious Bookmarks übernommen wurde. In der Description landete bloß ein Werbeslogan für das Skript selbst. Ich habe es jetzt so modifiziert, dass es für jede URL den Titel der Webseite holt und bei delicious ablegt. Der Eigene Tweet-Text wird jetzt &#8212; gefolgt von der Werbemessage &#8212; als Description gespeichert.</p>
<p>Ferner hat das Skript im Text alles ab der URL gelöscht, so dass &#8212; je nach Tweet-Stil &#8212; komische Schnipsel bei delicious landeteten:</p>
<div style="padding: 10px; background-color:#ececec">
<b>Aus Twitter Text:</b><br />
RT: @maRk Hatte Ärger mit #Umlaute in #Reguläre #Ausdrücke &#8211; dank dieser Seite http://url.de nicht mehr #utf8 #lokalisierung #deutsch (via @OgNor) </p>
<p><b>wurde so:</b><br />
RT: @maRk Hatte Ärger mit Umlaute in Reguläre Ausdrücke &#8211; dank dieser Seite
</div>
<p>Was natürlich unschön ist, und in diesem Fall sogar den Sinn total verfälscht.</p>
<div style="padding: 10px; background-color:#ececec">
<b>nun heißt der delicious Eintrag korrekterweise:</b><br />
Hatte Ärger mit Umlaute in Reguläre Ausdrücke &#8211; dank dieser Seite nicht mehr utf8 lokalisierung deutsch
</div>
<p>Ferner waren keine Umlaute in den Tags möglich &#8212; die Wörter waren nach dem Umlaut abgeschnitten, die nun aber korrekt übernommen werden.</p>
<p>Sofern meine Änderungen beim Autor nicht auf Unmut treffen, kann ich ja das geänderte Skript online stellen.</p>
<h3><marker>Update:</marker></h3>
<p>Hier ist nun also <a href='http://mizine.de/wp-content/uploads/2009/08/tweets2delicious.zip'>meine angepasste Version</a> (zip)</p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/internet/tweets2delicious-twittermeldungen-automatisch-an-delicious-weiterreichen/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>SQL-Injections in PHP vermeiden</title>
		<link>http://mizine.de/internet/sql-injections-in-php-vermeiden/</link>
		<comments>http://mizine.de/internet/sql-injections-in-php-vermeiden/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 15:14:20 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL-Injection]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=1159</guid>
		<description><![CDATA[In PHP steht zu diesem Zweck für fast jede verwendete Datenbank eine Escape-Funktion bereit. Ein Beispiel für MySQL: anstatt $abfrage = "SELECT spalte1 FROM tabelle WHERE spalte2 = '".$_POST['spalte2Wert']."'"; $query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!"); sollte Folgendes verwendet werden: $abfrage = "SELECT spalte1 FROM tabelle WHERE spalte2 = '".mysql_real_escape_string($_POST['spalte2Wert'])."'"; $query = mysql_query($abfrage) or die("Datenbankabfrage [...]]]></description>
			<content:encoded><![CDATA[<p>In PHP steht zu diesem Zweck für fast jede verwendete Datenbank eine Escape-Funktion bereit.</p>
<p>Ein Beispiel für MySQL: anstatt</p>
<pre><code>$abfrage = "SELECT spalte1
            FROM tabelle
            WHERE spalte2 = '".$_POST['spalte2Wert']."'";
$query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");</code></pre>
<p>sollte Folgendes verwendet werden:</p>
<pre><code>$abfrage = "SELECT spalte1
            FROM tabelle
            WHERE spalte2 = '".mysql_real_escape_string($_POST['spalte2Wert'])."'";
$query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");</code></pre>
<p>Eine weitere Möglichkeit ist die Typumwandlung von Übergabeparametern.</p>
<pre><code>$abfrage = "SELECT spalte1
            FROM tabelle
            WHERE spalte2 = " . intval($_POST['spalte2Wert']);
$query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");</code></pre>
<p>Ab PHP 5.1 sollten PHP Data Objects für Datenbankabfragen verwendet werden.</p>
<pre><code>$dbh-&gt;exec("INSERT INTO REGISTRY (name, value)
            VALUES (".$dbh-&gt;quote($name,PDO::PARAM_STR).", ".$dbh-&gt;quote($value,PDO::PARAM_INT).")");</code></pre>
<p>Oder als Prepared Statement:</p>
<pre><code>$stmt = $dbh-&gt;prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt-&gt;bindParam('name', $name);
$stmt-&gt;bindParam('value', $value);</code></pre>
<p><script type="text/javascript"><!--
google_ad_client = "pub-5182098267045147";
/* 468x60, Erstellt 21.03.08 */
google_ad_slot = "7792313158";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Häufig wird aus Bequemlichkeit einfach die Konfigurationsoption „magic_quotes_gpc“ auf „on“ gestellt, mit der von außen kommende Benutzereingaben automatisch maskiert werden. Doch dies ist nicht empfehlenswert. Denn manche nicht selber programmierte Skripte setzen eigenständig Funktionen wie etwa addslashes() oder das bereits weiter oben genannte mysql_real_escape_string() ein. Das heißt, dass bereits allen relevanten Zeichen in den Benutzereingaben durch so genannte Magic Quotes ein Backslash vorangestellt wurde und nun durch die Escape-Funktion erneut ein Backslash vorangestellt wird. Somit werden die Benutzereingaben verfälscht und man erhält beispielsweise anstatt eines einfachen Anführungszeichens ein Anführungszeichen mit vorangestelltem Backslash (\&#8221;). Auch aus Gründen der Portabilität sollte bei der Entwicklung von Anwendungen auf diese Einstellung verzichtet und stattdessen alle Eingaben manuell validiert und maskiert werden, da nicht davon ausgegangen werden kann, dass auf allen Systemen dieselben Einstellungen vorherrschen oder möglich sind.</p>
<p>Das ist <a href="http://de.wikipedia.org/wiki/SQL-Injection#PHP">ein Auszug aus diesem Artikel</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/internet/sql-injections-in-php-vermeiden/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Browserswitch &#8212; zwischen IE und FF unterscheiden</title>
		<link>http://mizine.de/html/browserswitch-zwischen-ie-und-ff-unterscheiden/</link>
		<comments>http://mizine.de/html/browserswitch-zwischen-ie-und-ff-unterscheiden/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 12:55:34 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[web-development]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[Weiche]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=817</guid>
		<description><![CDATA[Die Lösung heißt: conditional comments Normal comment: &#60;!&#45;&#45; Comment text &#45;&#45;&#62; Conditional comment: &#60;!&#45;&#45;[If expression]&#62; HTML &#60;![endif]&#45;&#45;&#62; Für den einfachsten Switch bedeutet dies: &#60;!&#45;&#45;[If IE]&#62; HTML &#60;![endif]&#45;&#45;&#62; Hier wird jeder IE (ab v5) den eingeklammerten HTML code ausführen Die umgekehrte Richtung geht leider nur mit einem nicht XHTML validen code, nämlich: &#60;!&#45;&#45;[if !IE]&#62;&#60;!&#45;&#45;&#62; HTML &#60;!&#45;&#45;&#60;![endif]&#45;&#45;&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/14678786@N00/3046057117" title="wanted: dead"><img class="colorbox-817"  src="http://farm4.static.flickr.com/3137/3046057117_09db9ee7b1_s.jpg" style="float:left; margin:0 10px 5px 0;" /></a>Die Lösung heißt: <em>conditional comments</em></p>
<p>Normal comment: &lt;!&#45;&#45; Comment text &#45;&#45;&gt;<br />
Conditional comment: &lt;!&#45;&#45;[If <var>expression</var>]&gt; HTML &lt;![endif]&#45;&#45;&gt;</p>
<p>Für den einfachsten Switch bedeutet dies:<br />
&lt;!&#45;&#45;[If IE]&gt; HTML &lt;![endif]&#45;&#45;&gt;<br />
Hier wird jeder IE (ab v5) den eingeklammerten HTML code ausführen</p>
<p>Die umgekehrte Richtung geht leider nur mit einem nicht XHTML validen code, nämlich:<br />
&lt;!&#45;&#45;[if !IE]&gt;<marker>&lt;!&#45;&#45;&gt;</marker> HTML <marker>&lt;!&#45;&#45;</marker>&lt;![endif]&#45;&#45;&gt;</p>
<p>Das Ganze geht auch komplexer:</p>
<ul style="list-style-type:circle">
<li><b>! (negation)</b><br />
Use the negation to select all versions except the one specified, e.g.<br />
<code class="inline">[If !IE 6]</code> will select IE 5, 5.5 and 7.</li>
<li><b>lt (less than)</b><br />
Select any versions less than the one specified, e.g. <code class="inline">[If lt IE 6]</code> will select IE 5 and 5.5.</li>
<li><b>lte (less than or equal)</b><br />
e.g. <code class="inline">[If lte IE 6]</code> will select IE 5, 5.5 and 6.</li>
<li><b>gt (greater than)</b><br />
Select any versions greater than the one specified, e.g. <code class="inline">[If gt IE 6]</code> will select IE 7 (and any later versions that may appear).</li>
<li><b>gte (greater than or equal)</b><br />
e.g. <code class="inline">[If gte IE 6]</code> will select IE 6 and 7 (and later).</li>
</ul>
<p>Für weitere Informationen [<a href="http://www.unintentionallyblank.co.uk/2006/09/19/if-internet-explorer-then-do-something-else-a-how-to/">Quelle</a>]<br />
<span id="more-817"></span><br />
<script type="text/javascript"><!--
google_ad_client = "pub-5182098267045147";
/* 468x60, Erstellt 21.03.08 */
google_ad_slot = "7792313158";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/html/browserswitch-zwischen-ie-und-ff-unterscheiden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Enable PEAR on OS-X XAMPP</title>
		<link>http://mizine.de/mac/howto-enable-pear-on-os-x-xampp/</link>
		<comments>http://mizine.de/mac/howto-enable-pear-on-os-x-xampp/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 09:44:01 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[edit]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[mampp]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[PEAR]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[use]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=668</guid>
		<description><![CDATA[PEAR is comming out with XAMPP but it is not installed by default. Here you&#8217;ll find how to install it easily. cd /Applications/xampp/xamppfiles/lib/php/pear sudo php pearcmd.php channel-update pear.php.net sudo php pearcmd.php install PEAR Edit /Applications/xampp/etc/php.ini and at the very end of the file note the lines: 1133 ;***** Added by go-pear 1134 include_path=".:/Applications/xampp/xamppfiles/lib/php" 1135 ;***** [...]]]></description>
			<content:encoded><![CDATA[<p>PEAR is comming out with XAMPP but it is not installed by default. Here you&#8217;ll find how to install it easily.<br />
<span id="more-668"></span></p>
<pre><code>cd /Applications/xampp/xamppfiles/lib/php/pear
sudo php pearcmd.php channel-update pear.php.net
sudo php pearcmd.php install PEAR</code></pre>
<p><strong>Edit /Applications/xampp/etc/php.ini and at the very end of the file note the lines:</strong></p>
<pre><code>1133 ;***** Added by go-pear
1134 include_path=".:/Applications/xampp/xamppfiles/lib/php"
1135 ;*****</code></pre>
<p><strong>change the configuration to read:</strong></p>
<pre><code>include_path = ".:/Applications/xampp/xamppfiles/lib/php
                 :/Applications/xampp/xamppfiles/lib/php/pear"</code></pre>
<p><strong>restart mammp</strong></p>
<p>thanks to <a href="http://www.freshblurbs.com/howto-enable-pear-os-x-xampp">freshblurbs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/mac/howto-enable-pear-on-os-x-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XAMPP 1.6.4 + Ubuntu 64-Bit</title>
		<link>http://mizine.de/linux/xampp-164-ubuntu-64-bit/</link>
		<comments>http://mizine.de/linux/xampp-164-ubuntu-64-bit/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 15:03:16 +0000</pubDate>
		<dc:creator>Viktor Dite</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[32-bit]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[64]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[kompatibilität]]></category>
		<category><![CDATA[lampp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://mizine.de/?p=439</guid>
		<description><![CDATA[Xampp 1.6.4 lässt sich auf der Ubuntu 64-Bit nicht ohne weiteres starten. Beim Versuch lampp zu starten kommt die Fehlermeldung dass Xampp bisher nur auf 32-bit Systemen läuft. Der Problems Lösung ist eine kleine Library namens ia32-libs. Also einfach mittels apt-get installieren sudo aptitude install ia32-libs und gut ist. Nun lässt sich lampp wie gewohnt [...]]]></description>
			<content:encoded><![CDATA[<p>Xampp 1.6.4 lässt sich auf der Ubuntu 64-Bit nicht ohne weiteres starten. Beim Versuch lampp zu starten kommt die Fehlermeldung dass Xampp bisher nur auf 32-bit Systemen läuft. Der Problems Lösung ist eine kleine Library namens ia32-libs. Also einfach mittels apt-get installieren</p>
<pre><code>sudo aptitude install ia32-libs</code> </pre>
<p>und gut ist. Nun lässt sich lampp wie gewohnt starten.</p>
<p>Der Dank geht an Jens!</p>
]]></content:encoded>
			<wfw:commentRss>http://mizine.de/linux/xampp-164-ubuntu-64-bit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

