Xajax – PHP Framework für AJAX

Da ich für ein Projekt heute mal wieder AJAX verwenden musste, habe ich mich darüber informiert, was für Frameworks derzeit auf dem Markt sind. Unter vielen wurde das Framework Xajax gelobt. Daher habe ich mich heute mal näher damit auseinandergesetzt.

Das Framework ist sehr umfassend und kommt daher mit einem Download von 600kb auf den eigenen Rechner. 200kb davon sind Testdateien, Beispiele und Dokumentation. Trotzdem bleiben noch 400kb für das eigentliche Framework. Das ist meiner Meinung nach eine ganze Menge.

Für PHP Nutzer ist es schÖn, dass sie Xajax in ihre bestehenden Anwendungen integrieren kÖnnen. Xajax kann sogar mit Templates umgehen und liefert dafür Methoden mit, die nicht gleich eine Ausgabe erzeugen, sondern die Ausgabe als String zurückgeben.

Xajax ist leicht zu verstehen, wenn man mit Objektorientierter Programmierung vertraut ist. Bei der Nutzung erstellt man nämlich ein Objekt und kann über verschiedene Funktionen dessen die Ausgabe und das Verhalten ändern. Ein einfaches Beispiel:

$xajax = new xajax();
$xajax -> configure(‘javascript URI’,'class/xajax’);
$xajax -> registerFunction(‘writeTime’);
$xajax -> processRequest();

Fügt man nun noch an entsprechender Stelle die Funktion für den Header ein, so erhält man eine JavaScript Funktion im Header. Diese kann man nun beliebig im Quelltext ansprechen. Sie erhält lediglich den Zusatz xajax_. Die Funktion (writeTime) ist dabei eine vorher definierte PHP Funktion in der man dann sowohl PHP ausführen kann, als auch mit definierten Funktionen von Xajax die Ausgabe per JavaScript verändern kann. Dies sieht dann evtl. so aus:

session_destroy();
writeTime(time()-$wartezeit);
$response = new xajaxResponse();
$response -> assign(‘div1′,’innerHTML’,'test’);
return $response;

Dieses Beispiel zeigt, dass in der per JavaScript aufgerufenen PHP Funktion erst PHP ausgeführt wird und dann ein neues Xajax Objekt vom Typ xajaxResponse erzeugt wird. Das Objekt bietet dann Funktionen um den HTML Code per JavaScript zu verändern. Im obigen Beispiel wird in div1 der Inhalt in test geändert.

Xajax ist sehr komfortabel und liefert bereits nach kurzer Einarbeitungszeit sehr gute Ergebnisse. Leider habe ich keine wirklich gute Dokumentation dazu gefunden. Außerdem sind viele im Internet existierende Beispiele noch mit Xajax 0.2.4 geschrieben. Da in der aktuellen Version (0.5b4) vieles geändert wurde, kann es ganz schÖn verwirrend sein, wenn man beim Testen nicht die erwarteten Ergebnisse erhält. Die Einarbeitung ist daher etwas schwierig, aber sehr lohnenswert.

Tags: , , , , , , , , , ,

TYPO3, Joomla und WordPress

Eigentlich liegen Welten zwischen ihnen und trotzdem gehÖren sie in dieser Story zusammen. Für ein kleines Projekt, was gerade startet, wollte ich mal ganz krass auftrumpfen und was Vernünftiges machen. Was ist das vernünftigste, komplexeste, und beste CMS, was es auf dem Markt gibt? Klar – TYPO3. Dachte ich.

Ich fing also an, in einem ersten Versuche TYPO3 von der Webseite zu laden und auf meinem Server zu installieren und es klappte nicht. Ich bekam lediglich eine Fehlermeldung. Da mein Provider (großes Lob an dieser Stelle) anbietet, über das Kunden-Administrations-System TYPO3 per Klick zu installieren, habe ich diese Version ausprobiert und hatte sofort ein laufendes System. Theoretisch jedenfalls. Nachdem ich gefunden hatte, wo ich mich einloggen musste, stieg ich erst mal gar nicht durch. Die deutsche Sprache habe ich noch installiert bekommen, irgendwelche Seiten auch, aber spätestens beim Template war’s mir dann zu viel. Ich merkte, dass mein Vorhaben doch sehr viel Zeit brauchen würde. Also entschied ich mich für weniger Zeit und ein anderes CMS.

Joomla war mein nächster Kandidat. Dieses CMS war schnell runtergeladen und aufgesetzt, aber auch hier merkte ich, dass es ziemlich überladen war. So viele Dinge, die ich für das neue Projekt wahrscheinlich nie brauchen würde. Zudem hätte ich mich auch hier wieder ganz von vorne einarbeiten müssen. So flog auch dieses CMS schnell wieder runter und ich widmete mich meinem neuen Vorhaben:

Ich werde WordPress dazu einsetzen, um eine Internetseite zu erstellen – nein, keinen Blog, sondern eine richtige Internetseite. Ich bin selber gespannt, wie viel – ein eigentlich ja als Blogsoftware gedachtes System – Probleme mir das machen wird, aber ich gehe es erst mal sehr positiv an. Außerdem kenne ich mich mit dem System inzwischen einigermaßen aus und habe fast die ersten Plugins fertig :)

TYPO3, Joomla und WordPress haben also eigentlich gar nichts miteinander zu tun. Trotzdem WordPress anders gedacht ist, eignet es sich meiner Meinung nach für ein kleines Projekt perfekt auch als CMS. Zudem ist durch den Live Writer das Einarbeiten für Anfänger stark vereinfacht gegenüber den anderen Systemen. Nur des Namens wegen ein richtiges CMS verwenden? Meiner Meinung nach bei diesem Projekt Zeitverschwendung. Sollte ich meine Meinung ändern, weil ich an die Grenzen des Machbaren stoße, so werde ich euch sicher informieren ;)

