Mit ‘Programmierungen’ getaggte Artikel

Ajax Objekt ordnungsgemäß erstellen – eine cross-browser Lösung für korrektes Einsetzen von AJAX

Dienstag, 08. Februar 2011

AJAX (Ajax Asynchronous JavaScript and XML) ist eine asynchrone (oder auch synchrone) auf Javascript basierende Datenübertragung – Server zu Browser, die es ermöglicht, innerhalb einer HTML Seite eine HTTP-Anfrage auszuführen. Hierbei können beliebige beispielsweise PHP Skripte ausgeführt werden, deren Ausgabe überall auf die Seite intergriert werden kann, ohne dass man die Seite neu laden muss. Die Nutzung ist ziemlich straightforward und einfach, jedoch müssen bestimmte Gesetze eingehalten werden, damir Ihr AJAX Skript auf alle gängigen Browsern funktioniert.

Problematik

Um eine AJAX Abfrage zu programmieren, müssen Sie zunächst einen AJAX Objekt erzeugen, der die Abfrage über HTTP und Javascript absendet und die Antwort zurückgibt. Hierbei gibt es verschiedene Schreibweisen für die korrekte Erstellung des AJAX Objektes, die jeweils verschiedenen Browsern passen. Dieser Artikel setzt damit auseinander wie man ein AJAX-Objekt in einer JavaScript Funktion erstellen kann ohne nachzudenken ob der Browser das “frisst”. Die Ausführung einer Abfrage, die Wartezeit und das Handhaben der Antwort werden wir in weiteren Artikeln beobachten.

Lösung

Anbei eine Javascript Funktion, die einen AJAX Objekt cross-browser kompatibel erzeugt:

 
function CreateAjaxObject() {
    objAjaxRequest = false;
    if (window.XMLHttpRequest) {
        objAjaxRequest = new XMLHttpRequest();
        if (request.overrideMimeType) {
         objAjaxRequest.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
         objAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
             objAjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
   
    return objAjaxRequest;
}

Diese Funktion funktioniert einwandfrei unter IE6 und nach oben, Safari, Mozilla, Opera und Chrome. Weitere Browser sollten das auch machen können. Um das Objekt anschließend zu erstellen, müssen einen Befehl so ausführen:

var objAjax = CreateAjaxObject();

Nun können Sie mit objAjax abfragen. Viel Spass!

Sie kommen selber nicht weiter?
Keine Sorge, nehmen Sie einfach Kontakt mit uns auf oder rufen Sie uns unter 02161 177747 an!

PHP Session geht im IFrame unter Internet Explorer verloren

Montag, 31. Januar 2011

Sicherlich haben Sie versucht über ein IFrame verschiedene Inhalte auf Ihrer Seite einzubinden. Diese Inhalte generieren so genannte PHP Sessions, um verschiedene Daten während des Aufenthaltes zu behalten, unter anderem Login Cookies. Jedoch funktioniert das tadeloss nur unter allen Browser außer Internet Explorer, egal ob Sie das Ziel über HTTP oder HTTPS einbinden. Insbesondere wenn die Domains des Ziels und die Hauptseite, die das IFrame enthält, unterschiedlich sind. Auch wenn Sie die Session über die session_id von der Oberseite zum IFrame übertragen, geht sie verloren.

Problematik

Die PHP Session wird, auch wenn ordnunngsgemäß erstellt, nach dem Aufruf verloren. Sie geht ja nicht einfach verloren, sondern der Explorer löscht diese oder richtiger gesagt, akzeptiert diese nicht aus Sicherheitsgründen. Unter Safari und Mozilla liegt das Problem nicht vor. Interessant ist, dass die Session-variable erstellt wird, sie bekommen keine Meldung, dass die Session nicht gestartet ist oder sonstiges, sondern der Wert ist einfach komplett leer. Wenn Sie den Inhalt außerhalb des IFrames aufrufen, so funktioniert die Session problemlos.

Hintergrund der Problematik

Aus Sicherheitsgründen lehnt Internet Explorer das Anlegen der Session Cookie ab, egal wie Sie die Session starten lassen (entweder mit session_start() oder die Session wird durch Konfiguration automatisch gestartet). Microsoft sagt, dass die obere Seite diese Session missbrauchen könnte und deswegen wird sie nicht erstellt.

Lösung

Um dieses Problem umzugehen, müssen Sie eine P3P PHP header-Anweisung implementieren, die in Worten sagt, dass die Tatsache, dass die Oberseite Zugriff bekommen hat, wird nicht missbraucht. Diese müssen Sie in die PHP Datei hineinprogrammieren, die im IFrame angezeigt wird:

<?php header('P3P: CP="CAO PSA OUR"'); ?>

Diese Zeile muss überall rein, wo Sie Ihre Session-Cookies erzeugen. Die P3P Headers sind eine Art Fine-Tuning der Datenschutzbestimmungen, die Sie lokal auf Ihrem Browser eingestellt haben und die informieren den Browser, wie er sich verhalten soll, wenn bestimmte Probleme wir das von beschriebene auftauchen.

Sie kommen selber nicht weiter?

Keine Sorge, wir sind für Sie da. Rufen Sie uns an oder schicken Sie uns eine Anfrage, wir helfen Ihnen weiter.

Suchmaschinenoptimierung – Interne Verlinkung – SEO-Go

Dienstag, 14. Dezember 2010

285_100_produktbildNachdem wir innerhalb unserer Seite die interne Verlinkung zu den jeweiligen Bereichen in Angriff genommen hatten, machte unsere Seite in Google einen extremen Sprung nach vorne.

Wir haben festgestellt, dass es aber auch wichtig ist nicht immer nur mit ein und dem selben Wort auf die jeweilige Seite zu referenzieren, sondern im Wortstamm leicht zu variieren.
Beispiel: Programmierung; Programmierungen; Programmierer.

Wenn diese Aufgabe nicht automatisiert erfolgt, wie in unserem Fall durch unser Produkt, ist dies schon eine gewaltige Fleissaufgabe. Aber es lohnt sich ungemein.

 

Benötigen Sie Hilfe bei der Suchmaschinenoptimierung?
Nehmen Sie gerne mit uns
Kontakt auf – wir helfen Ihnen weiter.