Alternative zu Session bzw. Cookie

max

Erfahrenes Mitglied
Mein Problem ist folgendes:

Ich habe ein Statistikprogramm dass auf einem anderen Server läuft und in diesem setzte ich ein Cookie damit ich die Benutzer zuordnen kann. Also jeder Benutzer bekommt für seinen Besuch eine ID.

Sieht zB so aus:
Code:
IP | Besuchte Seite | Referer | Besucher ID
   192.168.0.1 | index.htm | www.google.com | 1126864344
    192.168.0.1 | seite1.htm | www.google.com | 1126864344
     192.168.0.1 | seite2.htm | www.google.com | 1126864344
     192.168.0.1 | seite3.htm | www.google.com | 1126864344

Nun ist mein Problem dass ich durch Sicherheitseinstellungen bei den Browsern teilweise mein Cookie nicht sezten kann und somit jeder Seitenaufruf des Besuchers als neuer Besucher gewertet wird.

Mit Sessions hatte ich das gleiche Problem.

Was haltet ihr davon wenn ich einfach eine Id aus IP Adresse und einem Timestamp der nur bis zur Stunde geht, als Besucher Id verwende.

Sollte möglichst genau sein.

Ich will es einfach so machen dass ich mir vom einem Script in das nächste nichts übergeben muss.

mfg
Max
 
Bei Sessions einfach die Session_id über die URL weiter geben wenn er keine cookis akzeptiert ,

<?php
session_id($_GET["sid"]);
session_start();
....
?>

zum Beispiel , session variablen kannst ja regestrieren , das einzigste Problem hatte ich nur dabei das die URL rumkopiert werden konnte auf andere Rechner , das hab ich dann damit gelöst das ich einfach seine aktuelle IP in der Session gespeichert habe und sie dann immer mit $_SERVER["REMOTE_ADDR"] überprüft habe.
 
Hätt ich mir auch schon gedacht, aber auf der Seite für die die Daten erfasst werden wird mein Skript durch ein JavaScript aufgerufen.

Dh.:
Der Besucher kommt auf die Seite (fremder Server) und es wird ein JavaScript aufgerufen dass mir die benötigten Daten an eine PHP Datei (liegt auf meinem Server) sendet. In dieser Datei werden die Daten dann erfasst und hier sollte auch das Cookie gesetzt werden.

Ich muss davon ausgehen dass der Server auf dem die zu erfassende Seite ist kein PHP zur Verfügung hat.
 
Naja dann ist es ja der erste Besuch auf deiner Seite Quasi , dann machst einfach normal session_start() zu beginn , speicherst dann alle Werte drinne die du möchtest.

also

PHP:
   <?php
    if(isset($_GET["sid"]){
   session_id($_GET["sid"]);
   session_start()
    $sid = session_id($_GET["sid") ; 
  }
    else
    {
   session_start();
   sid = session_id(),
    }
    ..
    .
    ?>

Somit könntest du auch das Script dann auch selber aufrufen und die session_id() bleibt dir erhalten , darfst nur nicht vergessen die jedesmal per Link mitzugeben was ja eh schon Pflicht ist da man nicht genau weiss ob der Nutzer nun Cookis akzeptiert oder nicht.

Oder handelst du alles komplett auf 2 verschiedenen Servern ab , wenn ich das nun richtig verstanden hab kommt er zu Dir auf die Webseite , wo auch das PHP Script liegen sollte :) Und dort werden dann die Daten von JS erfasst quasi und an dein PHP Script geschickt.

Dann erstellst dort nachdem das Script aufgerufen wird die Session und speicherst die Variablen. Wenn du diese dann an einen Server schickst wo kein PHP läuft wird es klar nicht funktionieren aber ansonsten seh ich da erstmal keine Probleme da das Script ja immer Serverseitig abgewickelt wird.
 
Zuletzt bearbeitet:
FipsTheThief hat gesagt.:
Oder handelst du alles komplett auf 2 verschiedenen Servern ab , wenn ich das nun richtig verstanden hab kommt er zu Dir auf die Webseite , wo auch das PHP Script liegen sollte :) Und dort werden dann die Daten von JS erfasst quasi und an dein PHP Script geschickt.

Tut mir Leid falls ich mich nicht so ganz Verständlich ausgedrückt habe, aber es ist wirklich der Fall dass ich auf 2 komplett verschiedenen Servern arbeite.

Shematische Darstellung:
Code:
    Server:
    ----------
    
    Server 1 (JavaScript wird ausgeführt)
    |
    v
    Server 2 (PHP Verarbeitung)

Code:
    Ablauf des Besuchs:
    -----------------------------
    
     Besucher kommt auf Seite
     |
     v
     JavaScript wird ausgeführt und ruft mittels eines <img> Tags meine PHP Datei auf dem anderen Server auf.
     |
     v
     PHP Datei empfängt Daten und Prüft ob der Benutzer existiert.
     Jetzt sollte die ID gesetzt werden.
     |
     v
     PHP Datei tragt meine Daten in die DB ein

Wenn das abgelaufen ist fängt es wieder von vorne an nur dass halt dann die Besucher ID schon existiert und nur mehr Daten für das User Tracking in die DB eingetragen werden.

Das ganze System funktioniert so das die eigentlich Verarbeitung auf meinem Server statt findet und der andere Server (quasi Client) nur die benötigten Daten an mich Versendet.

Das ganze soll auf jeder Webseite funktionieren ohne dass große Ansprüche an den Server gestellt werden.

Der Benutzer kopiert sich einfach ein paar Zeilen JavaScript in seine Seite und fertig.
-> Funktioniert auch schon soweit.

Nur der Hacken ist einfach das meine Cookies die ich auf von meinem Server aus setzte nicht akzeptiert werden.
 
Zuletzt bearbeitet:
Püh ich bin ein wenig überfordet wohl :)

Zum allgemeinen Wiedererkennen muss der Nutzer Cookis angeschalten haben oder du musst was übergeben. Scripte vergessen ja alle Daten die übergeben werden einfach wieder wenn sie beendet werden.

Wenn die Daten nur auf den PHP Server verarbeitet werden würde ich es dennoch über Sessions probieren wo man über die URL die session_id() übergibt :/

Daten könntest du natürlich nur auf den Server wo PHP läuft ändern , aber in der Session_ID ist ja alles gespeichert und der Server wo PHP läuft kann damit arbeiten.

Damit wird JS nix anfangen können denk ich , aber dafür dann dein PHP Script auf dem anderen Server.

Blos stellen sich mir da nun gleich 2 Fragen : hat JS was gegen wenn an der URL noch was dranhängt (sollte eigentlich nicht) und würde die Session noch gehen wenn das PHP Script eingebunden wird auf den anderen Server.
Das Script auf deinen PHP Server sollte auf jeden Fall mit Sessions klarkommen wenn sie dort gestartet wurden. Sofern se nicht aus sind :)
 
Zuletzt bearbeitet:
Hatte leider ein etwas stressiges Wochenende deswegen kann ich erst jetzt schreiben.

Was passiert aber wenn auf dem Server wo die zu erfassende Website läuft PHP installiert ist und der eine Session gesetzt hat.

EDIT: Hab noch mal nachgedacht ;). Dürfte eigentlich kein Problem sein wenn ich meine SESSION_ID per GET übergeben und nicht den gleichen Variablenname habe wie auf dem anderen Server.
 
Zurück