<?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>Kai Thrun &#187; PHP</title> <atom:link href="http://kaithrun.de/category/code/php/feed/" rel="self" type="application/rss+xml" /><link>http://kaithrun.de</link> <description>passionate Blogger</description> <lastBuildDate>Wed, 08 Feb 2012 08:42:34 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <atom:link rel='hub' href='http://kaithrun.de/?pushpress=hub'/> <item><title>Hotfix für WordPress-Plugin GoogleCards 0.4.5.</title><link>http://kaithrun.de/hotfix-fur-wordpress-plugin-googlecards045/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link> <comments>http://kaithrun.de/hotfix-fur-wordpress-plugin-googlecards045/#comments</comments> <pubDate>Thu, 18 Aug 2011 09:13:44 +0000</pubDate> <dc:creator>Kai Thrun</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[GooglePlus]]></category> <category><![CDATA[Hotfix]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://derwebarchitekt.de/?p=1687</guid> <description><![CDATA[Wie ihr in meiner Sidebar sehen könnt, bin ich Nutzer des WordPress-Plugin GoogleCards. Das Plugin von John Henson macht eigentlich nichts anderes als die Google+ Seite nach den entsprechenden Einträgen zu durchsuchen. Das führt zu dem Problem, wenn Google seine CSS-Klassen anpasst, dass Plugin nicht mehr ordnungsgemäß funktioniert. Google hat vorgestern ein Update gefahren und ...]]></description> <content:encoded><![CDATA[<p><img
src="http://derwebarchitekt.de/wp-content/uploads/googlecard.png" alt="" title="googlecard" width="235" height="143" class="alignright size-full wp-image-1688" />Wie ihr in meiner Sidebar sehen könnt, bin ich Nutzer des WordPress-Plugin <a
href="http://wordpress.org/extend/plugins/googlecards/">GoogleCards</a>. Das Plugin von <a
href="https://plus.google.com/111270891764039363851/posts">John Henson</a> macht eigentlich nichts anderes als die Google+ Seite nach den entsprechenden Einträgen zu durchsuchen. Das führt zu dem Problem, wenn Google seine CSS-Klassen anpasst, dass Plugin nicht mehr ordnungsgemäß funktioniert.<br
/> <span
id="more-1687"></span><br
/> Google hat vorgestern ein Update gefahren und John scheint nicht online zu sein. Da John so freundlich war und sein Plugin &#8220;free for all&#8221; zu veröffentlichen, habe ich das Problem kurzer Hand selbst gefixt. Im Klartext heißt dass nur, dass ich die Klassen auf den aktuellen Status angepasst habe.</p><p>Die aktualisierte Version findet ihr <a
href="http://derwebarchitekt.de/download/9">hier zum Download</a>. Ich habe sie schlicht 0.4.5.1 benannt, da ich John nicht weiter in seiner Versionsnummerierung nicht reinschreiben möchte. Eventuell müsst ihr einmalig die txt-Datei in wp-content/cache löschen. Danach sollte Bild als auch der Counter wieder zurückkehren.</p><p>Im Download ist das komplette Plugin enthalten, es reicht aber aus nur die googleCardClass.php zu ersetzen.</p> ]]></content:encoded> <wfw:commentRss>http://kaithrun.de/hotfix-fur-wordpress-plugin-googlecards045/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Developers Shame Day: Ein „Login“</title><link>http://kaithrun.de/developers-shame-day-ein-login/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link> <comments>http://kaithrun.de/developers-shame-day-ein-login/#comments</comments> <pubDate>Wed, 03 Nov 2010 07:09:54 +0000</pubDate> <dc:creator>Kai Thrun</dc:creator> <category><![CDATA[Codeschnippsel]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[alte Zeiten]]></category> <category><![CDATA[codeschnipsel]]></category> <category><![CDATA[css]]></category> <category><![CDATA[developers shame day]]></category> <guid
isPermaLink="false">http://derwebarchitekt.de/?p=1409</guid> <description><![CDATA[Als Cem zum Developers Shame Day aufrief, wusste ich eigentlich schon, in welchen Code ich gucken musste. Ich konnte die Dateien auf einer DVD auch wiederfinden. Ich muss zugeben, ich bin etwas fasziniert. Dem Zeitstempel sei dank, konnte ich auch noch entnehmen, wann die Datei etwa aktuell gewesen ist – 2001. Ich hatte zu der ...]]></description> <content:encoded><![CDATA[<p><img
src="http://derwebarchitekt.de/wp-content/uploads/developersshameday.png" alt="" title="developersshameday" width="500" height="100" class="aligncenter size-full wp-image-1408" /><br
/> Als Cem zum Developers Shame Day aufrief, wusste ich eigentlich schon, in welchen Code ich gucken musste. Ich konnte die Dateien auf einer DVD auch wiederfinden. Ich muss zugeben, ich bin etwas fasziniert. Dem Zeitstempel sei dank, konnte ich auch noch entnehmen, wann die Datei etwa aktuell gewesen ist – 2001.<br
/> <span
id="more-1409"></span><br
/> Ich hatte zu der Zeit ein eSport-Portal, was sich vorwiegend um Counter-Strike drehte. Es war bei 4Players gehostet und hatte im Schnitt 500.000 PIs im Monat. Der Erfolg des Portals kann aber nicht am Code gelegen haben, definitiv nicht! <img
src='http://kaithrun.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><p><img
src="http://derwebarchitekt.de/wp-content/uploads/usercheck_timestamp.png" alt="" title="usercheck_timestamp" width="398" height="76" class="aligncenter size-full wp-image-1410" /><br
/> Ich habe mich seiner Zeit scheinbar dazu entschlossen, die include-Funktion als godfather der PHP-Funktionen zu erkoren, anders kann ich mir den Kram selbst nicht erklären. So habe ich die Dateien in etwa 2-3kb abgelegt und es gab für jeden Senf eine eigene Datei. Funktionen werden auch völlig überbewertet. Der Login der Seite ging über geschätzte 13 Dateien inkl. User-Verwaltung.<br
/> In der „user.login.php4“ konnte sich der registrierte User also anmelden. Natürlich wurde das Passwort plain in die Datenbank geschoben. Vermutlich um dem User schneller sagen zu können, wie sein Passwort ist, wenn er es vergisst. Ich weiß es nicht.</p><pre class="brush: php; title: ; notranslate">
&lt;?php
include (&quot;header.php4&quot;);
include (&quot;mainmenu.php4&quot;);
include (&quot;banner.html&quot;);
include (&quot;menu.ro.html&quot;);
echo &quot;&lt;tr&gt;
&lt;td background=layout/hintergrund.jpg valign=top&gt;
&lt;body bgcolor=#FFFFFF text=#000000&gt;&lt;div align=center&gt;
&lt;table width=600 border=0 cellspacing=0 cellpadding=0&gt;
  &lt;tr&gt;
    &lt;td class=content&gt;Username (Nick)&lt;/td&gt;
    &lt;td&gt;
      &lt;form name=form1 method=post action=user.check.php4&gt;
        &lt;input type=text name=name&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td class=content&gt;Passwort&lt;/td&gt;
    &lt;td&gt;
      &lt;input type=password name=pass&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&amp;nbsp;&lt;/td&gt;
     &lt;td&gt;
      &lt;br&gt;&lt;input type=submit name=Abschicken value=Einloggen&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;/form&gt;
