Archiv der Kategorie: Webentwicklung

Concrete5: Datenbanknamen mit Binde- oder Unterstrich

Das CMS Concrete5® in der Version 5.4.1.1 (und wahrscheinlich auch älteren Versionen) hat Probleme mit Datenbanknamen, die einen Binde- oder Unterstrich beinhalten.

Wenn Datenbankabfragen ausgeführt werden wie etwa die SQL-Abfrage SHOW TABLES FROM […] – zum Beispiel wenn man über das Dashboard eine Datenbanksicherung vornehmen will – dann wird eine Fehlermeldung ausgespuckt, falls eben die Datenbank einen Binde- oder Unterstrich im Namen führt.

Ich habe im Concrete5-Forum diesen Bug berichtet und erhielt die erfreuliche Antwort, dass dieser Fehler in der aktuellen Entwickler-Version von Concrete5 behoben worden ist. Im öffentlichen Download-Bereich werden allerdings nur die stabilen, also fertigen Versionen angeboten. Bis die nächste stabile Version erscheint, kann man sich folgendermaßen behelfen:

Entweder man ändert Zeile 13 in der Datei /concrete5/concrete/libraries/backup.php von

$arr_tables = $db->getCol("SHOW TABLES FROM " . DB_DATABASE);

in

$arr_tables = $db->getCol("SHOW TABLES FROM `" . DB_DATABASE . "`");

oder man lädt sich die Entwicklerversion herunter von Github – doch Vorsicht, denn es handelt sich ja um eine Version, die noch nicht für den Einsatz in einer Produktivumgebung geeignet ist und noch Fehler enthalten könnte. Ich empfehle also Folgendes: Das heruntergeladene Zip- oder Tar-Archiv entpacken und nur die oben genannte Datei auf den Webserver hochladen, nicht aber das ganze Paket.

TinyMCE in Concrete5: Schriftgröße anpassen

Neulich schrieb ich, wie man die Schriftgröße des WYSIWYG-Editors »TinyMCE« im Content-Management-System »SilverStripe« anpassen kann. Heute will ich dasselbe für das CMS »Concrete5« erklären.

Man sucht mittels FTP-Client (etwa FileZilla, Core FTP Lite, Cyberduck) den Ordner /concrete/js/tiny_mce/themes und kopiert ihn nach /js/tiny_mce/themes/ (weil Dateien im Kern-Ordner niemals verändert werden sollten). Im kopierten Verzeichnis gibt es die Unterordner advanced, concrete und simple. Jeder dieser Ordner verzweigt sich noch weiter. Für uns interessant ist jeweils skins/default/. Wenn im Backend von Concrete5 unter Verwaltung > Allgemeine Einstellungen > Texteditor > Toolbar Set zum Beispiel Einfach eingestellt ist, nehmen wir uns den Ordner simple/skins/default/ vor.

Darin gibt es die CSS-Datei editor.css – diese bearbeiten wir mit einem Text- oder HTML-Editor. Gleich in den ersten Zeilen finden wir die Angabe


body, td, pre {
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 10px;
}

Wir ändern die Buchstabengröße zum Beispiel in 14px, laden die Datei wieder hoch, leeren den Cache von Concrete5 und den Browser-Cache – und das war’s dann auch schon.

Ladezeit von Webseiten

Eine kurze Ladezeit von Webseiten ist heutzutage ein ziemlich wichtiges Bewertungskriterium von Google – und ich könnte mir vorstellen: auch von anderen Suchmaschinenbetreibern. Sie wollen den Suchenden schließlich gute Ergebnisse liefern, und eine gute Website darf eben nicht langsam sein.

Denn kaum etwas ist ärgerlicher für Seitenbesucher als ein quälend lahmer Aufbau. Da wird dann gern schon mal schnell weggeklickt und weitergesurft – vielleicht zur Konkurrenz. Schlecht für den Seitenbetreiber, der eigentlich das Ziel hat, das Interesse der Besucher für seine Website und sein Unternehmen zu wecken.

Mit dem Ladezeit-Check von Topsubmit kann man die Geschwindigkeit seiner Webpräsenz testen. Das Tool zeigt an, wo die Schwachstellen sind. Das können zu große Bilddateien sein oder riesige JavaScript-Bibliotheken wie jQuery oder ähnliche. Lachen Sie nicht – 80 KiB sind riesig im WWW, auch heutzutage.

Also: Es ist Frühling und damit Zeit, abzuspecken!

Website absichern

Immer wieder passiert es, dass Websites in der Form attackiert werden, dass schädlicher Code eingeschleust wird. Jüngst bin ich auf eine Website gestoßen, die – vom Betreiber ungewollt – eine Verbindung zu »greatrow[dot]ru« aufbaute. Bei »Google Safe Browsing« kann man Näheres dazu erfahren.

