Bannerproblem
Alex Schneider
- php
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
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
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
hallo phillip g.,
danke für deine antwort - und wie mache ich das mit den session?
gruß alex
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
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
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
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
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
hallo philipp,
war eben mal auf deinem link gewesen, was muss ich denn ändern, damit es funktioniert?
ich finde es leider nicht.
gruß alex
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
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
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
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
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
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
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
hallo philipp,
hast recht, wer lesen kann ist klar im vorteil - habs gefunden - sorry und vielen dank für deine hilfe!
ciao alex
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
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
Du bist echt der Hammer !!
echt klasse - ich danke dir!
hast du eigentlich auch eine homepage?
gruß alex
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
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
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
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