Tags: , , , , , , , ,

WP-Plugin (1): Der Header

Diesem Beitrag geht folgender Beitrag voraus:

Leider hat sich der Start der Serie nun doch etwas verschoben. Heute mÖchte ich aber in einem ersten Teil die grundlegenden Dinge erklären.

Wenn du ein WordPress-Plugin schreiben mÖchtest, dann brauchst du gute bis sehr gute Kenntnisse in PHP, HTML und CSS. Wenn du dich damit noch nicht so gut auskennst, solltest du vielleicht lieber erst einmal diese Dinge lernen.

Das wichtigste an einem Plugin ist der Header. Er enthält die nÖtigen Informationen für WordPress, damit WordPress das Plugin erkennt und richtig auf der Pluginseite anzeigt. Ein Header sieht z.B. folgendermaßen aus:

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the plugin.
Version: The plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
*/
?>

Ich kopiere einfach diesen Abschnitt und setze die von mir benÖtigten Informationen ein. Sobald ich diese Datei nun abspeichere und in das Plugin-Verzeichnis von WordPress ablege, wird mir das Plugin auf der Pluginseite zum aktivieren angeboten. Und das, obwohl noch keine Zeile Code enthalten ist.

Weitere Informationen zum Start der Pluginentwicklung bietet dir auch der WordPress-Codex. Von dort kommt auch das oben zitierte Beispiel.

Tags: , , , , , , , , , , ,

Serie: Pluginentwicklung WordPress

Für diesen Blog und viele andere kommt die Blogsoftware WordPress zum Einsatz. Diese ermÖglicht es, Beiträge und Seiten zu schreiben. Sie verfügt über ein gutes Administrationsbackend. Wem das nicht reicht, der kann die Software mit Plugins erweitern. Diese Plugins lassen sich eigentlich sehr einfach schreiben – man braucht lediglich einiges an PHP und teilweise MySQL Kenntnissen.

Aller Anfang ist schwer und mein Anfang kam mir irgendwie besonders schwer vor. Deswegen mÖchte ich in einer folgenden Serie (meiner ersten dieser Art) einmal bei den wichtigsten Schritten zum ersten Plugin helfen. Da ich selber gerade mein erstes Plugin entwickele, weiß ich nicht, wie lange sich diese Serie hinziehen wird. Ich werde aber bereits in den nächsten Tagen mit einigen Grundinformationen beginnen.

Natürlich richtet sich die Serie an Entwickler und ist daher etwas technisch. Wenn ihr etwas nicht versteht kÖnnt ihr trotzdem gerne nachfragen.

Tags: , , , , , , ,

Dokumentenpfad für Apache ändern

Habe hier auf dem PC gerade mal wieder xampp installiert und war mal wieder begeistert, wie einfach das geht. Das einzige Problem trat auf, als ich das Verzeichnis für die Dokumente ändern wollte. Dabei übersah ich eine Einstellung. Daher hier noch mal der Ablauf:

  1. Die Datei httpd.conf Öffnen
  2. Nach DocumentRoot suchen
  3. Den dazugehÖrigen Eintrag ändern

Das wäre einfach, wenn das alles wäre. Das dachte ich aber leider. Weiter unten in der Datei steht dann folgendes:

