Cursor vs. Cursor mit Haken
Veröffentlicht am 20.7.2006, 00:52 Uhr
Mir nun schon mehrmals aufgefallen, und ich muss peinlicherweise zugeben, dass ich keine Ahnung habe, was den Unterschied zwischen diesen beiden Text-Cursorn ausmacht:

Der zweitere mit Haken taucht hin und wieder auch in meiner Firefox-Adressleiste auf, allerdings ohne erkennbaren oder nachvollziehbaren Grund.
Kennt jemand den Unterschied zwischen diesen beiden Cursorn?
Häufige Fehlerquelle bei mysql_real_escape_string()
Veröffentlicht am 19.7.2006, 23:16 Uhr
mysql_real_escape_string() sollte ja auf jeden String angewendet werden, der in die Datenbank eingetragen wird. Mehrmals passierte es mir nun schon, dass ich auf neuen Servern nach der Ausführung eines Scriptes den Backslash auch in der Datenbank wiederfand. Grund:
Falls Sie magic_quotes_gpc aktiviert haben und mit Daten aus Benutzereingaben arbeiten, müssen Sie vorher Ihre Daten mit stripslashes() behandeln.
So einfach. Muss es mir nur merken. Und den Apache nach der Änderung neu starten.
WordPress-Sicherheit: nonce?
Veröffentlicht am 17.7.2006, 03:02 Uhr
Wer ein wenig mit dem WordPress-Admininterface (>= 2.0.3) herumspielt findet früher oder später im Quellcode ein seltsames hidden Field:
<input type="hidden" name="_wpnonce" value="b6f49bd123" />
Für was das gut ist, wird hier erklärt: http://asymptomatic.net/2006/06/01/2370/what-is-all-this-nonce-sense/
Vorsicht bei der php-Funktion http_build_query()
Veröffentlicht am 14.7.2006, 17:59 Uhr
Die Funktion http_build_query() kann ab PHP5 dazu benutzt werden aus Arrays einen URL-enkodierten String zu machen. Das ist toll. Vorher musste man sich das selber schreiben:
function http_build_query($formdata, $numeric_prefix = "") {
$arr = array();
foreach ($formdata as $key => $val)
$arr[] = urlencode($numeric_prefix.$key)."=".urlencode($val);
return implode($arr, "&");
}
Aufpassen sollte man jedoch, dass der Parameter “arg_separator.output” in der php.ini wirklich auf “&” und nicht auf “&” eingestellt ist – die angefragten Server nehmen einem das sehr übel. Zusätzlich entdeckt man es im Output des Query-Strings im Browser nicht.
Warum ich das erzähle? Ich habe heute fast eine ganze Stunde damit verbracht. Klasse.
Pingfix: Der doofe WordPress-Option-Cache…
Veröffentlicht am 9.7.2006, 23:47 Uhr
Einige meiner Testnutzer berichteten von Problemen bei den Pings für ehemals in die Zukunft datierte Beiträge. Irgendwie wurden diese Pings mehrfach ausgeführt, teilweise alle 15 Minuten über den Zeitraum mehrerer Tage. Nicht gut.
Ich habe also den halben Nachmittag damit verbracht das Problem aufzuspüren, schlussendlich lag es am WP-internen Caching. Hier werden auch Einstellungen von WordPress zwischengespeichert. Pingfix zweckentfremdet diese Datentabelle um die noch zu pingenden Einträge zwischenzuspeichern (Dadurch kann auf eine zusätztliche Tabelle oder Spalte in der Beitragstabelle verzichtet werden).
Über die Standardfunktion get_option() bekam PingFix nun also immer die zwischengespeicherten und teilweise nicht aktuellen Werte. Ich habe nun die get_option() kopiert und als PF_get_option() leicht modifiziert in PingFix übernommen.
function PF_get_option($setting) {
global $wpdb;
$row = $wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name = '$setting' LIMIT 1");
if( is_object( $row) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values
$value = $row->option_value;
wp_cache_set($setting, $value, 'options');
} else {
return false;
}
return apply_filters( 'option_' . $setting, maybe_unserialize($value) );
}
Warum der Cache mit den Einstellungsoptionen nicht aktualisiert wurde, konnte ich übrigens nicht klären. Eine richtige Dokumentation oder ähnliches zu diesen Funktionen habe ich auch nicht gefunden. Was soll’s, nun passt alles. Hoffe ich ;)
latin1_german1_ci oder latin1_german2_ci?
Veröffentlicht am 6.7.2006, 17:42 Uhr
Seit Version 2.6.x unterstützt phpMyAdmin die sogenannten Kollationen. Kollationen sind Zeichensätze und Sortierreihenfolgen nach denen zum Beispiel ORDER BY – Klauseln die Daten einer Datenbank sortieren. Es gibt 2 deutsche Zeichensätze, german1_ci und german2_ci. Der Unterschied ist im MySQL-Referenzhandbuch ganz gut dargestellt:
Die Sortierfolgen latin1_german1_ci und latin1_german2_ci basieren auf den DIN-1- und DIN-2-Normen. DIN ist das Deutsche Institut für Normung, also die deutsche Standardisierungsorganisation. DIN-1 heißt „Wörterbuchsortierung“, DIN-2 „Telefonbuchsortierung“.
- Regeln für latin1_german1_ci (Wörterbuchsortierung):
Ä = A
Ö = O
Ü = U
ß = s- Regeln für latin1_german2_ci (Telefonbuchsortierung):
Ä = AE
Ö = OE
Ü = UE
Ping-Probleme mit WordPress
Veröffentlicht am 13.6.2006, 00:27 Uhr
WordPress hat bis zur aktuellen Version 2.0.3 diverse Probleme und Fehler in den 3 Pingfunktionen Ping-Services, Trackback und Pingback:
- Zukünftige Posts pingen sofort nach Klicken des Buttons “Veröffentlichen” (Publish), nicht erst zum Veröffentlichungsdatum
- Nutzt man die XML-RPC-Schnittstelle (zum Beispiel mit Blogdesk) sind die Pings eher Glücksache
- Editierte Posts pingen erneut die Ping-Services an
- Bei Problemen mit den Pings gibt es keine Benachrichtigungen, Erklärungen oder Logfiles
- Der Nutzer muss warten bis die Ping-Services abgearbeitet sind
Wie schon in einem vorigen Post angekündigt arbeite ich an einer Lösung für diese Probleme. Die Punkte 1 bis 3 konnte ich mit “meinem” Plugin schon beheben, an 4 und 5 arbeite ich noch. Wenn du Lust hast das Plugin zu testen, eine kleine Mail an mich und ich schicke das Plugin mal rüber.
Musstest du dich noch mit anderen Fehlern und Problemen bezüglich der Pingfunktionen herumärgern? Kennst du andere Leute die Probleme hatten? Ab damit in den Kommentarbereich, wenn ich schon dran sitze kann ich die sicher auch lösen.
Wie WordPress pingt…
Veröffentlicht am 10.6.2006, 02:06 Uhr
Ich arbeite gerade an einem Plugin das die Ping-Funktionen von WordPress ein wenig verändern und verbessern soll. Auf jeden Fall habe ich gerade erst wirklich verstanden wie WordPress 2.x es (teilweise) schafft, dass der Nutzer nach dem Posten eines Beitrag nicht auf das Abarbeiten von Trackbacks und Pingbacks warten muss:
echo '<iframe id="pingcheck" src="' . get_settings('siteurl')
.'/wp-admin/execute-pings.php?time='. time() . '" style="border:
none;width:1px;height:1px;"></iframe>';
Die Datei execute-pings.php wird, falls nötig, einfach per Iframe in den Footer des Adminbereichs eingebunden und kümmert sich dann um die Pings. Wenn also ein Trackback nicht direkt ankommt, erstmal noch ein wenig im Adminbereich herumklicken damit der Ping auch wirklich ausgeführt wurde.
Ich frage mich wieso nicht mehr register_shutdown_function genutzt wird wie noch in WordPress 1.5. Jemand Ahnung?
Jetzt gilt es “nur” noch herauszufinden ob da nicht noch andere Funktionen sich um die Pings kümmern. Dazu aber in Kürze mehr…
WordPress-Plugin: Smart Update Pinger
Veröffentlicht am 26.5.2006, 19:08 Uhr
Smart Update Pinger sorgt dafür, dass WordPress nur bei neuen Postings die Pingliste durchgeht und alle Services anpingt.
Zusätzlich gibt es eine schicke Liste mit den Antworten der Pingservices. Diese hilft bei Problemen, oder wenn man einfach nur überprüfen möchte, was WordPress da nun in der Gegend herum gepingt hat.
(via: http://blog.beginnermillionaire.com/?p=63)
WordPress 2.0
Veröffentlicht am 29.12.2005, 18:28 Uhr
Ziemlich langsam alles. Generell gefällt es aber.
Das Plugin PHP Exec 1.5 wollte nicht mehr und musste durch Exec-PHP 2.0 ersetzt werden. Das tut wie es soll.