Es ist nicht immer leicht, die Schwachstelle zu entdecken, über die es dem Angreifer gelungen ist, die Website zu infiltrieren. Man sollte aber, damit es möglichst gar nicht erst so weit kommt, seine Website von vornherein so gut wie möglich absichern:

  • Sichere Passwörter zu allen Zugängen vergeben, zum Beispiel: Login ins CMS, FTP-Zugang, Login zur Administrations-Oberfläche (Confixx, Plesk etc.) beim Webhoster. Diese Passwörter sollten mindestens acht bis zehn Zeichen enthalten und aus Klein- und Großbuchstaben, Ziffern und Sonderzeichen bestehen.
  • .htacess-Datei absichern, die den Zweck hat, dem Apache-Webserver bestimmte Anweisungen zu geben. Wie man diese Absicherung vornimmt, kann man bei squatlabs nachlesen. Die empfohlenen Dateiberechtigungen werden aber beim Standardhosting dazu führen, dass die Website nicht mehr erreichbar ist, hier dürfte die Berechtigung 644 die niedrigst mögliche sein.
  • Datenbankabfragen absichern: Wenn über Webformulare Benutzereingaben entgegengenommen und in eine Datenbank gespeichert werden, könnte schädlicher Code in die Datenbank eingeschleust werden, falls man die Eingaben ungeprüft/ungefiltert übergibt. Man spricht hier von eine SQL-Injection. Heise Security bietet zu diesem Thema einen älteren, aber immer noch gültigen Artikel an.

Achtung: Diese Maßnahmen allein machen es Angreifern nicht unbedingt unmöglich, in das System einzudringen, sondern sind als unerlässlicher Grundschutz zu verstehen, ohne den ein Einbruch so leicht wäre wie der unerlaubte Eintritt in ein Haus mit offenen Türen.

Sergej Müller: neues WP-Plugin für datenschutzkonforme Statistiken

Sergej Müller stellte heute Morgen in seinem Blog sein neues Plugin »Statify« für das Blogsystem WordPress vor. Google Analytics steht ja in Deutschland unter starkem Beschuss von Datenschützern, weil es IP-Adressen speichert und Daten von Deutschland in die USA sendet. »Statify« hingegen steht im Einklang mit den deutschen Daten­schutz­bestim­mungen.

Von WordPress-Kenner Sergej Müller stammen ja schon mehrere äußerst professionelle und brauchbare Plugins, zum Beispiel das bekannte und beliebte Anti-Kommentarspam-Tool »Antispam Bee«. Und auch »Statify« ist wie gewohnt kostenlos, aber natürlich ist es immer nett und auch fair, wenn zufriedene Benutzer als Dankeschön eine Spende per PayPal oder Flattr geben.

Was ich gut finde, ist, dass die Datenbank-Tabelle, in der die statistischen Daten gespeichert werden, sich in bestimmten Abständen selbsttätig reinigt. Es muss ja schließllich nicht sein, dass sie durch uralte Statistiken unnötig aufgebläht wird.

Statify: Plugin für Datenschutz-konforme Statistik in WordPress

Überflüssige WordPress-Plugins loswerden

Auch wenn man die beiden WordPress-Standard-Plugins »Hello Dolly« und »Akismet« gelöscht hat: bei einem WordPress-Update sind sie garantiert wieder da! »Hello Dolly« bietet keinen Mehrwert und »Akismet« ersetzen viele – wie in Foren zu lesen ist – lieber durch Antispam Bee.

Außerdem ist »Akismet« inzwischen in Deutschland aus datenschutz­rechtlicher Sicht äußerst umstritten und reiht sich damit in die von Datenschützern gehassten Tools Google-Analytics und Facebook-Like-Button ein.

Wie auch immer – wer diese beiden Plugins bei einem WordPress-Update eben nicht immer wieder erneut vorfinden möchte, kann dieses Entfernungs-Werkzeug installieren: Unwanted-Plugins-Remover für WordPress. Danke an das »Schweizer WordPress Magazin« für den Hinweis und noch mehr danke an Dominik Schilling, der das Plugin programmiert hat!

Concrete5 deutsche Version – und trotzdem noch englisch?

Die aktuelle deutsche Version des CMS »Concrete5«, concrete5.4.1.1_de_extended, stellt die Sprache trotz vorhandener deutscher Sprachdatei leider nicht von Englisch auf Deutsch um. Anscheinend wurde in einer bestimmten Datei vom deutschen Team eine nötige Konfiguration nicht vorgenommen. Aber so kann man es selber korrigieren:

In der Datei /concrete/config/base.php die Zeile 111 ändern von
define("LOCALE", 'en_US');
in
define("LOCALE", 'de_DE');

Spätestens nach einem Leeren des Browser-Cache ist dann alles in deutsch. Ich weiß bloß nicht, ob bei einem nächsten Update die oben genannte Datei nicht wieder überschrieben wird …

WordPress-Feed ohne Bilder

Wenn man im Feed seines WordPress-Blogs die Bilder nicht anzeigen lassen, aber auch den Text nicht gekürzt anbieten will, geht das mit Bordmitteln nicht. Ich habe aber eine Funktion gefunden, die man in die Datei functions.php im themes-Verzeichnis einfügen kann:

function cy_noImagesFeed($content){
    
$content=preg_replace("=<img(.*)/>=Uims", "&raquo;Screenshot&laquo;", $content);
    return(
$content);
}
if(
is_feed()){
    
add_filter('the_content', 'cy_noImagesFeed',99);
} 

Danke an cywhale für den Code! Und hier ist der Link zum entsprechenden Thread des WordPress-Deutschland-Forums:
rss-ausgabe-bitte-ohne-bilder