Im Artikel Cracker-Bremse auf heise.de ist sehr gut erklärt, wie man es in eigenen Webanwendungen anstellt, die Passwörter der User sicher zu speichern. Inklusive Hintergründe und Einführung in Phpass (auf Seite 4).
Schlagwort-Archive: PHP
Eigene 404-Error-Page bei 1&1
Will man dem Besucher bei einer nicht gefundenen Seite nicht die vom Hoster vorgegebene Error-Page sondern eine Eigene präsentieren, so geht das normalerweise ganz einfach mit der folgenden Zeile in der .htaccess-Datei:
ErrorDocument 404 /error404.html
Bei dem Hoster 1&1 funktioniert das zwar auch, aber nur für statische Seiten. Dynamische Seiten mit PHP werden bei dieser Direktive ignoriert. Aber auch hier gibt es eine Möglichkeit: Das Rewrite-Modul vom Apache.
Um alle Seitenaufrufe, die nicht gefunden werden, auf eine eigene Fehlerseite umzuleiten fügt man in seine .htaccess-Datei diese Zeilen ein (an Stelle der o.g. Direktive):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /error404.html
Zur Erklärung: Alle Seitenaufrufe, deren REQUEST_FILENAME weder als Datei noch als Verzeichnis gefunden werden, werden auf die Seite error404.html im Wurzelverzeichnis (Document-Root) umgeleitet.
Bei mir ist dies dann häufig ein PHP-Script, welches mir die Vermisste URL nebst dem Referer zu mailt.
Artikel von Beta-Blogger nach WordPress umziehen
So, ich habe es geschafft, alle Artikel des alten Blog-Systems Beta-Blogger zu exportieren und diese in WordPress wieder zu importieren. Da ich keine direkte Übertragungsmöglichkeit gefunden habe, habe ich den Weg über CSV gewählt. Es gibt ein halbwegs brauchbares CSV-Import-Plugin und die Artikel aus dem alten Blog ließen sich mit dem folgenden PHP-Script als CSV exportieren:
<?php require 'bb_core.php'; /* see http://de.php.net/manual/de/function.htmlentities.php#90111 */ function htmlButTags($str) { // Take all the html entities $caracteres = get_html_translation_table(HTML_ENTITIES); // Find out the "tags" entities $remover = get_html_translation_table(HTML_SPECIALCHARS); // Spit out the tags entities from the original table $caracteres = array_diff($caracteres, $remover); // Translate the string.... $str = strtr($str, $caracteres); // And that's it! // oo now amps $str = preg_replace("/&(?![A-Za-z]{0,4}w{2,3};|#[0-9]{2,3};)/","&" , $str); return $str; } $entries = $blog->get_items('entry', NULL, 1000) or print $lang->no_entries; print("wp_title|wp_post_date|wp_category|wp_content|field1|field2|field3 "); foreach ($entries as $entry) { // Tags: Leerzeichen in "" ersetzen und " entfernen $tags = preg_replace('/"(w+) (w+)"/', '$1=$2', $entry->tags); // Tags durch Kommata trennen $tags = str_replace(" ", ", ", $tags); // oben ersetzte Leerzeichen zurück wandeln $tags = str_replace("=", " ", $tags); $title = htmlButTags($entry->title); $date = strftime("%Y-%m-%d %T", $entry->date); $body = preg_replace('/ /', '
', htmlButTags($entry->body)); $body = preg_replace('/src=["']media2/', 'src="/wp/wp-content/uploads/2009/09', $body); // Pipes müssen escaped werden $body = preg_replace('/|/', '|', $body); $body2 = preg_replace('/ /', ' ', htmlspecialchars($entry->body)); $teaser = htmlButTags($entry->topic); $category = htmlspecialchars($entry->category); print("$title|$date|$category|$body|$tags|$teaser| "); } ?>
Damit die Leerzeichen, die beim Export mit ‚
‘ escaped wurden, beim Import entsprechend wieder hergestellt werden, musste ich das CSV-Import-Plugin noch geringfügig anpassen und eine Zeile einfügen:
$post_content = str_replace('
', " ", $post_content);
(Das komplette, angepasste Plugin gibt es hier.)
Leider kann das Import-Plugin keine Tags importieren. Ich habe diese daher im ersten Benutzerfeld abgelegt, so dass sie dann beim Editieren des Artikels per Cut & Paste in das Tag-Feld übertragen werden können. Das ist sicherlich nicht der Hit und bedeutet, dass man jeden Artikel anfassen muss. Aber bei 34 Artikeln ist das noch machbar.