Alex Schneider: Bannerproblem

hallo miteinander,

ich bräuchte mal ein bisschen inspiration, weil ich absolut nicht weiss wie ich das anstellen soll.

undzwar will ich auf meiner seite ein partnerprogramm erstellen. partner können sich anmelden und kriegen per email einen username. zudem erhalten die kunden ein script welches sie auf ihrer homepage einbinden können. wenn nun ein besucher auf den banner bei dem partner klickt und bei mir landet soll folgendes passieren: der besucher der vom partner kommt wird wahrscheinlich nicht nur bei der einen seite bleiben sondern auch durch die verschiednen seiten surfen, sobald er allerdings auf eine bestimmte seite geht wo ein formular auszufüllen ist sollte versteckt vermerckt sein, dass der besucher von dem jeweiligen partner kommt.

kurz ausgedrückt: den REFERER über mehrer seiten hinweg übertragen und wenn der besucher das formular ausfüllt und abschickt versteckt den REFERER per mail übertragen.

habt ihr da vielleicht ideen oder lösungsvorschläge dazu?

ich wäre euch da sehr dankbar, weil ich wirklich kaum noch weiter weiß - am liebsten wäre es mir wenn man dies über mySQL machen könnte, damit alles autmatisch abläuft z.B. die vergabe des usernames für den parter.

danke schon mal im voraus

