vada: Variable von Javascript an Server weiterreichen

Hallo zusammen,

Ich möchte gerne auf meine Website eine Javascript-Datei einbinden, die ein Cookie setzt, um einen eindeutigen User zu bestimmen. Dann möchte ich, dass bei jedem Klick die aktuelle Seite, und die Userid "an den Server geschickt wird" und dann in eine Datenbank geschrieben wird.

Ich habe bis jetzt folgendes versucht.

JS:

...
setCookie();
location.href="http://localhost/versuch1/website/insert.php?uuid="+userid+"&url="+location.href
...

insert.php:

include("connect.php");
connect_db();
$uuid = $_GET['uuid'];
$url = $_GET['url'];
insert_db($uuid, $url);

function insert_db($uuid, $url){
    $sqlab = "insert into test";
    $sqlab .= "(userid, URL)values";
    $sqlab .= "('$uuid', '$url')";
    mysql_db_query('01_analyse', $sqlab);
    header("Location:"+$url+"");
}

Es wird zwar in die Datenbank geschrieben, aber leider nicht mehr zurück auf die Ursprungsseite geleitet.

Wie kann man in js am besten unique user id's vergeben?
Auf welchen event sollte die js-funktion ausgelöst werden, damit die beiden Dateien sich nicht ständig gegenseitig aufrufen?
Gibt es vielleicht bessere oder andere Ansätze das zu lösen?
Gibt es vielleicht ein kleines Code-Beispiel zu diesem Thema?
bin für jede Hilfe dankbar.

vada

  1. hi,

    Ich möchte gerne auf meine Website eine Javascript-Datei einbinden, die ein Cookie setzt, um einen eindeutigen User zu bestimmen. Dann möchte ich, dass bei jedem Klick die aktuelle Seite, und die Userid "an den Server geschickt wird" und dann in eine Datenbank geschrieben wird.

    Cookies werden bei einem Request doch sowieso übertragen - da brauchst du nicht noch mal per Javascript nachhelfen.

    Gibt es vielleicht bessere oder andere Ansätze das zu lösen?

    Du willst einen Session-Mechanismus implementieren?
    Dann nutze doch die Session-Funktionalität von PHP.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hallo wahsaga,

      danke für die schnelle Antwort.
      ja, mit PHP wäre es sicher angenehmer. Die Sache ist aber, dass ich es per javascript in die Seite einbinden möchte. Gibt es da andere Mittel und Wege, wie das Problem mit javascript gelöst werden kann?

      liebe Grüsse,
      vada

      1. hi,

        ja, mit PHP wäre es sicher angenehmer. Die Sache ist aber, dass ich es per javascript in die Seite einbinden möchte.

        Warum?

        Gibt es da andere Mittel und Wege, wie das Problem mit javascript gelöst werden kann?

        Fordere keine neue Seite an, sondern lediglich eine Ressource - bspw. ein Bild, oder per XMLHttpRequest irgendein Script, mit dessen Antwort du dann einfach nichts machst - oder ein Script, welches nur den HTTP Status Code 204 No Content zurückgibt, womit das bestehende Dokument also nicht ersetzt wird.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. ja, mit PHP wäre es sicher angenehmer. Die Sache ist aber, dass ich es per javascript in die Seite einbinden möchte.

          Warum?

          Weil auf dem Server der Website kein php läuft.

          Fordere keine neue Seite an, sondern lediglich eine Ressource - bspw. ein Bild, oder per XMLHttpRequest irgendein Script, mit dessen Antwort du dann einfach nichts machst - oder ein Script, welches nur den HTTP Status Code 204 No Content zurückgibt, womit das bestehende Dokument also nicht ersetzt wird.

          das hat mich jetzt ein wenig verwirrt.
          Könntest du mal genauer erklären, was du meinst? Du meinst also, dass man keine PHP-datei aufrufen soll? Aber wie kommen denn dann die daten in die Datenbank? Oder meinst du was ganz anderes? Oder steh' ich auf'm schlauch?

          liebe grüsse,
          vada

          1. hi,

            Fordere keine neue Seite an, sondern lediglich eine Ressource - bspw. ein Bild, oder per XMLHttpRequest irgendein Script, mit dessen Antwort du dann einfach nichts machst - oder ein Script, welches nur den HTTP Status Code 204 No Content zurückgibt, womit das bestehende Dokument also nicht ersetzt wird.

            das hat mich jetzt ein wenig verwirrt.
            Könntest du mal genauer erklären, was du meinst? Du meinst also, dass man keine PHP-datei aufrufen soll?

            Du rufst über HTTP nie "Dateien auf", sondern forderst Ressourcen an.

            Aber wie kommen denn dann die daten in die Datenbank?

            Über den Abruf einer Ressource, hinter der sich meinetwegen ein PHP-Script verbirgt, welches den Eintrag in die Datenbank vornimmt.

            Oder steh' ich auf'm schlauch?

            Scheint so.

            http://example.com/zaehle_die_aufrufe.php - das könnte der URL einer Ressource sein.

            Und diese willst du jetzt abrufen, ohne dein aktuelle Dokument zu ersetzen.
            Verschiedene Möglichkeiten davor nannte ich oben.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hallo

              Fordere keine neue Seite an, sondern lediglich eine Ressource - bspw. ein Bild, oder per XMLHttpRequest irgendein Script, mit dessen Antwort du dann einfach nichts machst

              Nachdem ich eine Ajax-Einführung gelesen habe, habe ich es jetzt mit dem XMLHttpRequest hinbekommen.

              danke und lg,
              vada