Pretty URL in CMS Made Simple

In der Standardinstallation des Open Source Content Managment Systems CMS made Simple werden URLs mit einem Query String erzeugt. Die sehen dann z.B. so aus: http://www.domainname.ch/index.php?page=Kontakt

Um suchmaschinenfreundliche URLs (Pretty URLs) zu erzeugen, nutzt CMS made simple das Apachemodul mod_rewrite. Um dies zu aktivieren muss man in der Konfigurationsdatei config.php folgende Änderungen vornehmen:


#------------
#URL Settings
#------------
$config['url_rewriting'] = 'mod_rewrite';
#Endung der virtuellen Dateien
$config['page_extension'] = '.htm';
#Wenn die Seiten in einer Baumstruktur aufgebaut werden sullen (z.B. http://www.domainname.ch/parent/parent/childpage)
$config['use_hierarchy'] = true;
$config['query_var'] = 'page';

Im 2. Schritt passt man noch die .htaccess an:


Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# ReWrite Rule für News-Feed
RewriteRule ^News/rss(.+)$ index.php?page=News/rss$1 [S=1]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]

# Beginn CMSMS Security Einstellungen.

# Directory Browsing abschalten
Options -Indexes

# Zugriff auf config.php verbieten.


order allow,deny
deny from all

# No sense advertising what we are running
ServerSignature Off

# Spambots nach User_agent aussperren
RewriteCond %{HTTP_USER_AGENT} ^.*Whacker.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*TurnitinBot.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*JoBo.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*adressendeutschland.*$
RewriteRule ^.* - [F]

# 1. unterbindet, das fremde Seiten geladen werden
RewriteCond %{QUERY_STRING} ^(.*)=http://(.*) [OR]

# 2. blockiert libwww (Ausgangspunkt für diverse Hackversuche)
RewriteCond %{HTTP_USER_AGENT} ^libwww [OR]

# Blockiert Skripte, die versuchen, base64 encodierten Unsinn via URL zu versenden
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]

# Blockiert Skripte, die einen a ********** Tag in der URL enthalten
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

# Blockiert Skripte, die versuchen, PHP GLOBALS Variablen via URL zu ver‰ndern
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

# Blockiert Skripte, die versuchen, eine _REQUEST Variable via URL zu ver‰ndern
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]

# END Optional Settings

PHP Shell – Linux Shell via PHP Script

Heute bin ich per Zufall über PHP Shell gestolpert. Bei der PHPShell handelt es sich um ein PHP]Script von Martin Geisler welche Webhosting-Kunden ohne SSH-Zugriff eine Shell-Ähnliche Oberfläche zur Verfügung stellt.

PHP Shell kann unter phpshell.sourceforge.net als .zip oder .tar.bz2 heruntergeladen werden. Die Installation ist denkbar einfach. Es müssen die zwei Files phpshell.php und config.php auf den Webserver übertragen werden. In der Datei config.php muss ein Benutzer angelegt werden, der auf die PHP Shell Zugriff hat. Um das Passwort des Benutzers zu verschlüsseln, gibt es zusätzlich die Datei pwhash.php. Die Datei pwhash.php aufrufen, Benutzername und Passwort eingeben und danach diese in die config.php einfügen.

pwhash.php

pwhash.php

Als zusätzlichen Schutz empfiehlt es sich auf jeden Fall das Verzeichnis in dem sich phpshell befindet mit einem anderen Namen zu benennen sowie per .htaccess vor unbefugtem Zugriff zu schützen.
Genutzt werden können die meisten nicht-interaktiven Programme, welche auf dem Webserver installiert sind und sich auch mit einer normalen Shell nutzen ließen. Interaktive Programme, wie Editoren (z.B. vim) können nicht genutzt werden. Hierfür gibt es jedoch eine Erweiterung der PHPShell von Tobias Unger welche von seiner Website downgeloaded werden kann.

phpshell

Wie auf dem PrintScreen oben zu erkennen ist, lassen sich mit PHPShell auch ohne Probleme Shellscripte aufrufen. In diesem Fall ein Backupscript das jeden Tag den Webspace auf einen externen FTP Server backupt.

jScrollPane

jScrollPane ist ein Plugin für jQuery um die Scrolleiste im Browser zu gestalten.

jScrollPane

jScrollPane