gruß alex

  1. Hi,

    kurz ausgedrückt: den REFERER über mehrer seiten hinweg übertragen und wenn der besucher das formular ausfüllt und abschickt versteckt den REFERER per mail übertragen.

    Wannimmer etwas userspezifisch ueber mehrere Seiten uebertragen werden soll, kommen Sessions ins Spiel. Das ist das, was du suchst.
    Mit dem Referer zu arbeiten, ist schlecht, siehe hierzu http://www.dclp-faq.de/q/q-http-referer.html
    HIer findest du auch einige Infos zu Sessions, damit ist das ganze Problemlos realisierbar.

    mfg
    Philipp

    1. Halihallo Philipp

      Wannimmer etwas userspezifisch ueber mehrere Seiten uebertragen werden soll, kommen Sessions ins Spiel. Das ist das, was du suchst.

      Völlig richtig. Nur leider funktioniert dies nur, wenn Alex die
      Banner auch auf _seiner_ Seite ausliefert und damit beträchtlichen
      Traffic auf seinem Server lastet. Über Domain- und Servergrenzen
      hinweg sind Sessions nicht existent, genausowenig wie Cookies.

      Viele Grüsse

      Philipp

    2. hallo phillip g.,

      danke für deine antwort - und wie mache ich das mit den session?

      gruß alex

      1. Halihallo alex3210

        danke für deine antwort - und wie mache ich das mit den session?

        http://ch2.php.net/session und Cookies:
        http://ch2.php.net/manual/de/function.setcookie.php

        Aber Achtung bei der Umsetzung:
        [pref:t=73932&m=426014]
        über Domaingrenzen hinweg _unmöglich_ (ausser für einige Buggy-
        Browser wie dem IE, dort gehts dummerweise erschreckend einfach,
        aber das willst du nicht wissen...)

        Viele Grüsse

        Philipp

        1. servus philipp h.,

          das bedeutet also dass ich lediglich

          <?php

          sessionstart();

          $user = $HTTP_REFERER;
          $partner = $user;

          ?>

          am anfang jedes dokumentes schreiben muss, und damit hat sichs?

          ciao alex

          1. Halihallo alex

            das bedeutet also dass ich lediglich

            fast...

            sessionstart();
            $user = $HTTP_REFERER;
            $partner = $user;
            am anfang jedes dokumentes schreiben muss, und damit hat sichs?

            http://ch2.php.net/register_globals
            => verwende das Assoziative Array $_SESSION bzw. $_COOKIE

            und nein, damit hat sich's nicht sofern du immer noch versuchst
            dein Script beim Partner zu platzieren.

            Viele Grüsse

            Philipp

            1. Hallo Philipp,

              hm eigentlich reicht es doch wenn der partner lediglich den link kriegt, dann hab ich doch das problem beseitigt oder was denkst du?

              Gruß Alex

              1. Halihallo alex

                hm eigentlich reicht es doch wenn der partner lediglich den link kriegt, dann hab ich doch das problem beseitigt oder was denkst du?

                Jep, as I suggested :-)

                Viele Grüsse

                Philipp

                1. hallo philipp,

                  war eben mal auf deinem link gewesen, was muss ich denn ändern, damit es funktioniert?

                  ich finde es leider nicht.

                  gruß alex

                  1. Halihallo Alex

                    war eben mal auf deinem link gewesen, was muss ich denn ändern, damit es funktioniert?

                    Ich habe die Angewohnheit viele Links zu schreiben. Welchen meist du
                    denn? :-)

                    Viele Grüsse

                    Philipp

                    1. servus philipp,

                      ich hatte ja folgendes geschrieben:

                      <?php

                      sessionstart();

                      $user = $HTTP_REFERER;
                      $partner = $user;

                      ?>

                      da meintest du dass es fast richtig sei, was ist denn nun
                      an dem falsch?

                      ich komme einfach nicht darauf

                      sorry dass ich mich jetzt erst melde musste kurz weg.

                      ciao alex

                      1. Halihallo Alex

                        sessionstart();
                        $user = $HTTP_REFERER;

                        $user = $_SERVER['HTTP_REFERER']

                        $partner = $user;

                        $partner = $_SESSION['user']

                        da meintest du dass es fast richtig sei, was ist denn nun
                        an dem falsch?

                        Nun, falsch ist daran nichts, aber register_globals ist seit
                        einiger "Zeit" (oder besser (Sub-)versionen) per default
                        deaktiviert. Mit anderen Worten, man kann auf die Cookie/Session/
                        Umgebungsvariablen nicht mehr als importierte Variablen zugreifen,
                        sondern nur noch über das jeweilige assoziative Array ($_SESSION[]
                        z.B.). Dies hat Sicherheitslücken, mehr darüber steht in der
                        verlinkten Doku (:-)).
                        Verwende deinetwillen die neuen assoziativen Arrays um die Umgebung
                        einzulesen.

                        sorry dass ich mich jetzt erst melde musste kurz weg.

                        Ich war auch eben mal "weg", das ist kein Problem :-)

                        Viele Grüsse

                        Philipp

                        1. Halihallo Philipp ;)

                          Dies hat Sicherheitslücken

                          Ich wollte damit sagen, dass eben die register_globals=on mit
                          importierten Variablen Sicherheitslücken ergeben können. Die andere
                          (über assoziative Arrays) schliesst zumindest gewisse Fehler aus.

                          Nur, dass ich dich nicht verwirre :-)

                          Viele Grüsse

                          Philipp

                          1. hallo philipp h.,

                            alles klar - also wenn ein besucher von einem partner kommt habe ich dass in meiner session "partner" gespeichert. wenn dieser nun das formular ausfüllt, brauche ich eigentlich nur in der funktion mail() beim text doch nur noch $partner eingeben und dann funktioniert es - habe ich das so richtig verstanden?

                            gruß alex

                            1. servus nochmal,

                              also ich habe nun in meinem header folgendes eingegeben:

                              <?php
                              sessionstart();
                              $userid = $partnerid;
                              $partnerid = $partnerid;
                              $user = $_SERVER['HTTP_REFERER'];
                              $partner = $_SESSION['user'];
                              ?>

                              folgendes kam dann beim aufruf des browser als fehlermeldung:

                              Fatal error: Call to undefined function: sessionstart() in /home/www/web31/html/host/rosewick/eng/index.php on line 2

                              gruß
                              alex

                              1. Halihallo Alex

                                Fatal error: Call to undefined function: sessionstart() in /home/www/web31/html/host/rosewick/eng/index.php on line 2

                                http://www.php.net/session_start

                                Genauer Lesen, genauer Schreiben und selbst versuchen diese
                                Probleme zu lösen. Tipps und Lektüre dazu hast du jetzt IMHO genug
                                bekommen.

                                Viele Grüsse

                                Philipp

                                1. hallo philipp,

                                  hast recht, wer lesen kann ist klar im vorteil - habs gefunden - sorry und vielen dank für deine hilfe!

                                  ciao alex

                                  1. servus,

                                    ich bins nochmal ;-)

                                    also es funktioniert nun alles - ausser eines - der REFERER, der in die Session eingetragen wurde:

                                    <?php
                                    session_start();
                                    $_SESSION['partner'] = $_SERVER['HTTP_REFERER'];
                                    ?>

                                    und in dem formular würde dann dementsprechend als <input hidden> die $_session['partner'] stehen.

                                    problem ist nur, dass der http_referer immer die letzte seite nimmt - wenn der besucher aber nun ein paar mal auf meiner homeapge rum klickt, dann erscheint ja immer die letzte seite - und das kriege ich einfach nicht gebacken.

                                    hast du vielleicht noch diesen abschließenden tipp?

                                    p.s. würde dich ja mal gerne zu einem bier einladen für dein mühe - ich könnts ja als email-anhang schicken ;-)

                                    gruß alex

                                    1. Halihallo Alex

                                      problem ist nur, dass der http_referer immer die letzte seite nimmt - wenn der besucher aber nun ein paar mal auf meiner homeapge rum klickt, dann erscheint ja immer die letzte seite - und das kriege ich einfach nicht gebacken.

                                      Der Ansatz mit dem Referer ist einfach schlecht.

                                      Zum Abschluss nochmals im Volltext: ;)

                                      Der Kunde bekommt eine Klick-URL von dir, diese sieht etwas so aus:

                                      http://www.dein-server.de/click_mich.php?partner_id=754

                                      diese wird wie folgt in der Seite des Partners eingesetzt:

                                      <a href="http://www.dein-server.de/click_mich.php?partner_id=754">
                                      <img src="http://www.SEIN-server.de/ich_bin_partner.jpg" border="0">
                                      </a>

                                      So, wenn nun ein Benutzer auf den Link klickt, dann wird ein Request
                                      auf dein click_mich.php Script ausgeführt und alles was dieses tut
                                      ist ein redirect auf deine Homepage und die Partner-ID in der
                                      Session speichern:

                                      session_start();
                                      header('Location: http://www.dein-server.de/index.html');
                                      $_SESSION['partner_id'] = $_GET['partner_id'];

                                      So, nun ist die Partner-ID fest in der Session gespeichert und diese
                                      lässt du solange in Ruhe, bis der Benutzer eventuell mal zu deinem
                                      Formular kommt und dort, dort kannst du sie dann in dein Hidden-Form-
                                      Field einsetzen:

                                      session_start();
                                      echo('<input type="hidden" name="partner_id" value="'.$_SESSION['partner_id'].'">');

                                      Viele Grüsse

                                      Philipp

                                      1. Du bist echt der Hammer !!

                                        echt klasse - ich danke dir!

                                        hast du eigentlich auch eine homepage?

                                        gruß alex

                        2. hallo philipp h.,

                          alles klar - also wenn ein besucher von einem partner kommt habe ich dass in meiner session "partner" gespeichert. wenn dieser nun das formular ausfüllt, brauche ich eigentlich nur in der funktion mail() beim text doch nur noch $partner eingeben und dann funktioniert es - habe ich das so richtig verstanden?

                          gruß alex

  2. Halihallo Alex

    undzwar will ich auf meiner seite ein partnerprogramm erstellen. partner können sich anmelden und kriegen per email einen username. zudem erhalten die kunden ein script welches sie auf ihrer homepage einbinden können. wenn nun ein besucher auf den banner bei dem partner klickt und bei mir landet soll folgendes passieren: der besucher der vom partner kommt wird wahrscheinlich nicht nur bei der einen seite bleiben sondern auch durch die verschiednen seiten surfen, sobald er allerdings auf eine bestimmte seite geht wo ein formular auszufüllen ist sollte versteckt vermerckt sein, dass der besucher von dem jeweiligen partner kommt.

    Da du nicht jede Seite von dir ändern möchtest, wie ich annehme,
    musst du eine andere Technik suchen. Die wohl einfachste und IMHO
    einzig wirklich umsetzbare wäre über Cookies.

    Folgender Lösungsansatz:
    Das Script, welches den Banner ausliefert wird nicht beim Kunden
    installiert, sondern liegt auf deinem Server. So kannst du einen
    Cookie senden, der auf deine Domain lautet und somit wieder von
    _deinem_ Script auf deinem Server empfangen werden kann.
    In diesem Cookie speicherst du im Falle eines Clicks auf das Banner
    die partner_id. Jetzt brauchst du nur noch ein Script zu schreiben,
    welches auf der Seite des auszufüllenden Formulars nachsieht, ob
    der Cookie gesetzt ist und die partner_id in das Forumar einsetzt.

    Dies hat den Vorteil, dass du völlig unabhängig von anderen Seiten
    und Scripten (ja sogar, wenn der Benutzer zuerst noch andere Websites
    ansehen geht und erst nach einer Kaffee pause zurückkommt) den User
    tracken kannst. Zudem braucht der Partner kein PHP-Script bei sich
    zu installieren, was ein weiterer Vorteil ist.

    Falls dir dies zuviel Traffic auf deinem Server auslöst kannst du
    ja das Bild (der View) vom Partner ausliefern lassen und nur die
    Clicks über dein PHP-Script auf deinem Server laufen lassen.

    kurz ausgedrückt: den REFERER über mehrer seiten hinweg übertragen und wenn der besucher das formular ausfüllt und abschickt versteckt den REFERER per mail übertragen.

    Ich würde es nicht über den Referrer lösen, so müsstest du dies auf
    jeder Seite und Script implementieren.

    Natürlich hat auch die Cookie-Vorgehensweise Nachteile, so sind z.B.
    Cookies deaktivierbar.

    Besonderes Augenmerk bei dieser Cookie-Vorgehensweise solltest du
    auf P3P legen, da Cookies von Drittanbietern oftmals per Default
    deaktiviert sind und die Browser sich nur mit bestimmten Privacy-
    Einstellungen zum Speichern verleiten lassen.

    Viele Grüsse

    Philipp

    1. hi phillip h.,

      danke für deine antwort - aber wie du schon angemerkt hast, ist das mit den cookies so ne sache, weil es muss zu 100% funktionieren, und die gefahr kann ich nicht eingehen, dass sie einfach so ausgeschaltet werden.

      zudem weiss ich gar nicht wie das mit cookies geht ;-)

      danke dir für deine antwort!

      gruß alex

      1. Halihallo Alex

        danke für deine antwort - aber wie du schon angemerkt hast, ist das mit den cookies so ne sache, weil es muss zu 100% funktionieren,

        Eines kann ich dir gleich auf den Weg geben: zu 100% wird es _absolut
        nie_ funktionieren. Egal welche Technik du verwendest.

        und die gefahr kann ich nicht eingehen, dass sie einfach so ausgeschaltet werden.

        Kunden können die Seite auch öffnen, die Adresse kopieren, mit einem
        ganz anderen Client von einem ganz anderen Internetanschluss die
        Seite öffnen und der Kunde hat sich damit auch dem Tracking verwehrt.

        zudem weiss ich gar nicht wie das mit cookies geht ;-)

        Das ist eine ziemlich dumme Ausrede, von Cookies abzusehen :-)
        Die Ausrede von wegen nicht 100% hat mich ungleich mehr überzeugt :-)

        Ach ja, wenn du es nicht über Cookies lösen willst:
        Viel Spass beim programmieren... Du wirst wohl nicht umher kommen
        dein ganzer Webauftritt mit einer serverseitigen Programmiersprache
        oder SSI umzusetzen, um die ID über alle Subseiten weiterzureichen.
        Zudem: Was passiert, wenn er kurz mal bei Kaffee eine andere
        Seite öffnet und dann die im Gedächtnis memorierte URL wieder
        eintippt?

        Ach, noch etwas: Löse es _nicht_ über die IP! - Denk erst gar nicht
        daran.  (Falls du die Gründe nicht kennen solltest, sieh im
        </archiv/> nach)

        Viele Grüsse

        Philipp