<?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>André Bloggt &#187; PHP</title>
	<atom:link href="http://blog.andreflemming.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.andreflemming.de</link>
	<description>Ein Pfadfinder im Internet</description>
	<lastBuildDate>Tue, 24 Jan 2012 15:43:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Piwik automatisch laden</title>
		<link>http://blog.andreflemming.de/2012/01/18/piwik-automatisch-laden/</link>
		<comments>http://blog.andreflemming.de/2012/01/18/piwik-automatisch-laden/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 11:47:02 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[mod_include]]></category>
		<category><![CDATA[mod_inject]]></category>
		<category><![CDATA[mod_layout]]></category>
		<category><![CDATA[mod_substitute]]></category>
		<category><![CDATA[Piwik]]></category>
		<category><![CDATA[Privat]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=801</guid>
		<description><![CDATA[Heute gibts mal wieder was aus der Ecke der nützlichen Sachen. Wie einige von euch vielleicht wissen, habe ich seit einigen Monaten ein VServer. Davor war ich mit all meinen Webseiten bei pytal.de, wo auch jetzt noch einige Seiten von mir liegen. Bei Pytal gab es immer so eine kleine Statistik wo man zumindest sehen [...]]]></description>
			<content:encoded><![CDATA[<p>Heute gibts mal wieder was aus der Ecke der nützlichen Sachen.<br />
Wie einige von euch vielleicht wissen, habe ich seit einigen Monaten ein VServer. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Davor war ich mit all meinen Webseiten bei <a href="http://pytal.de">pytal.de</a>, wo auch jetzt noch einige Seiten von mir liegen.</p>
<p>Bei Pytal gab es immer so eine kleine Statistik wo man zumindest sehen konnte, wie viele User auf der Seite waren, daher hatte ich mir nie wirklich Gedanken gemacht eine eigene Statistik auftzustellen. Für mich ist sowas eigentlich auch gar nicht wichtig, ich möchte im Prinzip nur ab und an mal sehen, wie viele Leute denn auf der Webseite waren.<br />
Naja jetzt mit einem eigenen Server gibt es diese Statistik von Pytal natürlich nicht mehr, also musste was eigenes her.</p>
<p>Piwik &#8230;. schon viel von gelesen, aber noch nie ausprobiert.</p>
<p>Die Benutzung ist ja wirklich leicht, einfach den Tracking-Code, der von Piwik generiert wird, auf die Webseite packen und gut ist.</p>
<p>Aber bei jeder Webseite die neu auf den Server kommt immer in den Code eingreifen und evtl. bei einem Update drauf achten, dass der Tracking-Code nicht verloren geht, ist auf die Dauer bestimmt nervig. Was muss also passieren? Richtig, der Code muss Automatisch in die Webseiten eingebettet werden. Aber wie?</p>
<p>Bei Pytal waren die Werbeeinblendungen auf der Webseite auch immer automatisch eingebunden, wie machen die das nur? Ich habe einfach mal eine Email geschrieben und bekam auch direkt eine Antwort, dass es sich dabei um ein selbst geschriebenes Apache Modul handelt.</p>
<p>Ok, das ist ein bisschen zu viel den guten, ich möchte doch einfach nur ein bisschen dynamischen Code ans Ende jeder Webseite einfügen. Eine Idee dafür, lieferte die Email von Pytal direkt mit, ich wurde auf mod_layout hingewiesen.</p>
<p>Bei der Beschaffung dieses Modules traten jedoch einige Probleme auf, da ich die Webseite, wo man das ganze Downloaden sollte, nicht öffnen konnte.</p>
<p>Also suchte ich erst einmal ein bisschen weiter. Nach einigen Minuten hatte ich die Lösung gefunden &#8230; naja das dachte ich zumindest.</p>
<p>auto_append_file in der php.ini war für mich erst einmal die Lösung des Problems. Heute morgen habe ich das ganze dann auf meinem Server getestet, natürlich ohne Erfolg. Das Skript wurde zwar geladen und ausgeführt, allerdings bei jeder PHP-Datei. Diese Aktion zwang dann meinen VServer in die Knie &#8230; und so war meine Webseite nicht erreichbar, bis ich nach 2 Stunden wieder aus der Schule kam.</p>
<p>auto_append_file ist also keine Lösung &#8230; aber was benutze ich dann? Vielleicht noch einmal mod_layout probieren? Doch auch diesmal hatte ich keinen Erfolg, beim Download. Bei der suche nach Alternativen fand ich dann mod_injection. Aber auch hier musste ich feststellen, dass die Seite zum Downloaden offline war.</p>
<p>Was mache ich nun also?</p>
<p>Nach einiger Zeit des googelns, stieß ich auf einen <a href="http://bemasc.net/wordpress/2010/06/24/how-to-not-use-mod_layout/">Blog Artikel</a>, welcher erklärt, wie man mittels mod_substitute und mod_include Code an das Ende der Seite einfügt.</p>
<p>Aufgrund dieses Beispiels habe ich dann folgenden Code in meine httpd.conf eingefügt:</p>
<p><code>&lt;IfModule substitute_module&gt;<br />
&lt;IfModule include_module&gt;<br />
FilterDeclare Sub<br />
FilterProvider Sub SUBSTITUTE resp=Content-Type $text/html<br />
FilterDeclare SSI<br />
FilterProvider SSI INCLUDES resp=Content-Type $text/html<br />
Options +Includes<br />
FilterChain +Sub +SSI<br />
Substitute "s|&lt;/body.*?&gt;|&lt;!--#exec cmd=\"php /srv/http/include_piwik.php\"--&gt;&lt;!--#exec cmd=\"php /srv/http/include_piwik.php\"--&gt;$1|i"<br />
&lt;/IfModule&gt;<br />
&lt;/IfModule&gt;</code></p>
<p>Und siehe da, endlich wurde die include_piwik.php an jede Seite angehängt und der Sever ging dabei nicht in die Knie.</p>
<p>Wie aber stellt man es nun an, dass nicht jede Webseite getrackt wird? Und dazu auch die Webseiten unterschieden werden?</p>
<p>Bei einem kurzen Blick auf den von Piwik erstellten Tracking-Code sieht man, dass dort eine ID gesetzt wird. Also muss man nur die ID der Seite herausfinden &amp; in den Tracking-Code einsetzen. Schon kann man die Webseiten unterscheiden.</p>
<p>Ich habe das ganze wie folgt gelöst:</p>
<p><code><br />
&lt;?php<br />
// +----------------------------------------------------------------------+<br />
// | Copyright (c) 2012 DasLampe &lt;daslampe@lano-crew.org&gt; |<br />
// | Encoding:  UTF-8 |<br />
// +----------------------------------------------------------------------+<br />
$url    = $_SERVER['SERVER_NAME'];<br />
if(substr_count($url, '.') &gt;= 2)<br />
{<br />
$url    = substr($url, strrpos($url, '.', -4)+1);<br />
}<br />
$result    = simplexml_load_file("http://nixmuss-design.de/services/piwik/index.php?module=API&amp;method=SitesManager.getSitesIdFromSiteUrl&amp;url=http://".$url."/&amp;format=XML&amp;token_auth=[AUTH TOKEN]");<br />
if(!empty($result))<br />
{<br />
?&gt;<br />
&lt;!-- Piwik --&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var pkBaseURL = (("https:" == document.location.protocol) ? "https://nixmuss-design.de/services/piwik/" : "http://nixmuss-design.de/services/piwik/");<br />
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));<br />
&lt;/script&gt;&lt;script type="text/javascript"&gt;<br />
try {<br />
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", &lt;?= $result-&gt;row[0]-&gt;idsite; ?&gt;);<br />
piwikTracker.trackPageView();<br />
piwikTracker.enableLinkTracking();<br />
} catch( err ) {}<br />
&lt;/script&gt;&lt;noscript&gt;&lt;p&gt;&lt;img src="http://nixmuss-design.de/services/piwik/piwik.php?idsite=&lt;?= $result-&gt;row[0]-&gt;idsite; ?&gt;" style="border:0" alt="" /&gt;&lt;/p&gt;&lt;/noscript&gt;<br />
&lt;!-- End Piwik Tracking Code --&gt;<br />
&lt;?php<br />
}<br />
else<br />
{<br />
echo $url;<br />
}<br />
?&gt;<br />
&lt;/body&gt;</code></p>
<p>Piwik läuft bei mir also unter der URL meiner Gewerbe Webseite <a href="http://nixmuss-design.de">http://nixmuss-design.de</a>. Die ID jeder Seite finde ich über die Piwik API heraus. Den Zugriff auf diese Daten habe ich einem Benutzer erlaubt, von welchem ich den Token Key übergebe.</p>
<p>Wenn ich die ID habe, dann setze ich diese einfach in den Tracking-Code ein und fertig.</p>
<p>&nbsp;</p>
<p>Eine Besonderheit ist, dass Subdomains als die normale Domains getrackt werden, somit muss ich zum Beispiel blog.andreflemming.de nicht extra in Piwik eintragen, sondern der Zugriff wird unter andreflemming.de gespeichert.</p>
<p>Sollte eine Webseite nicht in Piwik auftauchen, aber trotzdem bei mir auf dem Server liegen, dann wird einfach nur ein &lt;/body&gt; ausgegeben.</p>
<p>&nbsp;</p>
<p>Ich hoffe diese kleine Erklärung, die irgendwie mehr Text als alles andere geworden ist, hilft einigen Leuten, bei der Lösung ähnlicher Probleme.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2012/01/18/piwik-automatisch-laden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Email Adressen automatisch anklickbar machen</title>
		<link>http://blog.andreflemming.de/2011/12/02/php-email-adressen-automatisch-anklickbar-machen/</link>
		<comments>http://blog.andreflemming.de/2011/12/02/php-email-adressen-automatisch-anklickbar-machen/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 00:28:11 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=782</guid>
		<description><![CDATA[Heute Mittag habe ich schon über das erstellen von anklickbaren Links mittels der PHP Funktion preg_replace geschrieben. Das ganze habe ich nun etwas bearbeitet und habe jetzt eine Funktion, die mir Email Adressen anklickbar macht und dabei netter weise noch ein wenig vor Spambots schützt. Den Code dafür findet ihr hier: https://gist.github.com/1420919 Dort steht in [...]]]></description>
			<content:encoded><![CDATA[<p>Heute Mittag habe ich schon über das <a href="http://blog.andreflemming.de/2011/12/01/php-links-aus-text-generieren/">erstellen von anklickbaren Links mittels der PHP Funktion preg_replace</a> geschrieben.</p>
<p>Das ganze habe ich nun etwas bearbeitet und habe jetzt eine Funktion, die mir Email Adressen anklickbar macht und dabei netter weise noch ein wenig vor Spambots schützt. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Den Code dafür findet ihr hier: <a href="https://gist.github.com/1420919">https://gist.github.com/1420919</a></p>
<p>Dort steht in dem Kommentar auch was ihr zusätzlich benötigt, damit die Email Adressen wirklich anklickbar sind.</p>
<p>Ich habe jetzt auch keine Lust mehr, mehr zu schreiben.<br />
Wünsche euch allen eine gute Nacht!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2011/12/02/php-email-adressen-automatisch-anklickbar-machen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PHP] Links aus Text generieren.</title>
		<link>http://blog.andreflemming.de/2011/12/01/php-links-aus-text-generieren/</link>
		<comments>http://blog.andreflemming.de/2011/12/01/php-links-aus-text-generieren/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 17:33:42 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=778</guid>
		<description><![CDATA[Heute gibt es mal wieder etwas neues in meinem Blog, aber wie immer nichts langes. Dafür ist es heute aber mal wieder nützlich für einige Leute. Ich stand vor dem Problem, naja ok es war eher ne Herausforderung die ich bewältigen wollte,  Links in einem HTML Formatierten Text zu erkennen und dann mit einem a-Tag [...]]]></description>
			<content:encoded><![CDATA[<p>Heute gibt es mal wieder etwas neues in meinem Blog, aber wie immer nichts langes. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Dafür ist es heute aber mal wieder nützlich für einige Leute.</p>
<p>Ich stand vor dem Problem, naja ok es war eher ne Herausforderung die ich bewältigen wollte,  Links in einem HTML Formatierten Text zu erkennen und dann mit einem a-Tag zu versehen, so das diese anklickbar sind.</p>
<p>&nbsp;</p>
<p>Also einfach den ganzen HTML Code  mittels preg_replace_callback &amp; preg_match versucht so umzuformen, dass die Links anklickbar sind.</p>
<p>An sich keine große Sache, einfach alle Textstellen finden, die das Format eines Links haben. Dabei kam es aber immer wieder zu Problemen.</p>
<p>Was mache ich zum Beispiel, wenn der Link schon in einem a-Tag steht?</p>
<p>Nach vielen solcher Probleme habe ich mich dann ans Googeln begeben, irgendwer muss doch schon einmal die selbe Idee gehabt haben. Bei Google habe ich allerdings nichts anständiges gefunden.</p>
<p>Dann kam mir die Idee, versuch es doch einfach mal bei <a title="github" href="http://github.com">github.com</a>!</p>
<p>Und siehe da, ich wurde fündig. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Natürlich möchte ich euch den Code nicht vorenthalten.<br />
<code><br />
function auto_link_text($text) {<br />
$regexp = '/<br />
( # leading text<br />
| # leading HTML tag, or<br />
[^=!:\'"\/]| # leading punctuation, or<br />
^ # beginning of line<br />
)<br />
(<br />
(?:https?:\/\/)| # protocol spec, or<br />
(?:www\.) # www.*<br />
)<br />
(<br />
[-\w]+ # subdomain or domain<br />
(?:\.[-\w]+)* # remaining subdomains or domain<br />
(?::\d+)? # port<br />
(?:\/(?:(?:[~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path<br />
(?:\?[\w\+%&amp;=.;-]+)? # query string<br />
(?:\#[\w\-]*)? # trailing anchor<br />
)<br />
([[:punct:]]|\s| /x';</p>
<p>return preg_replace_callback($regexp, function($matched) {<br />
list($all, $before, $protocol, $address, $after) = $matched;</p>
<p>// already linked<br />
if (preg_match('/</p>
<p>return "$before<a href="\&quot;$protocol$address\&quot;">$text</a>$after";<br />
}, $text);<br />
}<br />
</code></p>
<p>Zu finden natürlich auch direkt auf github unter: <a href="https://gist.github.com/907604">https://gist.github.com/907604</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2011/12/01/php-links-aus-text-generieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IMAP via fsockopen</title>
		<link>http://blog.andreflemming.de/2010/08/03/imap-via-fsockopen/</link>
		<comments>http://blog.andreflemming.de/2010/08/03/imap-via-fsockopen/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 23:18:10 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[fsockopen]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=689</guid>
		<description><![CDATA[Hier kommt mal wieder ein Artikel der etwas länger, aber vielleicht auch etwas informativer, als die letzten wird. Dieses mal geht es um eine Möglichkeit via fsockopen in PHP ein IMAP-Postfach auszulesen. Normaler weise gibt es dafür in PHP schon eine Extension, jedoch ist diese nicht überall aktiviert, daher kann man diese Technik nicht sehr [...]]]></description>
			<content:encoded><![CDATA[<p>Hier kommt mal wieder ein Artikel der etwas länger, aber vielleicht auch etwas informativer, als die letzten wird. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dieses mal geht es um eine Möglichkeit via fsockopen in PHP ein IMAP-Postfach auszulesen. Normaler weise gibt es dafür in PHP schon eine Extension, jedoch ist diese nicht überall aktiviert, daher kann man diese Technik nicht sehr gut nutzen, wenn man ein Programm/Skript, schreiben möchte, welches auf möglichst vielen Server läuft.</p>
<p>fsockopen ist zwar auch bei vielen Free Webhostern ausgeschaltet, da mit dieser Funktion viel &#8220;Schaden&#8221; angerichtet werden kann, jedoch hat man bei <a href="http://pytal.de">Pytal.de</a> zum Beispiel die Möglichkeit, durch eine Bestätigte Mitgliedschaft fsockopen nutzen zu können.</p>
<p>Naja lange genug um den heißen Brei geredet, was habe ich also gemacht?</p>
<p>Ganz einfach, ich habe es mir einige Stunden vorm PC gemütlich gemacht, während sich <a href="http://twitter.com/Pfirsichwolke">@Pfirsichwolke</a> immer mehr langweilte.</p>
<p>Nach ziemlich viel gegoogle, ausprobieren und fragen im <a href="http://pyjeti.pytalhost.de">Pytalchat</a>, habe ich jetzt endlich eine naja zugegeben schlechte, aber trotzdem Funktionierenden IMAP-Klasse geschrieben. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Der Code dazu kommt hier:</p>
<blockquote><p>// +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
// | Copyright (c) 2010 DasLampe  |<br />
// | Encoding:  UTF-8 |<br />
// +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
class IMAP<br />
{<br />
var	$sock;<br />
var $host;<br />
var $port;<br />
var $sid;<br />
var $tag;<br />
var $_lastTag;<br />
var	$currentMailbox;</p>
<p>function __construct()<br />
{<br />
$this-&gt;sock	= null;<br />
$this-&gt;host	= &#8220;localhost&#8221;;<br />
$this-&gt;port	= &#8220;143&#8243;;<br />
$this-&gt;sid	= &#8220;&#8221;;<br />
$this-&gt;tag	= 0;<br />
$this-&gt;_lastTag	= $this-&gt;tag;<br />
$this-&gt;currentMailbox	= &#8220;&#8221;;<br />
}</p>
<p>function __destruct()<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; LOGOUT\r\n&#8221;);<br />
}</p>
<p>function connect($host=&#8221;", $port=&#8221;", $ssl=false)<br />
{<br />
$this-&gt;host		= $host;<br />
$this-&gt;port		= $port;</p>
<p>if($ssl == true)<br />
{<br />
$this-&gt;host = &#8220;ssl://&#8221;.$host;<br />
}</p>
<p>$this-&gt;sock	= fsockopen($this-&gt;host, $this-&gt;port, $errno, $errstr);</p>
<p>if(!$this-&gt;_assumedNextLine(&#8216;* OK&#8217;))<br />
{<br />
echo &#8216;FAIL CONNECT&#8217;;<br />
}<br />
}</p>
<p>function getTag()<br />
{<br />
$this-&gt;tag	= $this-&gt;tag +1;<br />
$this-&gt;_lastTag	= &#8220;A000&#8243;.$this-&gt;tag;</p>
<p>return $this-&gt;tag;<br />
}</p>
<p>function login($username, $pass)<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; LOGIN &#8220;.$username.&#8221; &#8220;.$pass.&#8221;\r\n&#8221;);<br />
if(!$this-&gt;_assumedNextLine($this-&gt;_lastTag))<br />
{</p>
<p>}<br />
}</p>
<p>function selectMailBox($mailbox)<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; SELECT &#8220;.$mailbox.&#8221;\r\n&#8221;);<br />
$this-&gt;currentMailbox	= $mailbox;</p>
<p>$this-&gt;readResponse($this-&gt;_lastTag);<br />
}</p>
<p>function countMessages()<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; SEARCH ALL\r\n&#8221;);<br />
$response	= $this-&gt;readResponse($this-&gt;_lastTag);</p>
<p>foreach($response as $id)<br />
{<br />
if($id[0] == &#8220;S&#8221;)<br />
{<br />
$count	= count_chars($id, 1);<br />
}<br />
}<br />
return $count[32];<br />
}</p>
<p>public function getSubject($msgId)<br />
{<br />
if(empty($msgId))<br />
{<br />
return false;<br />
}</p>
<p>$this-&gt;fetch($msgId.&#8221; BODY[HEADER.FIELDS (subject)]&#8220;);</p>
<p>$array	= array();<br />
while(!$this-&gt;readLine($tokens, $this-&gt;_lastTag))<br />
{<br />
if(!empty($tokens) &amp;&amp; preg_match(&#8220;/FETCH/&#8221;, $tokens))<br />
{<br />
$msgId	= preg_split(&#8220;/ /&#8221;, $tokens, 2);<br />
$msgId	= $msgId[0];<br />
}<br />
if(!empty($tokens) &amp;&amp; !preg_match(&#8220;/FETCH/&#8221;, $tokens))<br />
{<br />
$array[]	= array(&#8220;id&#8221;		=&gt; $msgId,<br />
&#8220;subject&#8221;	=&gt; $tokens);<br />
}<br />
}<br />
return mb_decode_mimeheader($array[0]['subject']);</p>
<p>}</p>
<p>public function getMsgText($msgId=&#8221;")<br />
{<br />
if(empty($msgId))<br />
{<br />
return false;<br />
}</p>
<p>$this-&gt;fetch($msgId.&#8221; BODY[TEXT]&#8220;);</p>
<p>$array		= array();<br />
$array[]	= &#8220;=?ISO-8859-1?Q?&#8221;;<br />
while(!$this-&gt;readLine($tokens, $this-&gt;_lastTag, $tag))<br />
{<br />
$array[]	.= $tag.&#8217; &#8216;.$tokens;<br />
}<br />
//Löschen der 1. und letzten Response<br />
unset($array[1]);				//FETCH<br />
unset($array[count($array)]);	//Klammer</p>
<p>$array = array_values($array);</p>
<p>//Array2String<br />
$array	= implode(&#8221;, $array);</p>
<p>//Decodieren und Zeilenumbrüche setzten<br />
return nl2br(mb_decode_mimeheader($array));<br />
}</p>
<p>public function getFromOrTo($msgId=&#8221;", $fromOrTo=&#8221;")<br />
{<br />
if(empty($msgId) || empty($fromOrTo))<br />
{<br />
return false;<br />
}</p>
<p>$this-&gt;fetch($msgId.&#8221; BODY[HEADER.FIElDS (".$fromOrTo.")]&#8220;);</p>
<p>while(!$this-&gt;readLine($tokens, $this-&gt;_lastTag))<br />
{<br />
if(!isset($return) &amp;&amp; !preg_match(&#8216;/FETCH/&#8217;, $tokens))<br />
{<br />
$return	= htmlspecialchars($tokens);<br />
}<br />
}<br />
return mb_decode_mimeheader($return);<br />
}</p>
<p>private function fetch($command, $param=false)<br />
{<br />
if(!$param)<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; FETCH &#8220;.$command.&#8221;\r\n&#8221;);<br />
}<br />
else<br />
{<br />
fwrite($this-&gt;sock, &#8220;A000&#8243;.$this-&gt;getTag().&#8221; FETCH &#8220;.$command.&#8221; &#8220;.$param.&#8221;\r\n&#8221;);<br />
}<br />
}</p>
<p>function _nextLine()<br />
{<br />
$line = @fgets($this-&gt;sock);<br />
if ($line === false)<br />
{<br />
echo &#8216;FAIL!!&#8217;;<br />
return false;<br />
}<br />
return $line;<br />
}</p>
<p>protected function _assumedNextLine($start)<br />
{<br />
$line = $this-&gt;_nextLine();<br />
return strpos($line, $start) === 0;<br />
}</p>
<p>public function readLine(&amp;$tokens = array(), $wantedTag = &#8216;*&#8217;, &amp;$tag=&#8221;")<br />
{<br />
$line = $this-&gt;_nextTaggedLine($tag);<br />
$tokens = $line;<br />
$tag	= $tag;</p>
<p>if(($tag == &#8220;A000&#8243;.$this-&gt;tag) || ($tag == $wantedTag))<br />
{<br />
return $tag;<br />
}<br />
}</p>
<p>public function readResponse($tag=&#8221;*&#8221;)<br />
{<br />
if($tag	== &#8220;lastTag&#8221;)<br />
{<br />
$tag	= $this-&gt;_lastTag;<br />
}<br />
$lines = array();<br />
while (!$this-&gt;readLine($tokens, $tag)) {<br />
$lines[] = $tokens;<br />
}</p>
<p>return $lines;<br />
}</p>
<p>protected function _nextTaggedLine(&amp;$tag)<br />
{<br />
$line = $this-&gt;_nextLine();</p>
<p>// seperate tag from line<br />
@list($tag, $line) = explode(&#8216; &#8216;, $line, 2);</p>
<p>return $line;<br />
}<br />
}</p></blockquote>
<p>Vielleicht kann diese Klasse ja jemanden Helfen, der ein ähnliches Problem hat, ich würde mich dann auf jeden Fall über ein Kommentar freuen.</p>
<p>Ich muss dazu sagen, das ich bei meiner Suche natürlich auch auf andere Klassen gestoßen bin, welche bei mir jedoch alle nicht Problemlos liefen. Dazu kommt, das ich natürlich gerne weiß, was mein Programm macht und ich in den Ferien auch Zeit dafür habe, so etwas selbst zu schreiben.</p>
<p>Kleiner Tipp noch am Rande, wer plant auch einige eigene Klasse zu schreiben, dem kann <a href="http://www.wireshark.org/">Wireshark</a> echt gut helfen!<br />
Ich hatte zum Beispiel das Problem, das schon die 2. Anfrage gesendet wurde, bevor die 1. Anfrage zurück kam, trotz eines <em>sleep(2)</em>, solche Fehler kann man eher schlecht aus einer Protokolldokumentation entnehmen. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Achja, hier noch die Klassen, die ich so ausprobiert habe und von welchen Einflüsse in meinem Code sind:</p>
<p>Zend Mail aus dem Zend Framework + <a href="http://www.phpgangsta.de/imap-emails-lesen-mit-dem-zend-framework">diese Anleitung von PHP Gangsta</a></p>
<p>Net_IMAP aus der PEAR Bibliothek.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2010/08/03/imap-via-fsockopen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automatisch erkennen ob Feld Pflichtfeld ist [JQuery]</title>
		<link>http://blog.andreflemming.de/2010/03/27/automatisch-erkennen-ob-feld-pflichtfeld-ist-jquery/</link>
		<comments>http://blog.andreflemming.de/2010/03/27/automatisch-erkennen-ob-feld-pflichtfeld-ist-jquery/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 00:12:11 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wochenende]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[Hilfe]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=633</guid>
		<description><![CDATA[Ich hatte grade mal wieder etwas langeweile und wollte daher bei einem Projekt eine neue Funktion mit einbauen, die das Absenden eines Formulares verhindert, wenn in diesem nicht alle Felder die mit einem * gekennzeichnet sind ausgefüllt sind. Natürlich geht das ganze nur wenn Javascript eingeschaltet ist, aber das PHP Skript, hat ja eh noch [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte grade mal wieder etwas langeweile und wollte daher bei einem Projekt eine neue Funktion mit einbauen, die das Absenden eines Formulares verhindert, wenn in diesem nicht alle Felder die mit einem * gekennzeichnet sind ausgefüllt sind. Natürlich geht das ganze nur wenn Javascript eingeschaltet ist, aber das PHP Skript, hat ja eh noch einen Abfrage ob die Daten auch das richtige Format haben.</p>
<p>Natürlich könnte man für jedes Formular eine eigene Javascript Datei schreiben, in welcher man jedes Formularfeld prüfen lässt, welches Ausgefüllt werden muss. Da mir das aber zu viel Arbeit ist, habe ich mir gedacht ich lese einfach mittels Javascript alle &lt;label&gt; Felder aus, welche in ihrem Text ein * besitzen.</p>
<p>Das ganze habe ich mit dem Javascript Framework <a href="http://jquery.com" target="_blank">JQuery</a> realisiert.</p>
<p>Erst einmal ein Beispiel Formular:<br />
<code><br />
&lt;form method="post"&gt;<br />
&lt;label for="vorname"&gt;Vorname *&lt;/label&gt;<br />
&lt;input type="text" name="vorname" /&gt;&lt;br/&gt;<br />
&lt;label for="nachname"&gt;Nachname&lt;/label&gt;<br />
&lt;input type="text" name="nachname" /&gt;&lt;br/&gt;<br />
&lt;label for="gebDatum"&gt;Geburtsdatum *&lt;/label&gt;<br />
&lt;input type="text" name="gebDatum" /&gt;&lt;br/&gt;<br />
&lt;input type="submit" name="submit" value="Absenden" /&gt;<br />
&lt;/form&gt;</code></p>
<p>In diesem Formular sollen also der Vorname und das Geburtsdatum angegeben werden. Um zu überprüfen ob diese Daten wirklich eingetragen wurden, benötigen wir nun noch ein kleines Javascript. (Achtung: JQuery muss natürlich schon eingebunden sein)</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
$('input[type="submit"]').click(function() //Ausgeführt wenn submit-Button gedrückt<br />
{<br />
var    error    = false;<br />
var form    = $('form').children($(this)); //Suchen des Formulars<br />
var    label    = $(form).find('label:contains("*")'); //Finden der Label-Felder mit einem *<br />
$(label).each(function(index)<br />
{<br />
var name    = $(this).attr('for'); //Suche Namen für input-Feld<br />
if($('input[name='+name+']').val() == "") //Wenn input-Feld leer<br />
{<br />
error    = true;<br />
$('input[name='+name+']').addClass('inputError'); //Hinzufügen von CSS-Klasse<br />
}<br />
});<br />
if(error == true)<br />
{ //Nicht alle Felder ausgefüllt<br />
return false;<br />
}<br />
else<br />
{<br />
return true;<br />
}<br />
});<br />
&lt;/script&gt;</code></p>
<p>Mit diesem kleinen, aber meiner Meinung nach sehr hilfreichen Codeschnipsel kann man sich einiges an Arbeit sparen und dem User einiges an Wartezeit, da die Seite ja nicht erst neu geladen werden muss, bevor er angezeigt bekommt, das er einen Fehler gemacht hat.</p>
<p>Bestimmt kann man an diesem Skript noch viel verbessern, aber es erfüllt erst einmal Sinn und Zweck. Wenn jemand noch einen besseren Vorschlag hat, dann wäre ich dankbar diesen zu bekommen.</p>
<p>[Leider will WordPress den Code nicht so schön speichern wie er ursprünglich war <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Ich hoffe ihr könnt ihn trotzdem lesen]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2010/03/27/automatisch-erkennen-ob-feld-pflichtfeld-ist-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stöckchen: 7 bisher geheime Tatsachen Über mich</title>
		<link>http://blog.andreflemming.de/2009/10/12/stoeckchen-7-bisher-geheime-tatsachen-ueber-mich/</link>
		<comments>http://blog.andreflemming.de/2009/10/12/stoeckchen-7-bisher-geheime-tatsachen-ueber-mich/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 14:29:43 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Alltag]]></category>
		<category><![CDATA[Musik]]></category>
		<category><![CDATA[Pfadfinder]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Privat]]></category>
		<category><![CDATA[Stöckchen]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=544</guid>
		<description><![CDATA[Fast hätte ich es komplett vergessen. Chriz hatte mir ja ein Stöcken zu geworfen! Also schreib ich doch auch mal was. Auch wenn mir nicht wirklich etwas einfällt. 1. Ich bin eigentlich nur aus der &#8220;Not&#8221; Pfadfinder geworden, weil ich kein anderes Hobby gefunden habe. (Aber jetzt sind die Pfadfinder ein ziemlich großer Teil meines [...]]]></description>
			<content:encoded><![CDATA[<p>Fast hätte ich es komplett vergessen.<a href="http://www.chrizblog.de/stockchen-7-bisher-geheime-tatsachen-uber-mich/"> Chriz hatte mir ja ein Stöcken zu geworfen</a>!</p>
<p>Also schreib ich doch auch mal was. Auch wenn mir nicht wirklich etwas einfällt. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>1. Ich bin eigentlich nur aus der &#8220;Not&#8221; Pfadfinder geworden, weil ich kein anderes Hobby gefunden habe. (Aber jetzt sind die Pfadfinder ein ziemlich großer Teil meines Lebens)</p>
<p>2. Eigentlich höre ich nur Rock, aber es mogelt sich auch immer wieder etwas Hip Hop dazwischen.</p>
<p>3. Von der PC Hardware habe ich fast gar keine Ahnung.</p>
<p>4. Ab und zu Spiele ich Theater und verstehe daher Solinger Platt.</p>
<p>5. Nur durch die Pfadfinder habe ich so viel über den PC gerlernt. (Sonst wäre ich wohl immer noch nur am zocken)</p>
<p>6. Ich gucke immer noch gerne einige Serien die ich als Kind geguckt habe, wenn diese laufen.</p>
<p>7. In PHP fange ich immer 1000 Projekte an, aber werfe diese nach der Hälfte immer weg, weil ich nicht weiter komme.</p>
<p>Ob das ganze irgendwen interessiert, weiß ich nicht. Aber wenn man ein Stöcken zugeworfen bekommt, dann muss man das auch aufheben. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2009/10/12/stoeckchen-7-bisher-geheime-tatsachen-ueber-mich/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Keine Ausgabe bei PHP Dateien</title>
		<link>http://blog.andreflemming.de/2009/08/14/keine-ausgabe-bei-php-dateien/</link>
		<comments>http://blog.andreflemming.de/2009/08/14/keine-ausgabe-bei-php-dateien/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 15:44:44 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[Fail]]></category>
		<category><![CDATA[Fehler]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=417</guid>
		<description><![CDATA[Da ich einige Veränderungen an meinem PC vorgenommen hatte, musst auch heute bzw. gestern Apache dran glauben. Also Apache, PHP und MySQL einfach mal runter geschmissen, natürlich mit den Konfigurationsdateien. (Bitte hinterfragt nicht den Sinn dieser Aktion ) Nach dem installieren stand ich erst einmal vor ein paar Problemen, der Apache wollte irgendwie die Dateien [...]]]></description>
			<content:encoded><![CDATA[<p>Da ich einige Veränderungen an meinem PC vorgenommen hatte, musst auch heute bzw. gestern Apache dran glauben.</p>
<p>Also Apache, PHP und MySQL einfach mal runter geschmissen, natürlich mit den Konfigurationsdateien. (Bitte hinterfragt nicht den Sinn dieser Aktion <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>Nach dem installieren stand ich erst einmal vor ein paar Problemen, der Apache wollte irgendwie die Dateien nicht anzeigen und zwar gar keine, außer welche die ich dann erst neu erstellt hatte. Die Lösung hierfür lag in der Gruppenberechtigung, irgendwie war für die anderen Dateien eine Gruppe eingetragen die es gar nicht mehr bzw. noch nie gegeben hat. Nach ca. 20 Minuten hatte dann auch ich dass ganze bemerkt und änderte es natürlich sofort mit dem <code>chgrp</code> Befehl.</p>
<p>Soweit ja kein Problem, allerdings erhielt ich bei den PHP Dateien immer noch keine Ausgabe. Auch nachdem ich 10 mal die <em>httpd.conf</em> Datei überprüft hatte, ob PHP auch wirklich geladen wird. Irgendwann kam ich dann auf die Idee, ich könnte doch auch mal eine PHP Datei neu erstellen, am besten mit dem Inhalt:<br />
<code>&lt;?php<br />
echo phpinfo();<br />
?&gt;</code></p>
<p>Leider bekam ich auch bei dieser Datei erst einmal keine Ausgabe. Das Problem, war jedoch (wie eigentlich jedes) ziemlich simpel und auch schnell gefunden in der <em>php.ini</em> war bei <em>openbase_dir</em> noch nicht mein <em>Document-Root</em> eingetragen.</p>
<p>Diese Datei konnte ich nun schon öffnen &#8230; allerdings gingen die anderen Dateien immer noch nicht. Ich bekam immer noch keine Ausgabe&#8230; noch nicht einmal eine Fehlermeldung. Genau da lag aber das Programm &#8230; ich hatte natürlich versucht Dateien aus existierenden Projekten aufzurufen, die Index Datei in diesen Projekten bindet unglücklicher weiße aber immer eine Datei, welche eine Verbindung zu einer Datenbank mittels <a title="PHP Data Objects" href="http://de.wikipedia.org/wiki/PHP_Data_Objects">PDO</a> aufbauen will ein.</p>
<p>Diese Verbindung konnte allerdings nicht zustande kommen, da die PDO Erweiterung für PHP noch nicht aktiviert wurde. Dadurch wurde das Script abgebrochen und würde eine Fehlermeldung zurück geben, wenn in der <em>php.ini</em> nicht der Wert <em>Off</em> bei <em>display_errors</em> gestanden hätte.</p>
<p>Ein ziemlich blöder Fehler, der mich viel Zeit und nerven gekostet hat. Wer kommt schon auf so etwas? Zum Glück bin ich aber nicht der einzige dem so etwas schon mal passiert ist. <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Jetzt ist mein Linux allerdings wieder voll Funktionstüchtig und die Entwicklung von Webseiten kann auch weiter gehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2009/08/14/keine-ausgabe-bei-php-dateien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress, Beitrag wird nicht erstellt</title>
		<link>http://blog.andreflemming.de/2009/06/16/wordpress-beitrag-wird-nicht-erstellt/</link>
		<comments>http://blog.andreflemming.de/2009/06/16/wordpress-beitrag-wird-nicht-erstellt/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 12:55:58 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Blogsystem]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Pytal]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=218</guid>
		<description><![CDATA[Seit einiger Zeit, ich glaube sogar seitdem ich auf WordPress umgestiegen bin, hatte ich das Problem, das meine Beiträge nicht direkt Veröffentlicht bzw. gespeichert werden konnten (Speichern ging nur über das Automatische Speichern). Ich musste die Beiträge nach dem Automatischen speichern immer erst Bearbeiten und konnte diese dann bearbeiten. Das war mir natürlich schon länger [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einiger Zeit, ich glaube sogar seitdem ich auf WordPress umgestiegen bin, hatte ich das Problem, das meine Beiträge nicht direkt Veröffentlicht bzw. gespeichert werden konnten (Speichern ging nur über das Automatische Speichern).</p>
<p>Ich musste die Beiträge nach dem Automatischen speichern immer erst Bearbeiten und konnte diese dann bearbeiten.</p>
<p>Das war mir natürlich schon länger ein Dorn im Auge &#8230; aber ich hatte nie Zeit und Lust mich darum zu kümmern. Obwohl es doch eigentlich so einfach ist.</p>
<p>Heute habe ich mir dann mal die Zeit genommen und folgende Lösung gefunden:</p>
<blockquote>
<ol>
<li> Öffnen der Datei /wp-admin/admin-ajax.php</li>
<li>@header(&#8216;Content-Type: text/html; charset=&#8217; . get_option(&#8216;blog_charset&#8217;)); mit @header(&#8216;Content-Type: text/plain; charset=&#8217; . get_option(&#8216;blog_charset&#8217;)); ersetzte</li>
<li>Das ganze hochladen</li>
</ol>
</blockquote>
<p>Das Problem soll wohl an den Werbeeinblendungen von <a href="http://pytal.de">Pytal</a> (meinem Webhoster) liegen, was ich mir zwar nicht vorstellen kann, aber jetzt geht es zumindest wieder alles <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2009/06/16/wordpress-beitrag-wird-nicht-erstellt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evo2WP-Converter</title>
		<link>http://blog.andreflemming.de/2009/06/06/evo2wp-converter/</link>
		<comments>http://blog.andreflemming.de/2009/06/06/evo2wp-converter/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 16:29:21 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Blogsystem]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[B2Evolution]]></category>
		<category><![CDATA[Evo2WP-Converter]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.andreflemming.de/?p=112</guid>
		<description><![CDATA[Mein Umzug von B2evo nach WordPress ist nun, mehr oder weniger, abgeschlossen, wie ich heute Nacht schon geschrieben hatte. Deswegen möchte ich euch kurz einen Einblick geben, wie ich das gemacht habe, damit andere Leute die auch vor dieser Aufgabe stehen diese schneller bewältigen können. Im Prinzip ist der Umzug gar nicht so schwer wie [...]]]></description>
			<content:encoded><![CDATA[<p>Mein Umzug von B2evo nach WordPress ist nun, mehr oder weniger, abgeschlossen, wie ich heute Nacht schon geschrieben hatte.</p>
<p>Deswegen möchte ich euch kurz einen Einblick geben, wie ich das gemacht habe, damit andere Leute die auch vor dieser Aufgabe stehen diese schneller bewältigen können.</p>
<p>Im Prinzip ist der Umzug gar nicht so schwer wie angenommen. Es müssen ja nur einige Sachen in der Datenbank verschoben werden. Per Hand ist das natürlich total nervig, deswegen habe ich mir ein Script gebastelt, welches mir diese Aufgabe abgenommen hat. Das Script ist ein reines PHP Script (zumindest jetzt noch, evtl. werde ich das ganze mit einem Web Interface ausbauen), welches alle Kategorien, Kommentare und Beiträge ausliest und in die neue Tabelle einträgt. Dabei werden alle Beiträge der Hauptkategorie, welche sie in B2Evo hatten zugewiesen.</p>
<p>Also los gehts <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-112"></span></p>
<p><strong>Vorbereitung:</strong></p>
<p>Zuerst muss man WordPress in ein Verzeichniss auf den Webspace laden. Dann muss dieses Installiert werden, wichtig ist hierbei, das die Datenbank die gleiche ist!</p>
<p>Nach der Installation und der Anpassung des Benutzers (Name usw.), sollte man auch die Permalink Struktur von WordPress umstellen, damit die Struktur die gleiche ist wie von B2evo.</p>
<p>Jetzt müssen alle WordPress Tabellen außer<em> wp_users</em>, <em>wp_usermeta</em> und <em>wp_optinons</em> geleert werden (wird in bald auch vom Script übernommen).</p>
<p>Jetzt noch die move.php öffnen und die MySQL Daten eintragen und auch ab damit auf den Webspace.</p>
<p><strong>Durchführung:</strong></p>
<p>Es wird immer einfachher <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Ihr müsst nur noch die Datei move.php aufrufen und einen Moment warten, bis 3x <em>Import [...] successful</em> angezeigt wird.</p>
<p><strong>Ende:</strong></p>
<p>Einen kleinen Schönheitsfehler gibt es leider, es wird eine Kategorie <em>1</em> angelegt, diese sollte man einfach über den Adminbereich löschen.</p>
<p>Schon ist der Umzug von B2evo auf WordPress erfolgreich verlaufen!</p>
<p><strong><em>Wichtig ist es auch noch, das die Datei move.php gelöscht wird!!</em></strong></p>
<p>Einige mängel hat das Script allerdings noch <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Es gibt zum Beispiel noch mit den BBCodes von B2evo zum Beispiel für Youtube Videos ein Problem, dies wird sich aber in der nächsten Version auch ändern. (Es gibt dann natürlich auch noch ein Update Script für die, die jetzt schon Umziehen wollen). Auch Bilder Posts werden nicht übernomen. Außerdem läuft das Script bei Kommentaren nur dann wirklich Rund, wenn die Benutzer ID in WordPress mit der Benutzer ID in B2Evo identisch ist. (Ist bei einer normalen Installation und nur einem Benutzer, eigentlich immer der Fall)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2009/06/06/evo2wp-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umzug von B2Evolution nach WordPress</title>
		<link>http://blog.andreflemming.de/2009/06/06/umzug-von-b2evolution-nach-wordpress/</link>
		<comments>http://blog.andreflemming.de/2009/06/06/umzug-von-b2evolution-nach-wordpress/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 23:18:27 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Blogsystem]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[B2Evolution]]></category>
		<category><![CDATA[Lizenz]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://andreflemming.de/blog/wordpress/?p=107</guid>
		<description><![CDATA[Nach langer Zeit ist es nun endlich geschafft. Ich bin von B2Evolution weg gekommen und jetzt bei WordPress gelandet. Der Umzug war nicht immer leicht, aber zum Glück kann ich ein bisschen mit PHP &#38; MySQL umgeben und habe mir daher ein schönes Script geschrieben, mit welchem ich die Einträge, Kommentare und Kategorien übernehmen konnte, [...]]]></description>
			<content:encoded><![CDATA[<p>Nach langer Zeit ist es nun endlich geschafft. Ich bin von B2Evolution weg gekommen und jetzt bei WordPress gelandet.<br />
Der Umzug war nicht immer leicht, aber zum Glück kann ich ein bisschen mit PHP &amp; MySQL umgeben und habe mir daher ein schönes Script geschrieben, mit welchem ich die Einträge, Kommentare und Kategorien übernehmen konnte, nicht alles ganz Fehlerfrei, aber zumindest so das es passt.</p>
<p>Ich werde natürlich noch versuchen das Script zu verbessern und dies auch Online stellen.</p>
<p>Das Script gibt es unter: <a title="Evo2WP-Converter by DasLampe" href="http://github.com/DasLampe/Evo2WP-Converter/tree/master" target="_blank">http://github.com/DasLampe/Evo2WP-Converter/tree/master</a> zum download.<br />
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" alt="Creative Commons License" /></a><br />
<span>Evo2WP-Converter</span> von <a rel="cc:attributionURL" href="http://andre.lano-crew.org">DasLampe</a> steht unter einer <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz</a>.<br />
Wem das etwas sagen sollte <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Eine kleine Anleitung wird es auch bald hier im Blog geben &#8230; ich muss sowieso noch einige Einträge nachreichen, wenn ich Zeit haben sollte.<br />
Wenn akute Fragen bestehen, dann ab in die Kommentare damit &#8230; natürlich auch wenn ihr einen Fehler im Blog findet.</p>
<p>Das Design werde ich auch noch ändern, keine Angst &#8230; aber alles zu seiner Zeit.</p>
<p>P.S: Das ist doch mal ein schöner 100ster Eintrag <img src='http://blog.andreflemming.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andreflemming.de/2009/06/06/umzug-von-b2evolution-nach-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

