• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

GET übergabe von JS zu PHP mit Cookie Problemen

eclipse240hp

New member
Hallo,

ich baue aktuell an einer Tracking Möglichkeit für Shops.
Es ist möglich ein JavaScript in einen Shop einzubinden, welches dann an meinen Server an eine PHP Datei Daten per GET sendet und dann ein Cookie erstellt, welches den Nutzer immer wieder identifizieren kann.

Leider habe ich Probleme beim anlegen von Cookies in der PHP.
Ich möchte möglichst kein jQuery (wegen der performance) für einen ajax Request benutzen, aber damit hat es aktuell funktioniert.. nur mit einen normalem HTTP Request nicht..

Das ist mein JavaScript welches in den Shop eingebunden wird
PHP:
<script type="text/javascript">
//<![CDATA[
var client = {
identifier: '1'
};
var product = {
identifier: "123456789"
};
(function() {
var s = document.createElement("script");
s.id = "ccretartg";
s.type = "text/javascript";
s.async;
s.src = ("https:" == document.location.protocol ? "https://" : "http://") + "www.website.de/test/tracking.js";
var l = document.getElementsByTagName("script");
var x = l[l.length-1];
x.parentNode.insertBefore(s, x);
})();
//]]>
</script>

Das Script bindet dann folgende Datei ein, welche dann die Parameter an meinen Server per GET sendet.

PHP:
var products_array=[];
products_array.push(product);
var products={};
products.product = products_array;
json_str_products = JSON.stringify(products);

json_str_client = client.identifier;

var url = "http://www.website.de/test/php/tracking.php";
var data = 'c='+json_str_client+'&p='+encodeURIComponent(json_str_products);

//funktioniert
$.ajax({
	type: "GET",
	url: url,
	data: data, 
	dataType: "jsonp"
});

//funktioniert nicht!!!
$.ajax({
	type: "GET",
	url: url,
	data: data, 
	dataType: "html"
});

//funktioniert auch nicht!!!
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", url+"?"+data, false );
xmlHttp.send( null );
return xmlHttp.responseText;

Wenn ich die Scripte alle auf der selben Domain teste, dann funktioniert alles super und das Cookie wird auch von der PHP angelegt und korrekt ausgelesen.

Wenn ich aber die JS Scripte von einer anderen Domain auslese, dann funktioniert es nur mit der ersten jQuery AJAX Variante.. bei der zweiten jQuery Variante bekomme ich im CROME Debugger immer den Status "canceled"

und bei der dritten mit xmlHttp wird die PHP zwar korrekt aufgerufen und ich erhalte auch eine korrekte Response Cookies Mitteilung im Chrome, allerdings wird bei jedem Aufruf immer ein neuer Cookie angelegt, weil der zuvor angelegte nicht erkannt wird... o_O

Kann mir jemand erklären wieso das nicht geht und wie ich die Parameter noch anders übergeben kann außer mit jQuery...
 
danke für die Antwort jspit!

Also ist diese Möglichkeit nur gebegen, wenn man JSONP verwendet? Oder hat das auch etwas mit den Server Erinstellungen zu tun wo die PHP Datei liegt die den Cookie erzeugt?
Ich will bei der PHP Datei ja nicht zurück bekommen, sondern will diese nur aufrufen, um GET Parameter zu übergeben und dann einen Cookie erstellen.

Es gäbe ja noch die Möglichkeit mir einem Pixel zu Arbeiten, was auch sehr gut funktioniert, nur wollte ich komplett mit Javascript arbeiten und möglichst kein Framework wie jQuery für den Aufruf der PHP benutzen.

Such bitte mal im Quellcode hier LTB NOPOC - Langarmshirt - navy - Zalando.de nach "sociomantic".. arbeiten die auch mir JSONP ?? Hier ist das selbe Prinzip was ich auch verwenden möchte.. dort wird auch der Nutzer getrackt und ein Cookie angelegt... Wie gehen die dort vor?
 
Zurück
Oben