# This should be changed to whatever you set DocumentRoot to.

Im Klartext: Hier muss der neue DocumentRoot noch einmal eingegeben werden… Daran lag’s und mich hat das mal wieder Zeit gekostet. Einfach mal komplett lesen.

[tags] Apache, xampp, PHP, MySQL, DocumentRoot[/tags]
Tags: , , , ,

Cross-Site-Scripting

Neben SQL-Injection gibt es auch noch das sog. HTML und Script-Injection. Auch hierzu gibt es einen CodeClip bei MSDN Solve. Der Clip zeigt sehr gut, wie es mÖglich ist, über Cross-Site-Scripting Daten von anderen Webseites abzufangen. Auch hier gibt es als Programmierer einiges zu beachten. Zwar wird auch in diesem Clip mit ASP.NET gearbeitet, aber es gilt genauso auch für andere Programmiersprachen wie z.B. PHP. Auch diesen CodeClip sollte sich also jeder Programmierer von Webseiten einmal anschauen. 

[tags] SQL Injection, HTML Injection, Script Injection, HTML, JavaScript, CodeClip, MSDN, PHP[/tags]
Tags: , , , , , , ,

SQL Injection

Kay Giza meldet immer so net die MSDN Solve CodeClips. Diesmal war etwas dabei, was mich sehr interessiert hat. Es sollte auch jeden anderen interessieren, der sich

mit Datenbanken wie zum Beispiel MySQL beschäftigt.

In dem CodeClip geht es darum, wie man sogenannte SQL Injections durchführen kann. Man kann mit diesen Injections erreichen, dass eigene Abfragen druchgeführt würden. Dies ist überall da mÖglich, wo man Usereingaben nicht ausreichend kontrolliert, sondern diese direkt in die Datenbankabfrage einfügt. Versierte Benutzer kÖnnen so an Nutzerdaten andere Benutzer kommen, sich mit falschen Benutzernamen einloggen oder ähnliches. Der Clip zeigt ziemlich deutlich, was wie mÖglich ist. Danach sollte es jedem mÖglich sein, seine eigenen Datenbankabfragen auf SQL Injections zu überprüfen.

[tags] CodeClip, MySQL, MSDN, SQL Injection, Usereingaben, Datenbank[/tags]
Tags: , , , , ,

Vordefinierte Variablen

In der Sprache PHP gibt es einige vordefinierte Variablen. In vielen Fällen ist es sehr lohnenswert, diese zu nutzen.

MÖchte man z.B. einen Login für die eigene Seite realisieren, so kommt ohne Sessions nicht aus. Hier hilft die globale variable $_SESSION weiter um Benutzerdaten zu speichern und egal von wo wieder abzurufen.

Auch interessant ist die Variable $_SERVER. Mit dieser kann man sich Auskünfte über den Benutzer einholen, z.B. wie er auf die Seite kam, was er für einen Browser benutzt (insofern nicht verändert) und so weiter. Ist also besonders beim programmieren von Besucherzählern interessant.

Auch die Variable $_COOKIE wird behandelt. Sie erklät sich sicherlich von selbst.

Es macht also in vielen Fällen Sinn, von den vordefinierten Variablen Gebrauch zu machen.

[tags] PHP, global, Variable, Server, Cookie, Session, get, post, Request, Files[/tags]

Tags: , , , , , , , , , ,

Bildschirmbreite != Viewport

Auf dem SELFHTML Weblog habe ich einen interessanten Artikel ausgegraben. Ausgegraben deswegen, weil er bereits vom April letzten Jahres stammt. Und interessant ist er, weil das Thema trotzdem noch aktuell ist: Optimierung für BildschirmauflÖsungen

Es ist ein irgendwie leidiges Thema für Webdesigner und trotzdem hoch interessant, wenn man Webseiten gestaltet. Der Artikel ist unbedingt lesenswert. Ich werde versuche eine solche Messung auch für meine Seiten einzuführen.

Tags: ,

HTML, PHP, MySQL und CSS – Was für was?

In diesem Artikel mÖchte ich einmal erklären, wofür man welche der oben genannten Schlagworte verwendet und wie diese ineinander übergreifen. Dabei spiegelt dieser Artikel natürlich lediglich meinen derzeitigen Wissenstand wieder und muss nicht in allen Punkten der Weisheit letzter Schluss sein.

