Häufige Fehlerquelle bei mysql_real_escape_string()

Published 2006-07-19, 23:16

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.

Topic(s): MySQL, PHP 2 comments - :)

WordPress-Sicherheit: nonce?

Published 2006-07-17, 03:02

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/

Topic(s): Wordpress 1 single comment - :/

Adsense Link-Block als Fake-Navigation

Published 2006-07-16, 21:08

Vermutlich nicht ganz sauber, was die Google Adsense TOS angeht, aber wirklich gut gemacht:

http://www.sapiensbryan.com/ads-minded-wordpress-theme/

Topic(s): Adsense No comments - :(

Vorsicht bei der php-Funktion http_build_query()

Published 2006-07-14, 17:59

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 „&amp;“ 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.

Topic(s): PHP 4 comments - :)

Google übertreibt es mal wieder…

Published 2006-07-13, 17:56

xyz.zip enthält eine exe-Datei. Aus Sicherheitsgründen ist das Senden dieses Dateityps in Google Mail nicht zulässig.

Frechheit.

Dabei habe ich die exe-Datei extra noch gezippt um beim Empfänger keine Probleme zu verursachen. Dann eben doch per Webserver.

Topic(s): Kram 1 single comment - :/

Pingfix: Der doofe WordPress-Option-Cache…

Published 2006-07-09, 23:47

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 😉

Topic(s): Wordpress No comments - :(

Disallow ist tot.

Published 2006-07-06, 17:54

Gestern habe ich endlich einen Schlussstrich unter das Projekt Disallow.de gezogen:

Das war’s, hiermit beende ich das Projekt Disallow.

[…]

Die Inhalte hier auf Disallow.de im Blog und Wiki bleiben zu Dokumentationszwecken erhalten, vielleicht nützen sie ja irgend wem noch etwas.

http://disallow.de/blog/2006/07/05/disallow-ist-tot/

Topic(s): Disallow.de 2 comments - :)

latin1_german1_ci oder latin1_german2_ci?

Published 2006-07-06, 17:42

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
Topic(s): MySQL 2 comments - :)

SMS-Versand mit Skype: 11,7 cent pro SMS

Published 2006-07-06, 15:02

Gerade erst über Svoogle.org drauf gestoßen:

Ab sofort können SMS-Nachrichten über Skype an Mobiltelefone raus versandt werden. […] Nach Österreich sind es zum Beispiel 13,6, nach Deutschland 11,7 und in die Schweiz günstige 10,2 Eurocent (alle Preise inkl. Mehrwertsteuer)

http://share.skype.com/sites/de/2006/05/skype_fuer_windows_25_beta_sms.html
http://www.skype.com/products/skypesms/rates/#listing-G

Sehr amüsant übrigens:

Die klugen Leute bei Skype haben sich jedoch eine tolle Sache einfallen lassen, mit der es möglich ist, dass die Nachrichten als Absender deine Mobilnummer tragen.

Ja sind die doch klug, tatsächlich eine Handynummer als Absender anzugeben *staun

Topic(s): Notiz No comments - :(

WordPress-Fehler: Falsche Zeitstempel bei Posts über XML-RPC-Schnittstelle – 2

Published 2006-07-05, 03:53

Ich habe mir den Fehler nun (natürlich) doch noch genauer angeschaut.

Erweiterung Analyse:

Ich habe mit dem Offline-Blogging-Programm Blogdesk weiter herumexperimentiert. Bei einem Post, der am 06.07.2006 um 03:11 Uhr veröffentlich werden soll übermittelt Blogdesk folgenden UTC-Zeitstempel:

<dateTime.iso8601>20060705T01:11:00</dateTime.iso8601>

In Zeile 551 der xmlrpc.php (und der Funktion dahinter) wird dieser jedoch wegen der fehlenden Zeitzone als Nutzerzeit (also +0200) behandelt (Zeile 673, wp-includes/functions-formatting.php). Somit werden diesem Zeitstempel nun erneut 2 Stunden abgezogen um eine GMT-Zeit ausgeben zu können, was dann zu den 2 fehlenden Stunden führt: 05.07.2006, 23:11.

Vermeintliche Lösung

Ich konnte leider nicht herausfinden, was xmlrpc und vor allem die MetaWeblogAPI hier eigentlich für ein Datenformat, mit oder ohne Zeitzone, UTC oder lokale Zeit, erwarten. Übermittelt man jedoch an die xmlrpc-Schnittstelle von WordPress einfach den Zeitstempel mit der angefügten Zeitzonendefinition für UTC +00 (Z scheint auch irgendwie nicht zu gehen)

<dateTime.iso8601>20060705T01:11:00+00</dateTime.iso8601>

trägt WordPress die korrekten Timestamps in die Datenbank ein.

Und das ist ja eigentlich alles, was ich erreichen wollte.

Topic(s): Kram No comments - :(

19 queries. 0,138 seconds.