Admin-Loop in Joomla-Installationen

Joomla CMS

Joomla CMS

Relativ oft hat man nach einer Installation vom Open-Source CMS Joomla! das Problem, dass man nach Anmeldung im Backend immer wieder auf die Login-Seite zurückfällt. Ich möchte kurz die meisten Fehlerfälle aus meiner Sicht darlegen, quasi als Checkliste:

1. tmp-Verzeichnis
Möglicherweise ist das tmp-Verzeichnis, in dem die Sessions gespeichert werden, nicht beschreibbar. Der Webserver muss schreibend auf das temporäre Verzeichnis zugreifen können.

2. configuration-php
Befinden sich am Anfang der Datei configuration.php ein Zeichen, das da nicht hingehört? Dieses Zeichen (BOM – Byte Order Mark) ist vermutlich nur mit einem Hex-Editor sichtbar. Es muss sichergestellt werden, dass die Datei in UTF-8 nach der spitzen Klammer noch Leerzeichen oder -zeilen? Wenn ja, diese löschen.
Eine weitere Möglichkeit sin unzulässige Zeichen am Ende der Datei. Das letzte Zeichen in der Datei muß zwingend die spitze Klammer „>“ sein.

3. cache-Verzeichnis
Ist der Cache-Pfad in der configuration.php falsch gesetzt? Der Cache-Pfad muss korrekt gesetzt und ebenfalls wieder vom Webserver beschreibbar sein.

4. application.php
In der Datei /joomla-installation/libraries/joomla/application/application.php die folgende Zeile auskommentieren:

$session->fork();

Dies kann die Ursache bei bestimmten PHP-Versionen sein, kommt auch recht häufig vor, dass dies die Lösung darstellt.

mySql HowTo: Verwendung von IF-Statements

mySql

 

Durch die Verwendung der IF()-Funktion in mySQL kann man sich oftmals weitere unnötige Abfragen sparen. In diesem kleinen HowTow möchte ich dies kurz an ein paar einfachen Beispielen zeigen, auch in Verwendung mit weiteren Funktionen, hier im konkreten Fall mit SUM(). Ich denke, das reicht aus, um das Prinzip leicht zu verstehen.

Generelle Syntax von IF():
SELECT IF (2 > 1, 'das ist wahr', 'das ist falsch')

Die Funkion hat also 3 Parameter. Der erste ist die Bedingung, der zweite der Wert, der zurückgegeben wird, wenn die Bedingung wahr ist und der dritte der Wert, der zurückgegeben wird, wenn die Bedingung falsch ist.
In obigem Beispiel ist die Bedingung ist wahr, deshalb wir also der erste Wert ausgegeben.

Beispiel 2:
SELECT IF (2 = 1, 'das ist wahr', 'das ist falsch')

Die Bedingung ist nun falsch, deshalb wir der zweite Wert ausgegeben.

Beispiel 3:
Wenn wir uns nun vorstellen, dass wir eine Tabelle haben, in der Kunden erfasst sind, die deren Stammdaten auch das Land, in dem sie wohnen, erfasst ist, dann wäre eine sinnvolle Abfrage, wieviel Kunden aus Deutschland bzw. wieviele Kunden aus dem Ausland kommen. Das könnten wir mit einem Count in 2 Abfragen mit where-Bedingung leicht herausfinden, es geht aber auch eleganter in einem Rutsch. Das sähe dann ungefähr so aus:

SELECT SUM(IF(country = 'Deutschland',1,0)) as kunden_deutsch,
SELECT SUM(IF(country != 'Deutschland',1,0)) as kunden_international
FROM customers

Beispiel 4:
Wir haben eine Tabelle mit Produkten aus verschiedenen Kategorien, auch der Preis ist hinterlegt in den Produktdaten.
Es gibt bei uns eine magische Grenze von 20 Euro, alles was über dieser Grenze liegt, wird von unseren Kunden als teuer eingestuft, alles was darunter liegt, wirkt auf unsere Kunden preiswert.
Es wäre schön, wenn wir nun schnell rausfinden könnten, wieviele preiswerte und wieviele teure Produkte es gibt. Diese Information möchten wir natürlich auch pro Kategorie visualisieren.

SELECT category
SUM(IF(price <= 20,1,0)) as preiswert,
SUM(IF(price > 20,1,0)) as teuer
FROM products
GROUP BY category

Das Ergebnis gibt die Summe der preiswerten und teuren Produkte gruppiert nach Kategorie aus.

Google URL-Shortener Service goo.gl

Google hat nun den eigenen URL-Shortener-Service http://goo.gl/ öffentlich gemacht und die dazugehörige Website gelauncht.
Ist man mit seinem Google-Account angemeldet, dann hat man auch Zugriff  auf Historie und Klick-Statistiken der angelegten Kurz-URLs.
Was auch cool ist: durch Anhängen der Endung „.qr“ an eine gekürzte URL erhält man automatisch einen QR-Code, den man schick zum Aufrufen von Web-Adressen mit Mobilgeräten verwenden kann, die eine Kamera (und die entsprechende Software) an Bord haben.
Der Dienst ist laut Matt Cutts schnell, stabil, sicher und verhält sich hinsichtlich 301/permanent-Redirects vorbildhaft.

kostenloses Vim-Tutorial mit dem Vim Tutor

Vim ist ein mächtiger und weit verbreiteter Editor. Er stellt quasi eine erweiterte Version des auf den meisten Unix-Systemen zur Verfügung stehenden Editors Vi dar. Die beste, allerdings relativ unbekannte Ressource zum Erlernen von Vim kommt direkt mit und ist kostenfrei. Einfach nur in den normalen Modus (also nach Aufrufen vom Kommando „vim“ oder im Edit-Modus nach Aufrufen von „vim filename.ext„) gehen und dann :! vimtutor eintippen.
Es erscheint der folgende Begrüßungs-Bildschirm:

Der VIM-Tutor

Der VIM-Tutor

Vim bietet dann einen ungefähr halbstündigen Praxiskurs an, in dem man alle wichtigen Funktionen und Kommandos kennenlernt – viel Spass!

Favicons mit transparentem Hintergrund – so klappt die Erstellung

Das Erstellen von Favicons mit transparentem Hintergrund kann mit den gängigen Web-Diensten zum Problem werden, wie ich festgestellt habe. Allerdings braucht man genau diese immer öfter, da sie auch als Shortcurt auf dem Desktop und so weiter abgelegt werden können – und dies sieht häßlich aus, wenn keine Transparenz vorhanden ist. Nach etlichem Rumprobieren hab ich’s nun direkt mit Photoshop hinbekommen. Vielleicht hilft’s ja dem ein oder anderem, hier also folgt die kurze Anleitung:

1. Ladet Euch das ICO-Format-Plugin von telegraphics.com.au runter, in dem Archiv, das Ihr erhaltet, findet Ihr eine Datei mit der Endung .8bi
2. Diese Datei legt Ihr in das <Photoshop-Installationsverzeichnis>/plug-ins/fileformats/ Verzeichnis. Es gibt von dem Plugin übrigens auch eine OS X-Version.
3. Nach dem Neustart von Photoshop könnt Ihr Euch nun Euer Bild mit dem speichern-unter-Dialog auch im .ico-Format abspeichern.

Mit der beschriebenen Vorgehensweise wurde bei meinen Versuchen erfolgreich die Transparenz erhalten, juhu, mission accomplished.

PHP-Info Code als Snippet – phpinfo()

Boah ey, jetzt hab ich’s so oft gegoogelt, und weil ich mir die Sytax nie merke, lege ich mir den (zugegebenermaßen sehr kurzen) phpinfo() Code jetzt endlich mal hier als Snippet ab.

Mit phpinfo() lassen sich Informationen über die auf dem Server installierte PHP-Version anzeigen. Einfach eine php-Datei mit dem nachstehenden Code uploaden und im Browser aufrufen – aber Vorsicht, da sind sensible Serverdaten dabei, die niemand Unbefugtes zu Gesicht bekommen sollte.

Beispielscript:

<?PHP
phpinfo();
?>

HTML5 Formular Features Teil 1

In diesem Beitrag möchte ich ein paar neue und praktische HTML5-Features für Formulare zeigen, die man bedenkenlos heute schon einsetzen kann. Die Browser, die diese neuen Funktionalitäten noch nicht unterstützen, ignorieren die Neuigkeiten einfach, während User, die Safari, Chrome oder auch Opera einsetzen, von den neuen Möglichkeiten profitieren. Für die eMail- und URL-Validierungen ist es allerdings sinnvoll und empfehlenswert, eine Fallback-Validierung vorsehen.

1. das Attribut autofocus
autofocus kann als Attribut für ein beliebiges Formularfeld verwendet werden und es tut genau das, was man erwartet: der Cursor wird automatisch onload in diesem Formularfeld gesetzt, man braucht kein extra Javascript mehr dazu wie bisher.

<input type="text" name="firstname" autofocus />

2. das Attribut placeholder
placeholder kann dazu benutzt werden, um ein Textfeld mit einem Default-Wert zu belegen. Sobald der User in das Formular-Feld klickt, verschwindet der Text wie gewohnt, funktioniert also nun auch ohne Javascript.

<input type="text" name="lastname" placeholder="Egger" />

3. type url
Ein Input-Feld kann nun  auch vom Typ „url“ sein. Automatisch wird das Feld auf eine gültige Web-Adresse hin validiert. Opera zeigt zusätzlich ein URL-Icon innerhalb des Formularfeldes an. Wenn man mit dem iPhone-Safari auf so ein Formular kommt und ins Feld klickt, zeigt die Tastatur automatisch die dafür meinst gebrauchten „.com“, „.“ und „/“ Buttons.

<input type="url" name="url" />

4. type email
Ein Input-Feld kann nun  auch vom Typ „email“ sein. Automatisch wird das Feld auf eine gültige eMail-Adresse hin validiert. Opera zeigt zusätzlich ein eMail-Icon innerhalb des Formularfeldes an. Wenn man mit dem iPhone-Safari auf so ein Formular kommt und ins Feld klickt, zeigt die Tastatur automatisch die dafür meinst gebrauchten „@“ und „.“ Buttons.

<input type="email" name="email" />

Browser-Validierung ohne zusätzliches Javascript

Browser-Validierung ohne zusätzliches Javascript

reflektierender Spiegel-Effekt mit CSS

Bild mit webkit-box-reflect Effekt

Bild mit webkit-box-reflect Effekt

Heute bin ich über eine coole webkit-Sache gestolpert: man kann mit CSS Bildern einen äußerst ansprechenden reflektierenden Spiegel-Effekt verpassen, das kennt man aus den ansprechenden Produktabbildungen. Der Effekt funktioniert zwar nur in Webkit-Browsern (Safari/Chrome), ist aber natürlich nicht weiter schlimm, die anderen Browser ignorieren diese Eigenschaft halt dann einfach.
Spielt also einfach mal damit rum, man kann echt schöne Effekte erzielen. Nachstehend findet Ihr noch ein kurzes Beispiel, wie es grundlegend läuft, außerdem findet Ihr hier ein Beispiel zum Anschauen.

Wenn’s Euch ebenso gut gefällt wie mir, dann könnt Ihr Euch hier weiter einlesen.

<head>
<meta charset="utf-8">
<title>untitled</title>
<style>
#container {
width: 600px;
margin: auto;
font: 16px/1.4em helvetica, arial, sans-serif;
}
img {
float: left;
margin: 0 20px 0 0;
-webkit-box-reflect: below 4px -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(.6, transparent), to(white));
-webkit-border-radius: 0px;
border-radius: 3px;
border: 3px solid #666;
}
</style>
</head>
<body>
<div id="container">
<h1>Spiegel-Effekt</h1>
<img class="post-image" src="hope.jpg" alt="hope" />
</div>
</body>
</html>

Safari 5 jetzt mit Reader-Funktion

Habe ich grade zur eigenen Überraschung frisch entdeckt nach dem letzten Update auf Safari 5, allerdings handelt es sich ehrlicherweise dabei ja wahrscheinlich um die auffälligste Änderung, die einem ins Auge sticht: es gibt jetzt in der Adresszeile einen praktischen Reader-Button, wenn man sich in einem Artikel befindet.

Reader-Funktion in Safari 5

Reader-Funktion in Safari 5

Der neue Modus wird direkt in der Adressleiste über die Schaltfläche „Reader“ aktiviert. Die Website wird dann abgedunkelt und im Vordergrund wird der Artikel ähnlich wie ein Word-Dokument inklusive aller zugehöriger Media-Elemente angezeigt und kann über eigene Schaltflächen ausgedruckt, gezoomt oder auch per eMail verschickt werden.
Mehrseiter werden ebenfalls erkannt, die Reader-Ansicht ist scroll-fähig.

Wie genau Safari erkennt, weiß ich nicht im Detail, vermutlich ein Zählen von p-Tags und das Auftreten von zusammenhängendem Text. Faktisch handelt es sich wohl um eine nun fest in den Browser eingebaute Version des Readability-Bookmarklets