jScrollPane ermöglicht das ersetzen der Standard Vertikal-Scrolleisten des Browsers in einem Blockelement mit einem overflow:auto Style. Die ScrollPane kann sehr einfach über ein simples Stylesheet gesteuert werden. jQuery läuft in allen Browsern welche jQuery unterstützen. Unterstützt ein Browser jQuery nicht, werden die normalen Scrolleisten angezeigt.

Beispiele eines Einbaus ist z.B. hier zu finden:

www.klein-abend.ch

jScrollPane lässt sich sehr einfach einsetzen. Eingebunden wird es so:



Die Dateien dazu kann man auf der jScrollPane Seite herunterladen

Um jScrollPane für einen CSS Container zu aktivieren, muss folgender Code ins Template eingebaut werden:



#container muss mit dem Namen des entsprechenden CSS Containers eingebaut werden.

Danach kann in der jScrollPane.css Datei der Style entsprechend der Wünsche angepasst werden.

Browsershots – PrintScreens einer Webseite mit verschiedenen Browsern

Statt jede Menge verschiedene Browser zu installieren um eine Webseite zu testen, reichen in der Regel drei verschiedene Browser. Z.B. IE7, Firfox und Safari und Mac. Für alle restlichen Browser gibt es Angebote wie z.B. Browsershots.org:

http://browsershots.org/

Hier lassen sich mit Angabe einer URL PrintScreen von über 50 verschiedenen Browsern mit 3 verschiedenen Betriebssystemen herunterladen. Es werden Windows, Linux und Mac unterstützt.

Barrierenfreiheit

Auf dem Namics-Blog gab es vor kurzem einen Beitrag über die Barrierefreiheit von Webseiten. Um Einschränkungen der Nutzer selber erfahrbar zu machen, konnten die Behinderungen von Nutzern mit einem speziellen Anzug simuliert werden.

So erschwert der Anzug etwa das Strecken der Arme und Bandagen behindern das Beugen der Ellbogen und Knie. Durch zusätzliche Gewichte und Gehörschutz wird die Testperson weiter eingeschränkt. Durch eine Brille und einen Helm mit orangem Visir wird die Sehstärke minimiert und das Gesichtsfeld verkleinert.

Durch die so demonstrierten Einschränkungen konnte sich jeder Entwickler von der Notwendigkeit einer Barrierenfreiheit von Internetseiten und weiteren Angeboten überzeugen lassen.

barrierenfreiheit

Zum Blog Eintrag von Namics.

YAML – Yet Another Multicolumn Layout

YAML ist ein praktisches CSS Framework zur mehrspaltige CSS Seiten. Für diverse CMS System gibt es fertige Vorlagen die direkt integriert werden können. So z.B. für Typo3, Joomla aber auch CMS Made Simple.

Im Moment bin ich daran basierend auf diesem Framework eine Webseite zu erstellen. Absolut praktisch dieses Teil.

Alle Informationen zu YAML finden sich auf www.yaml.de

Für Bücherwürmer gibt es zu YAML auch ein Buch zu kaufen in dem der Aufbau des CSS Frameworks beschrieben ist.

E-Mailadressen verschlüsseln

Um E-Mailadressen auf Webseiten zu verschlüsseln gibt es verschiedene Möglichkeiten. Eine davon werde ich hier näher anschauen.

Genutzt wird die Methode von mehreren CMS Systemen. Unter anderem auch von Typo3. Sie besteht aus zwei Teilen. Die E-Mailadresse wird mittels PHP verschlüsselt. Mittels JavaScript wird die Adresse beim Klick darauf entschlüsselt und mittels mailto: Link direkt im Mailprogramm geöffnet.

PHP Teil:


= 8364 ) {
$n = 128;
}
$r .= chr($n+1);
}
return "javascript:linkTo_UnCryptMailto('".$r."')";
}

?>

Der JavaScript-Teil:



Der JavaScript Teil wird im Header der Seite eingefügt.

Die Anwendung:

">info auf example punkt ch

PHP ShowCode

Wenn man den Inhalt eines Files oder z.B. den Inhalt eines DB-Memofeldes mit Syntax und Zeilennummern ausgeben will, kann man die Funktion ShowCode verwenden:


", $code);

$i = "1";
foreach ($code as $line => $syntax) {
echo "".$i." ".$syntax."
";
$i++;
}
}
?>

Die Funktion kann folgendermassen gebraucht werden: