-
28.01.10 10:09 #1
Guten Morgen liebe PHP-Profis,
wiedermal der Anfänger der gerne auf Eure Hilfe zurückgreift.
Ich möchte gerne ein Referrer-System bauen habe aber keine Idee wie es zu realisieren ist.
Ich habe einige Seiten hier bei Tutorials intern durchschaut und gelesen, fand aber leider nichts das mir weiterhelfen kann.
Ich habe nun mal in der Datenbank eine Tabelle mit vier Spalten angelegt auf der Domain weinschulung.ch.
Tabelle:
referrer
Spalten:
ref=1, wer=David Thuet, domain=www.thuet.ch, provision=20%
ref=2, wer=Peter Muster, domain=www.muster.de, provision=10%
Den ausgehenden Link ab thuet.ch baue ich folgendermassen ein:
Ich hoffe dies ist soweit Korrekt?HTML-Code:<a href="http://www.weinschulung.ch/?ref=1">Link</a>
Wie gehe ich nun weiter auf vor auf weinschulung.ch?
Es sollte ja irgendwo abgespeichert werden das nun der Referrer "1" einen Besucher gesandt hat.
Dieser Besucher surft nun durch einigen Seiten auf weinschulung.ch und bucht irgendwann eine Schulung!
Wie übergebe ich nun im Buchungsformular bekannt das der buchende Besucher vom Referrer "1" gekommen ist?
Denn nachdem ich nur einen Link auf weinschulung.ch klicke verschwindet der "?ref=1" in der Adressleiste.
Wie könnte man es machen das wenn möglich auch eben diesen "?ref=1" gar nicht ersichtlich ist in der Adressleiste?
Ich hoffe Ihr versteht was ich meine, respektive was ich vor habe?
Das Buchungsformular auf weinschulung.ch sieht folgendermassen aus:
Dieses wird per Email versandt, also per "anmeldung-send.php".HTML-Code:<div class="formmaileralles"> <form action="./anmeldung-send.php" method="post" enctype="multipart/form-data" name="anmeldung" id="anmeldung" onsubmit="return checkAnmeldungForm(this)"> <div class="formmailertext"> Anrede:<span class="formularpflicht">*</span><br /> <select name="Anrede" class="formmailertextfeld" id="Anrede"> <option selected="selected" value="---">---</option> <option value="Frau">Frau</option> <option value="Herr">Herr</option> </select> <br /> Vorname und Nachname:<span class="formularpflicht">*</span><br /> <input name="Name" class="formmailertextfeld" id="Name" /> <br /> Email:<span class="formularpflicht">*</span><br /> <input name="Email" class="formmailertextfeld" id="Email" /> <br /> Gewählte Schulung:<br /> <input name="Schulung" class="formmailertextfeld" id="Schulung" value="<?php echo $schulungsname[$_GET['id']]; ?> (<?php echo $kundenart[$_GET['id']]; ?>) CHF <?php echo $totalkurskosten[$_GET['id']]; ?>" readonly="readonly" /> </div> <div class="formmailertextrechts"> Firma:<br /> <input name="Firma" class="formmailertextfeld" id="Firma" /> <br /> PLZ und Orschaft:<span class="formularpflicht">*</span><br /> <input name="Ortschaft" class="formmailertextfeld" id="Ortschaft" /> <br /> Abkürzung Kanton:<br /> <input name="Kanton" class="formmailertextfeld" id="Kanton" /> <br /> Bei zweiter Buchung 10% auf Gesamtpreis:<br /> <?php $result = mysql_query($sql); echo "<select name='Zweite Schulung' class='formmailertextfeld' id='Zweite_Schulung'>"; while ($row = mysql_fetch_row($result)) { if ($schulungsname[$_GET['id']] != $row['0']) { echo "<option value='".$row['0']."'>".$row['0']."</option>"; } } echo "</select>"; ?> </div> <div class="formailertextlinks"> Mitteilung:<span class="formularpflicht">*</span><br /> <textarea name="Mitteilung" rows="5" cols="5" class="formmailertextarea" id="Mitteilung"></textarea><br /> <div class="small"><span class="formularpflicht">*</span> = Pflichtfelder / kein HTML-Code / kein BBCode</div> <br /> <input name="Submit" type="submit" class="formmailerbutton" id="Submit" value="Senden..." /> <input name="loeschen" type="reset" class="formmailerbutton" id="loeschen" value="Löschen!" /><br /> </div> </form> </div>
Meine PHP-Kenntnisse sind gleich Null und darum wäre ich auch bereit für eine fertige funktionierende Lösung einen angemessenen Betrag zu bezahlen! (100.- €)
Nachtrag:
Dies mache ich nun gewollt mit Entlöhung, da mein PHP-Wissen so gering ist das ich ja auch bereits negativ Bewertet wurde mit "beschämendes Verhalten".
Geändert von DaveThuet (28.01.10 um 10:29 Uhr)
-
Versteh ich das richtig?
Du bist quasi weinschulung.ch und willst wissen ob von jemand der sich auf deiner seite anmeldet von z.b. thuet.ch oder muster.ch auf deine seite gekommen ist?!
Also Grundsätzlich kannst du in PHP den referrer per
auslesen.PHP-Code:$_SERVER['HTTP_REFERER']
Das Problem ist allerdings:
1. Referrer können deaktiviert werden
2. Sollte der Besucher später noch einmal wiederkommen und diesmal einen direkt link benutzen dann kam er vielleicht z.B. per thuet.ch auf deine Seite davon weisst du aber nix
Hat eigentlich nich mit Referrern zu tun. Du übergibst lediglich eine GET Variable. Wobei das u.U. sogar effektiver ist als referrer zu benutzen.Code :1
<a href="http://www.weinschulung.ch/?ref=1">Link</a>
Wie gesagt bei ?ref=1 handelt es sich um eine GET Variable und die ist nunmal in der Browserleiste ersichtlich.Wie könnte man es machen das wenn möglich auch eben diesen "?ref=1" gar nicht ersichtlich ist in der Adressleiste?
Referrer dagegen werden vom Browser gesendet davon kriegt im Prinzip niemand was mit.In order to understand recursion, one must first understand recursion.
-
28.01.10 11:26 #3
Danke vorerst für die Erklärung der Referrer-Abfrage.
Also, wenn ich richtig verstanden habe ist die GET Variable sicherer und besser als Lösungsansatz?PHP-Code:$_SERVER['HTTP_REFERER']
Gehen wir vom Prinzip der GET Variable im Link, ist ja egal wenn man diese sieht im Link, stört ja den Besucher nicht, denke ich?
Wie mache ich, dass die GET Variable bestehen bleibt solange der Besucher auf weinschulung.ch surft?
Also die Übergabe im Formular ist denke ich folgendermassen Lösbar indem ich die Variable ab Datenbank abrufe und in ein inputfeld (hidden) übergebe.
Ein Beispiel für das Anmeldeformular in der Hoffnung das ich es einigermassen richtig gelöst habe...
Die Datenbank-Abfrage:
Formularfeld:PHP-Code:$query = "SELECT * FROM referrer";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
Das Problem ist nun, wie bleibt die GET Variable bestehen im Link (Adressleiste) wenn der Besucher auf den diversen Seiten surft?HTML-Code:<br /> Referrer:<br /> <input name="Referrer" class="formmailertextfeld" id="Referrer" value="<?php echo $ref[$_GET['id']]; ?>, <?php echo $wer[$_GET['id']]; ?>, <?php echo $domain[$_GET['id']]; ?>, <?php echo $provision[$_GET['id']]; ?>" type="hidden" />
-
Das ist eigentlich garnicht nötig.Das Problem ist nun, wie bleibt die GET Variable bestehen im Link (Adressleiste) wenn der Besucher auf den diversen Seiten surft?
Mal angenommen ich befinde mich auch beispiel.ch und klicke dann auf den link
Dann könnte man in der Zielseite des Links (z.b. der index.php) beispielsweise folgendes machenHTML-Code:<a href="http://www.weinschulung.ch/?ref=beispiel">Link</a>
Sofern die GET Variable ref übergeben wurde enthält $referer also jetzt den Wert der GET Variable (bei meinem Link wäre das jetzt "beispiel")PHP-Code:if (isset($_GET['ref'])){
$referer = $_GET['ref'];
}
Damit kannst du jetzt im Prinzip machen was du willst.
z.B.
Entweder du übergibst sie in einer Session
oder du speicherst referer und dazugehörige ip in einer DB woraufhin du auch nach verlassen der Seite noch in der Lage wärst zu prüfen ob der Besucher von einem deiner referer kam
Gibt sicher noch andere Möglichkeiten eventuell fällt jemandem noch was geschickteres ein.In order to understand recursion, one must first understand recursion.
-
28.01.10 15:30 #5
Im so sorry, ich bringe das einfach nicht hin...

Zusammenfassung was ich bisher gemacht habe:
Auf ein Referrer hier real "zeitfuerwein.ch" ist einer meiner 88x31 Banner mit verlinkung zur Hauptseite von weinschulung.ch.
Link auf zeitfuerwein.ch: (Der Referrer)
Wobei die "1" auch gleich die Referrer "id" ist in meiner Datenbank auf weinschulung.ch.HTML-Code:<a href="http://www.weinschulung.ch/?ref=1" target="_blank" title="www.weinschulung.ch"><img src="http://www.weinschulung.ch/images/banner/weinschulung-88.jpg" style="width:88px; height:31px; border: 1px solid #000000;" alt="www.weinschulung.ch" /></a>
Dies steht oberhalb der Metas auf weinschulung.ch:
Wenn ich nun aber auf weinschulung.ch intern die Seiten durchstöbere geht die "?ref=1" verloren und kann im Buchungsformular nicht mehr abgerufen/übergeben werden?PHP-Code:<?php
// ** information zum referrer auslesen ** //
if (isset($_GET['ref'])){
$referrer = $_GET['ref'];
}
// ** abfrage aus der datenbank referrer ** //
$query = "SELECT * FROM referrer";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
?>
Im Buchungsformular auf weinschulung.ch:
Ich bin wirklich sehr dankbar für jegliche Hilfe...PHP-Code:<input name="Referrer" class="formmailertextfeld" id="Referrer" value="<?php echo $ref[$_GET['id']]; ?>, <?php echo $wer[$_GET['id']]; ?>, <?php echo $domain[$_GET['id']]; ?>, <?php echo $provision[$_GET['id']]; ?>" /><br />
Was mache ich falsch, was ist falsch eingebaut oder abgerufen.
Müsste ich nicht aus der GET Variable "ref" dann irgendwie irgendwo die Referrer id aus der Datenbank auslesen? Mann o Mann ist das deftig...
Und auch da, wie behalte ich Sie wenn der Besucher surft und auf einmal doch eine Anmeldung macht?
-
Deswegen wie gesagt z.B. Session oder DBWenn ich nun aber auf weinschulung.ch intern die Seiten durchstöbere geht die "?ref=1" verloren und kann im Buchungsformular nicht mehr abgerufen/übergeben werden?
Session Bsp:
Wenn ich nun von zeitfuerwein.ch kommend auf diesen Link
klicke lande ich auf der (z.B.) auf der index.php von weinschulung.ch in der folgender PHP schnippsel stehenHTML-Code:<a href="http://www.weinschulung.ch/?ref=1" target="_blank" title="www.weinschulung.ch"><img src="http://www.weinschulung.ch/images/banner/weinschulung-88.jpg" style="width:88px; height:31px; border: 1px solid #000000;" alt="www.weinschulung.ch" /></a>
Danach enthält $_SESSION['ref'] den Wert der GET Variable ref (in deinem Beispiel 1)PHP-Code:session_start(); #nur falls noch nicht existent
if (isset($_GET['ref'])){
$referrer = $_GET['ref'];
$_SESSION['ref'] = $referrer;
}
Um es kurz zu machen: Sessions bleiben während dem ganzen Besuch auf der Seite erhalten, es kann dir also wurst sein ob der Besucher noch ein bisl auf deiner Seite rumgurkt.
Im Endeffekt könntest du dann per
Den Datensatz mit der jeweiligen referer id auslesen.PHP-Code:if (isset($_SESSION['ref'])){
$query = "SELECT * FROM referrer where id = '$_SESSION['ref']'";
.
.
.
}
Normalerweise würde ich im Zuge desen zumindest noch zu mysql_real_escape_string raten, aber ich will bei dir keine unnötige Verwirrung stiften
Geändert von rd4eva (28.01.10 um 16:10 Uhr)
In order to understand recursion, one must first understand recursion.
-
28.01.10 16:30 #7
Danke dir vorerst...
Ich weiss man braucht unheimlich Geduld mit mir, tut mir leid wenn ich dich da sicherlich Ärgere mit meiner unwissenheit.
Habe nun wie Oben angegeben eingebaut und die Homepage wird nicht mehr angezeigt?
Was ist da Falsch an dem PHP-Code?PHP-Code:if (isset($_SESSION['ref'])){
$query = "SELECT * FROM referrer where id = '$_SESSION['ref']'"; }
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
-
Sorry diesmal hab ich mumpitz gemacht
kann garnicht funktionieren.PHP-Code:$query = "SELECT * FROM referrer where id = '$_SESSION['ref']'";
Versuchs mal so rum
Du hast allerdings auch einen FehlerPHP-Code:if (isset($_SESSION['ref'])){
$referer = $_SESSION['ref'];
$query = "SELECT * FROM referrer where id = '$referer'";
.
.
.
An der oben markierten Stelle hört deine if Schleife auf, das ist ok sofern $_SESSION['ref'] existiertPHP-Code:if (isset($_SESSION['ref'])){
$query = "SELECT * FROM referrer where id = '$_SESSION['ref']'"; } # HIER HÖRT DEINE IF SCHLEIFE AUF
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
Sollte diese nicht existieren hast du aber keine mysql_query mehr.
Eventuell wäre es auch mal hilfreich du würdest etwas mehr Code postenIn order to understand recursion, one must first understand recursion.
-
28.01.10 17:40 #9
Danke...
Nun wird die Homepage wieder angezeigt und es gibt kein PHP-Fehler.
Hier der gesamte PHP-Code:
Beim Anmeldeformular werden aber komische Texte ausgegeben und nicht die Daten der Datenbank?PHP-Code:<?php
session_start();
if (isset($_SESSION['ref'])){
$referrer = $_SESSION['ref'];
$query = "SELECT * FROM referrer where id = '$referrer'"; }
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
?>
Es steht im Inputfeld:
Notice: Undefined index: 41 in /srv/www/vhosts/weinschulung.ch/httpdocs/content/contentanmeldung.php on line 61 , Notice: Undefined index: 41 in /srv/www/vhosts/weinschulung.ch/httpdocs/content/contentanmeldung.php on line 61 , Notice: Undefined index: 41 in /srv/www/vhosts/weinschulung.ch/httpdocs/content/contentanmeldung.php on line 61 , Notice: Undefined index: 41 in /srv/www/vhosts/weinschulung.ch/httpdocs/content/contentanmeldung.php on line 61
Die Abfrage im Anmeldeformular sieht folgendermassen aus:
Irgendwo ist wahrscheinlich noch was drinnen das ich Falsch gemacht habe!PHP-Code:Referrer:<br />
<input name="Referrer" class="formmailertextfeld" id="Referrer"
value="<?php echo $ref[$_GET['id']]; ?>,
<?php echo $wer[$_GET['id']]; ?>,
<?php echo $domain[$_GET['id']]; ?>,
<?php echo $provision[$_GET['id']]; ?>" /><br />
Danke dir für deine Geduld mit mir...
-
28.01.10 18:12 #10
Ich glaube es Funktioniert nun...
Möchte nur sicher gehen das keine Fehler im Code sind und danke für eine Überprüfung.
PHP-Code oberhalb der Metatags:
PHP-Code im Anmeldeformular:PHP-Code:<?php
session_start();
if (isset($_SESSION['ref'])){
$referrer = $_SESSION['ref'];
$query = "SELECT * FROM referrer where id = '$referrer'"; }
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
?>
Danke dir vielmals rd4eva!PHP-Code:<input name="Referrer" class="formmailertextfeld" id="Referrer"
value="<?php echo $ref[$_SESSION['ref']]; ?>,
<?php echo $wer[$_SESSION['ref']]; ?>,
<?php echo $domain[$_SESSION['ref']]; ?>,
<?php echo $provision[$_SESSION['ref']]; ?>" /><br />
-
29.01.10 07:03 #11
Guten Morgen,
mir ist soeben noch ein Fehler aufgefallen und würde diesen gerne lösen.
Wenn nun jemand ohne ref (Referrer) auf weinschulung.ch kommt steht zuoberst in der Seite folgenden Fehlertext:
Notice: Undefined index: ref in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 113 Notice: Undefined index: wer in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 114 Notice: Undefined index: domain in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 115 Notice: Undefined index: provision in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 116 Notice: Undefined index: ref in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 113 Notice: Undefined index: wer in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 114 Notice: Undefined index: domain in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 115 Notice: Undefined index: provision in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 116 Notice: Undefined index: ref in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 113 Notice: Undefined index: wer in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 114 Notice: Undefined index: domain in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 115 Notice: Undefined index: provision in /srv/www/vhosts/weinschulung.ch/httpdocs/includes/metas.php on line 116
Wie kann ich diesen Fehler beheben?
Danke Euch vielmals für Eure Mithilfe...Geändert von DaveThuet (29.01.10 um 07:04 Uhr) Grund: Nachtrag: Ich habe die Fehleranzeige vorübergehend deaktiviert...
-
01.02.10 09:34 #12
moin, das hat dir dein vorposter schon geschrieben das du keine überprüfung hast ob ein ref übergeben wurde oder nicht.
in worten gefasst ist dein code so:
wenn Session-Ref existiert, dann mach meinen Query und in der while-schleife die zuordnungen.
wenn du nun kein ref übergist, macht er den query und die zuordnungen nicht. deshalb kommt die NOTICE-meldung. Da du die variablen/arrays welche aber dann nicht definiert wurden trotzdem verwendest zur ausgabe, kommt diese meldung.
-
01.02.10 10:50 #13
Woooowww...

Kannst du mir dies auch als Code Posten?
Verstehe nur Bahnhof von dem was du da Schreibst.
Danke vielmals dafür!
-
01.02.10 16:09 #14
naja, du musst die variablen welche du ausgibst halt auch wenn KEIN ref übergeben wird definieren. zb mit "0". oder machst am anfang deines scriptes:
damit werden die Notice-Meldungen welche keine fehlermeldungen sind sondern nur Hinweise unterdrückt. Ist allerdings keine saubere Programmierweise.PHP-Code:error_reporting(E_ALL & ~E_Notice);
-
01.02.10 16:59 #15
Tönt ja sehr einfach aber wie übergebe ich eine "0" wenn kein "ref" vorhanden ist?
Würde es dann in etwa so Aussehen:
Danke für ein nochmaliges Feedback...PHP-Code:<?php
session_start();
if (isset($_SESSION['ref'])){
$referrer = $_SESSION['ref'];
$query = "SELECT * FROM referrer where id = '$referrer'"; }
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
if($referrer == ""){$referrer = 0;} #NEU HINZUGEFÜGT#
{
$ref[$row['id']] = $row['ref'];
$wer[$row['id']] = $row['wer'];
$domain[$row['id']] = $row['domain'];
$provision[$row['id']] = $row['provision'];
}
?>
Die Notice-Fehlermeldung möchte ich als solches nicht Deaktivieren, da ich gerne einen Fehlerfreien Code hätte.
Ähnliche Themen
-
JavaLink + Referrer
Von FoolMoon im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 21.02.10, 16:05 -
document.referrer Problematik
Von deintag85 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 02.06.09, 03:44 -
welchen referrer? Script?
Von JaLeo im Forum Javascript & AjaxAntworten: 10Letzter Beitrag: 10.12.05, 01:35 -
Referrer verschleiern!
Von firstlord18 im Forum PHPAntworten: 5Letzter Beitrag: 05.11.05, 19:56 -
Fehlerseiten mit htaccess und Referrer
Von fanste im Forum PHPAntworten: 4Letzter Beitrag: 20.09.05, 18:36



1Danke

Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren