MySQL: Zeichensatzärger

Published 2006-08-25, 16:21

Im Juli habe ich mit meinem Beitrag latin1_german1_ci oder latin1_german2_ci? kurz das Thema Kollationen angeschnitten. Kris Köhntopp hat den ganzen Zeichensatzkram etwas ausführlicher erklärt:

http://blog.koehntopp.de/archives/1360-Zeichensatzaerger.html

Mögliche Alternative zu in_array bei großen Arrays

Published 2006-08-21, 02:03

http://de2.php.net/manual/de/function.in-array.php#60559

[…]

The non technical explanation is before is you had 100 items and it took you 100 microseconds for in_array with 10 000 items it would take you 10 000 microseconds. while with the second one it would still take you 100 microsecond if you have 100 , 10 000 or 1 000 000 ids.

(the 100 microsecond is just a number pulled out of thin air used to compare and not an actual time it may take)

Beliebte mod_rewrite-Fehler

Published 2006-08-19, 18:21

Unter den Rewriteflags werden in der Dokumentation zu mod_rewrite 4 wichtige Punkte angesprochen. Dummerweise werden diese durch die blaue Box nicht etwa hervorgehoben, sondern rücken eher in den Hintergrund.

Dies ist schade, denn würde jeder Webmaster der mit mod_rewrite herumspielt diese Regeln durchlesen, gäbe es viel weniger Missverständnisse und Verwirrung was die Funktionsweise der RewriteRules angeht. Deshalb hier nochmal:

Note: Enabling rewrites in per-directory context

To enable the rewriting engine for per-directory configuration files, you need to set „RewriteEngine On“ in these files and „Options FollowSymLinks“ must be enabled. If your administrator has disabled override of FollowSymLinks for a user’s directory, then you cannot use the rewriting engine. This restriction is needed for security reasons.

Ganz beliebter Fehler Nutzung von mod_rewrite bei Hostern wie Hosteurope.

Note: Pattern matching in per-directory context

Never forget that Pattern is applied to a complete URL in per-server configuration files. However, in per-directory configuration files, the per-directory prefix (which always is the same for a specific directory) is automatically removed for the pattern matching and automatically added after the substitution has been done. This feature is essential for many sorts of rewriting – without this, you would always have to match the parent directory which is not always possible.

There is one exception: If a substitution string starts with „http://“, then the directory prefix will not be added, and an external redirect or proxy throughput (if flag P is used) is forced!

Wenn man das einmal verstanden hat, werden die Regeln viel klarer.

Note: Substitution of Absolute URLs

When you prefix a substitution field with http://thishost----escape_autolink_uri:ec32f0e44735807244628322d406ebe5----, mod_rewrite will automatically strip that out. This auto-reduction on URLs with an implicit external redirect is most useful in combination with a mapping-function which generates the hostname part.

Remember: An unconditional external redirect to your own server will not work with the prefix http://thishost because of this feature. To achieve such a self-redirect, you have to use the R-flag.

Das versteh ich ehrlich gesagt selbst nich ;)

Note: Query String

The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.

Probleme mit Queries gehören nach Verstehen dieses Absatzes zum Glück auch der Vergangenheit an.

WordPress-Plugin: Relative Dates for WordPress

Published 2006-08-02, 00:58

Relative Dates is a simple plugin for WordPress that displays the date of your posts as the time elapsed since it was posted (based on the date that the user is viewing the post; i.e., „Posted 2 weeks, 1 day ago“).

http://justinblanton.com/projects/relativedates/

Fremdes iFrame scrollen

Published 2006-08-01, 23:12

Das muss jetzt niemand verstehen, ich möchte den Gedanken einfach festhalten:

Will man ein iFrame, auf dessen Inhalt man keinen Einfluss hat, zu einem bestimmten Koordinatenpunkt scrollen, kann man das fremde iFrame in ein eigenes iFrame einbetten und dieses scrollen.

Quelle: http://douweosinga.com/projects/googlerandomimage

Tools für reguläre Ausdrücke: The Regulator & Regulazy

Published 2006-07-28, 08:46

Keiner mag reguläre Ausdrücke. Deshalb gibt es auch so viele toole Tools, die helfen sollen sie zu verstehen, visualisieren oder zu erstellen. The Regex Coach von Edi Weitz nutze ich schon eine Zeit lang. 2 weitere sind mir gerade über den Weg gelaufen:

  1. The Regulator

    The Regulator is an advanced, free regular expressions testing and learning tool written by Roy Osherove. It allows you to build and verify a regular expression against any text input, file or web, and displays matching, splitting or replacement results within an easy to understand, hierarchical tree.

  2. Regulazy

    Regulazy is a visual Regex Creation tool for beginners. Easy point and click user interfaces, predictive technology and much more! Still in alpha, but more features are coming!

Beide sind übrigens von Roy Osherove und werden in nächster Zeit mal bei mir getestet.

PHP: Zeilennummer ausgeben mit __LINE__

Published 2006-07-21, 13:08

Ach, da code ich nun seit x Jahren mit PHP durch die Gegend und bin nie auf die Idee gekommen, mal zu schauen, ob denn die Zeilennummer, die gerade ausgeführt wird, ausgeben werden kann.

Heute hatte ich dann endlich diese Idee: http://de.php.net/constants.predefined

Das hat man nun vom „Learning by Doing“…

Cursor vs. Cursor mit Haken

Published 2006-07-20, 00:52

Mir nun schon mehrmals aufgefallen, und ich muss peinlicherweise zugeben, dass ich keine Ahnung habe, was den Unterschied zwischen diesen beiden Text-Cursorn ausmacht:

Cursor vs Cursor mit Haken

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()

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.

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/

25 queries. 0,235 seconds.