Der grundlegende Baustein von Internetseitenerstellung ist sicherlich HTML. HTML ist die Abkürzung für Hypertext Markup Language, was soviel heißt, wie Hypertextauszeichnungssprache. Der vorletzte Teil dieses Wortes sagt klar aus, um was es sich dabei handelt: Auszeichnung. Man zeichnet Text so aus, dass erkenntlich wird, was er ist. Eine überschrift, wird als überschrift ausgezeichnet, ein Link als ein Link und eine Liste als eine Liste. Für viele Dinge gibt es dabei definierte Auszeichnungen. Einen guten Einstieg in die Thematik bietet SelfHTML. Wichtig ist dabei, dass es hier nicht um Darstellung geht, sondern um Auszeichnung. Ich zeichne meinen Text also nicht so aus, wie er dargestellt werden soll, sondern was er ist. Dabei ist z.B. ein Menü auf einer Internetseite nicht als Tabelle auszuzeichnen wenn es als solches erscheinen soll, sondern als eine Liste. HTML wird vom Browser interpretiert. Es hängt daher Maßgebend vom Browser ab, wie dieser die Seite darstellt.

Das nächste Schlagwort lautet PHP. PHP ist nun eine Programmiersprache – die wohl momentan verbreitetste im Web. Nahezu jede dynamische Internetseite und jeder dynamische Internetblog setzt auf PHP. PHP lehnt sehr an die Sprache C++ an und ist daher für viele Programmierer sehr einfach zu lernen. Außerdem ist PHP auch eine gute Einstiegssprache für Programmierneulinge. PHP wird auf dem Server ausgeführt und generiert HTML-Code der dann an den Benutzer geschickt wird. Mit PHP hat man also keinen Zugriff auf den PC eines Benutzers. Für jede Interaktion muss eine neue Seite vom Server angefordert werden, daher müssen Internetseiten häufig neu geladen werden.

MySQL ist die Datenbank überhaupt. Da sie kostenlos ist und ihre Arbeit gut tut, ist sie sehr verbreitet. Außerdem bietet sie viele APIs und ist in vielen Programmiersprachen von Haus aus implementiert. So bietet PHP von sich aus beste MÖglichkeiten mit MySQL zu kommunizieren. Eine Datenbank setzt sich sozusagen aus definierten Tabellen zusammen. Definiert heißt in diesem Fall, dass man vorher festlegt, wie die Spalten heißen und welche Typen von Werte in ihnen gespeichert werden. Außerdem haben Datenbanken ein Datenbank-Management-System, was den schnellen Zugriff auf die Daten ermÖglicht. über teilweise sehr komplexe Abfragen kann man nahezu jede Datenkonstellation bekommen, die man für die Datenaus- und Datenverwendungen benÖtigt.

Das letzte Glied in dieser Reihe ist CSS. Mit CSS nimmt man die gestaltung der HTML Attribute vor. Nahezu jede vorstellbare Gestaltung lässt sich vornehmen. Daher ist CSS dann für die Darstellung zuständig.

Ein Anwendungsbeispiel wäre nun dieses: Man mÖchte eine Community erstellen, in der User sich austauschen kÖnnen. Für die Speicherung der Userdaten benÖtigt man z.B. eine Datenbank. Man kÖnnte dies auch über Textdateien erledigen, damit werden diese aber Zweckentfremdet. Für solche Dinge sind Datenbanken gedacht und deswegen kann man diese auch dafür verwenden. Da der Inhalt der Seite je nach User unterschiedlich sein sollen muss man mit PHP dynamischen HTML Code erzeugen. Dieser wird mit CSS in der Darstellung beeinflusst. Das gute an der Trennung von HTML und CSS: Es lassen sich verschiedene Darstellung für Monitor, Drucker, Handy, … definieren. So wird sichergestellt, dass der Betrachter immer eine gute Anzeige der Seiteninhalte erhält.

Geht man nun noch einen Schritt weiter, so arbeitet man mit Templates. Templates sind der Versuch, PHP als Programmiersprache keinen HTML Code erzeugen zu lassen, sondern den HTML Code je nach Bedarf anzuzeigen oder nicht. Templates lassen also ein bisschen Programmiersprache in HTML-Dateien zu. Diese wird dann von PHP nur noch ausgewertet und ausgegeben. PHP selber erzeugt aber keinen HTML Code mehr. Der große Vorteil an dieser Arbeitsweise ist die komplette Trennung von Dynamik und HTML. So ist es mÖglich, dass jemand die Gestaltung einer Seite übernimmt und jemand ganz anderes die Dynamik der Seite programmiert. Die einzige Schnittstelle sind Templates.

Tags: , , , , , , , ,