&lt;/table&gt;
&lt;/td&gt;&quot;;
include (&quot;rmenu.php4&quot;);
?&gt;
</pre><p>Wie bereits erwähnt, hatte ich mich auf kurze Dateien &#8220;spezialisiert&#8221;. Somit wurden die Eingaben dann auch nur in der Datenbank durchgereicht in der &#8220;user.check.php4&#8243;. Dort muss ich sagen, dass ich die Variable <strong>$timer in Zeile 3</strong> für äußerst gelungen und kreativ halte <img
src='http://kaithrun.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><pre class="brush: php; title: ; notranslate">
&lt;?
  include(&quot;dblogin.php4&quot;);
  $timer=Time()+60*60*24*180;
  if (($name != &quot;&quot;) &amp;&amp; ($pass != &quot;&quot;)){
    $result = mysql_query(&quot;SELECT * FROM readers WHERE username='$name'&quot;);
    if (mysql_affected_rows()){
      $readers = mysql_fetch_array($result);
      if ($pass == $readers[userpw]){
           SetCookie(&quot;username&quot;, $readers[username], $timer);
           SetCookie(&quot;userpw&quot;, $readers[userpw], $timer);
          }
    }
  }
  Header(&quot;Location: index.php4&quot;);
  mysql_close();
?&gt;
</pre><p>Der einzige Wermutstropfen, der einem vielleicht bleibt ist die Tatsache, dass man selbst nach 10 Jahren noch ansatzweise sich durch den Code hangeln kann. Ob das nun schön ist oder nicht, steht auf einem anderen Papier.</p><p>Die dazu gehörige CSS-Datei umfasste 30 Zeilen und hat durchaus noch Optimierungspotenzial, eine &#8220;skilly&#8221; Sachen wie Filter oder der Typberücksichtung sind dennoch enthalten. Wie man unschwer erkennen kann, 11px Fontsize war total in!</p><pre class="brush: css; title: ; notranslate">
a:active { color: lime; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}
a:hover { color: #00AEFF; font-weight: bold; text-decoration: underline; font-family: Arial; font-size: 11px;}
a:visited { color: #B78A00; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}
a:link { color: #B78A00; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}
a:visited:hover { color: #436BFF; font-weight: bold; text-decoration: underline; font-family: Arial; font-size: 11px;}
td.date { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial }
td.topic { color: orange; font-style: normal; font-weight: bold; font-size: 11px; font-family: Arial }
td.content { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; }
td.link { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; filter:shadow(color=black, strenght=#4) }
p.link { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; filter:shadow(color=black, strenght=#4) }
td.topic { color: #92929E; font-style: normal; font-weight: bold; font-size: 14px; font-family: Arial }
td.comment { color: #B78A00; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial }
.sb { scrollbar-arrow-color:#B78A00; scrollbar-base-color:#202C40; scrollbar-face-color:#202C40; scrollbar-shadow-color:#17202D; scrollbar-dark-shadow-color:#17202D; scrollbar-3d-light-color:#6E86AA; scrollbar-highlight-color:#6E86AA; margin-bottom:0; margin-left:15; margin-right:15; margin-top:0; padding-bottom:0; padding-left:0; padding-right:0; padding-top:0; color:#B78A00; font-size:11px; font-family:Arial; text-align: justify }
input, select {	font-family: Arial, Helvetica;	font-size: 11px; border-width:1;  background-color:#211E47; color:#B78A00 }
input type=radio { font-family: Arial, Helvetica;	font-size: 11px; color:#B78A00 }
</pre><p>Nach diesem Zeitraum würde ich gern wissen, was wohl damals einem durch den Kopf geschossen ist, als man diese Zeilen verfasst hat. Über das Tabellenlayout mag ich nicht klagen, dass war halt damals so. Ich glaube, ich wusste schon damals, dass der heutige Tag kommen wird und habe deswegen auch alle Kommentare weggelassen&#8230; #facepalm</p><p>Mehr Code zum Developers Shame Day findest Du bei:</p><ul><li>unset hatte mal eine Template Engine</li><li><a
href="http://www.datafreak.eu/2010/11/developers-shame-day/">Datafreak zeigt sein Backup Script</a></li><li><a
href="http://softwareentwickler.blogspot.com/2010/11/mein-beitrag-zum-developers-shame-day.html">Eine Pageproducer Klasse</a></li><li><a
href="http://www.peterkroener.de/mit-schlechtem-beispiel-voran/">Etwas komplexes Parsen</a></li><li><a
href="http://www.phphatesme.com/blog/aktuelles/der-developers-shame-day/" class="broken_link">Eine alte Kreditkartenvalidierung</a></li></ul><p>Danke Cem für die Idee, ich hatte mein Unterhaltungswert bereits anhand des eigenen Codes. Bin gespannt, was heute noch so den Weg ans Tageslicht findet.</p> ]]></content:encoded> <wfw:commentRss>http://kaithrun.de/developers-shame-day-ein-login/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>PHP: Einspaltige CSV schnell auslesen</title><link>http://kaithrun.de/php-einspaltige-csv-schnell-auslesen/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link> <comments>http://kaithrun.de/php-einspaltige-csv-schnell-auslesen/#comments</comments> <pubDate>Mon, 30 Mar 2009 14:42:14 +0000</pubDate> <dc:creator>Kai Thrun</dc:creator> <category><![CDATA[freebies]]></category> <category><![CDATA[PHP]]></category> <guid
isPermaLink="false">http://derwebworker.de/?p=339</guid> <description><![CDATA[Eben zwitscherte @Tameco, dass er nach einer Möglichkeit sucht, seine 1000 Links in einer Textdatei zu Links zu generieren. Die Lösung stellt in so ziemlich jeder Sprache kein größeres Problem dar. Selbst Excel konnte das Probem lösen. Ich habe PHP gewählt um zur Hilfe zu eilen. Wer möchte, dann sich&#8217;s ja in die eigene Sandbox ...]]></description> <content:encoded><![CDATA[<p>Eben <a
href="http://twitter.com/tameco/status/1417665527">zwitscherte @Tameco</a>, dass er nach einer Möglichkeit sucht, seine 1000 Links in einer Textdatei zu Links zu generieren. Die Lösung stellt in so ziemlich jeder Sprache kein größeres Problem dar. Selbst Excel konnte das Probem lösen. Ich habe PHP gewählt um zur Hilfe zu eilen. Wer möchte, dann sich&#8217;s ja in die eigene Sandbox legen. (Wehe einer ruft, dass es nicht W3C-Konform ist <img
src='http://kaithrun.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</p><pre class="brush: php; title: ; notranslate">
&lt;?php
$counter = 1;
$opener = fopen (&quot;links.csv&quot;,&quot;r&quot;);
while ( ($data = fgetcsv ($opener,1000, &quot;,&quot;)) !== FALSE ) {
    $num = count ($counter);
    for ($i=0; $i &lt; $num; $i++) {
        print ''.$data[$i].'&lt;br&gt;';
    }
}
fclose ($opener);
?&gt;
</pre>]]></content:encoded> <wfw:commentRss>http://kaithrun.de/php-einspaltige-csv-schnell-auslesen/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>WordPress: Kommentare und Trackbacks trennen</title><link>http://kaithrun.de/wordpress-kommentare-und-trackbacks-trennen/?utm_source=subscriber&#038;utm_medium=rss&#038;utm_campaign=rss</link> <comments>http://kaithrun.de/wordpress-kommentare-und-trackbacks-trennen/#comments</comments> <pubDate>Tue, 20 Jan 2009 15:54:09 +0000</pubDate> <dc:creator>Kai Thrun</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[Codeschnippsel]]></category> <category><![CDATA[kommentare]]></category> <category><![CDATA[ordnen]]></category> <category><![CDATA[trackbacks]]></category> <guid
isPermaLink="false">http://derwebworker.de/?p=117</guid> <description><![CDATA[Tendenziell werden WP-Themes nach dem Design ausgewählt. Hinterher ist der Ärger meist groß, weil das Theme gewisse Dinge nicht unterstützt. Kein Problem. In Zukunft werden wir ein wenig &#8220;customizen&#8221;. Diesmal möchte ich euch zeigen, wie man schnell und unkompliziert die Trackbacks aus den Kommentaren holt. Wie man die Kommentarzahl in Kommentare und Trackbacks bei der ...]]></description> <content:encoded><![CDATA[<p>Tendenziell werden WP-Themes <strong>nach dem Design</strong> ausgewählt. Hinterher ist der Ärger meist groß, weil das Theme gewisse Dinge nicht unterstützt. Kein Problem. In Zukunft werden wir ein wenig &#8220;customizen&#8221;. Diesmal möchte ich euch zeigen, wie man schnell und unkompliziert die Trackbacks aus den Kommentaren holt. Wie man die Kommentarzahl in Kommentare und Trackbacks bei der Anzeige teilt, werde ich in einem gesonderten Post die Woche erklären.<br
/> <span
id="more-117"></span><br
/> Ihr öffnet also eure <strong>comment.php</strong> eures Themes. In den meisten Themes kommt oben die WP-Afrage, danach folgen dann die Kommentare erst bzw. deren Auflistung.</p><pre class="brush: php; title: ; notranslate">&lt;?php foreach ($comments as $comment) : ?&gt;</pre><p>In dieser Zeile wird, wie nicht anders zu erwarten, eine Foreach-Schleife angefangen. Dort hakt man ein und ermitteln den Kommentar-Typen. Und fügen diese Zeilen in unseren Code ein.</p><pre class="brush: plain; title: ; notranslate">&lt;?php
$kommantartyp = get_comment_type();
if($kommentartyp == &amp;quot;comment&amp;quot;) {
?&gt;</pre><p>Die Variable ruft die Funktion <strong>get_comment_type()</strong> auf, welche WordPress von Haus aus mitbringt. Sie liefert nichts anderes als einen <strong>String </strong>zurück. Nämlich <strong>comment</strong>, <strong>pingback </strong>oder <strong>trackback</strong>. Wenn also der Kommentartyp ein comment ist, dann gib uns die Kommentare aus.</p><p>Vor Ende der Foreach-Schleife schließen wir unsere Bedingung. Dem &#8220;Non-comment&#8221;-Kommentar wird noch beigebogen, dass er gar kein Kommentar ist sondern ein Trackback.</p><pre class="brush: plain; title: ; notranslate">
&lt;?php
} else { //if-Abfrage $kommentartyp
$trackback = true;  //Du bist'n Trackback!
}
?&gt;
</pre><p>Das Ende der Foreach-Schleife ist diese Zeile</p><pre class="brush: plain; title: ; notranslate">
&lt;?php endforeach; /* end for each comment */ ?&gt;
</pre><p>Danach folgt meist noch ein HTML-Tag. Die Liste oder der DIV-Container werden geschlossen. Und jetzt kommt der Punkt, wo die Trackbacks eingefügt werden. <strong>Wichtig</strong>: Innerhalb der Schleife, wo die Kommentare angezeigt werden. Also <strong>oberhalb der Zeile</strong>:</p><pre class="brush: plain; title: ; notranslate">
&lt;?php else : // this is displayed if there are no comments so far ?&gt;
</pre><p>Und das ist der Code (naked), der <strong>über</strong> der Else-Zeile eingefügt werden muss:</p><pre class="brush: plain; title: ; notranslate">
&lt;?php
if ($trackback == true) {
foreach ($comments as $trackback) :
$kommentartyp = get_comment_type();
if($kommentartyp !=&amp;quot;comment&amp;quot;) {
comment_author_link() ;
}
endforeach;
}
?&gt;
</pre><p>Im Prinzip ist es nichts anderes wie die Kommentare auch ausgeben werden. Allerdings dass nun eben auf den <strong>comment_type gefiltert</strong> wird. Natürlich solltet Ihr eure Trackbacks noch formatieren. Sowohl HTML als auch CSS.</p><p>Als Beispiel:</p><pre class="brush: plain; title: ; notranslate">
&lt;?php if ($trackback == true) { ?&gt;
&lt;ul class=&amp;quot;trackbacks&amp;quot;&gt;
&lt;?php foreach ($comments as $trackback) :
$kommentartyp = get_comment_type();
if($kommentartyp != &amp;quot;comment&amp;quot;) { ?&gt;
&lt;li&gt;&lt;?php comment_author_link() ?&gt;&lt;/li&gt;
&lt;?php }
endforeach; ?&gt;
&lt;/ul&gt;
&lt;?php } ?&gt;
</pre><p>Wer z.B. eine Aufzählung vor den Links haben möchte, der nimmt anstelle einer unordered List (ul) eine ordered list (ol). Hinterher über CSS noch ein wenig hübsch machen und eure Trackbacks sind aus den eigentlichen Kommentaren raus. Die Funktion <strong>comment_author_link</strong> ist ebenfalls Bestandteil von WordPress. Sie gibt einen Link mit der URL des Kommentars mit Anzeige des Autors.</p><p>Fragen? Fragen!<br
/> In den Kommentaren, per Mail oder <a
href="http://twitter.com/derwebworker" target="_blank">Twitter</a></p><p>PS: Die deutschen Variablennamen sind absichtlich gewählt. Ich weiss, dass man es nicht macht <img
src='http://kaithrun.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Mag aber vielleicht für den einen oder anderen zum besseren Verständnis dienen. Man möge es mir verzeihen.</p> ]]></content:encoded> <wfw:commentRss>http://kaithrun.de/wordpress-kommentare-und-trackbacks-trennen/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
