Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Cookies setzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Cookies setzen

    Hallo Zusammen,

    ich möchte meinen Kunden (KD) die Möglichkeit geben, meine Homepage weiterzuempfehlen und Geld zu verdienen. Dazu habe ich mir gedacht, dass meine KD´s einen Link z.B. http://www.meineseite.de/kd36 von mir bekommen, den Sie in Ihren Mails integrieren können. "kd36" ist zum Beispiel mein Kunde Hans Muster. Wenn dann der Empfänger der Mail diesen Link anklickt und sich für einen kostenpflichtigen Dienst anmeldet, möchte ich meinem KD eine Provision zahlen. Wie kann ich dies mit Hilfe von Cookies (Setzen und Auslesen) tun, um die Zuordnung zum "kd36" (Hans Muster) zu gewährleisten? Wäre echt super wenn mir da jemand weiterhelfen könnte.

    Vielen Dank im Voraus. Schöne Grüße.

  • #2
    Mit [man]setcookie[/man]() kannst Du den Wert setzen.
    Diesen findest Du dann (ab dem nächsten Request) im Feld $_COOKIE.

    Kommentar


    • #3
      Danke

      Vielen Dank. Wie man ein Cookie setzt und ausliest ist mir bekannt. Nur wo und welcher genaue Ablauf, dass weiss ich nicht. Wäre echt hilfreich, wenn ich die Beantwortung meiner Frage ausführlicher und eventuell mit Code ("Herausforderung") auf meine zugegebener Maßen anspruchsvollere Frage bekommen könnte. Schöne Grüße.

      Kommentar


      • #4
        Wenn Deine Seite über http://www.meineseite.de/kd36 aufgerufen wird, setzt Du den Cookie und wenn es daran geht, die Provision zu vermerken liest Du den Cookie wieder aus (sofern vorhanden).
        Sorry, ich weiß nicht, was ich da sonst antworten soll.

        Kommentar


        • #5
          Das ist der Unterschied zwischen "erfahrener Benutzer" und "unerfahrener Benutzer" wie mich. Ich habe folgenden Datei als cookies.php auf meinem Server geladen:

          [CODE<?php
          $AktuellesDatum = date("d.m.Y H:i:s");
          $Gueltigkeit = time()+86400;
          setcookie("ErsterBesuch", $AktuellesDatum, $Gueltigkeit);
          ?>

          <html>
          <head>
          <title>Cookie setzen</title>
          </head>
          <body>

          <?php
          echo$_COOKIE['ErsterBesuch'];
          ?>
          </body>
          </html>[/CODE]

          Gehe ich richtig, dass ich 2 Dateien brauche, nämlich eine mit setcookie und eine die ausliest?

          die Bezeichnung "kd36" soll nur die Zuordnung zum Kunden sein.

          Also, ich rufe die Seite www.meineseite.de auf, dann wird ein Cookie geschrieben, indem das "kd36" steht. Oder muss eine html-Seite "kd36" bestehen? Ich hatte nur vor die "kd36" in ein Cookie zu schreiben und den Inhalt des Cookie an anderer Stelle wieder auszulesen.
          Wo finde ich eigentlich das Cookie um den Inhalt anzusehen?

          Ich hoffe einigermaßen verständlich dargestellt. Ja, ich weiß, für Dich wahrscheinlich einfache Basics aber ich tue mich da echt schwer. Ich habe für dieses Problem niegends was gefunden.

          Vielen Dank.

          Kommentar


          • #6
            Das sind mindestens zwei Einzelprobleme:
            a) Wie erhalte ich den Wert kd36 beim Aufruf von http://www.meineseite.de/kd36 ?
            b) Was fange ich mit dem Cookie an?


            Zu a)
            PHP stellt einen einfachen Mechanismus zur Verfügung, um auf GET-Parameter wie in http://www.meineseite.de/index.php?kd=36 zuzugreifen.
            PHP-Code:
            echo $_GET['kd']; 
            Damit wird die selbe Information transportiert wie mit http://www.meineseite.de/kd36 (Kunde #36).
            Willst Du des Aussehens wegen die Version mit /kd36 benutzen?

            Kommentar


            • #7
              Nee, die Version mit php?kd=36 ist sehr gut.

              Kommentar


              • #8
                Dann musst Du nur so etwas wie
                PHP-Code:
                if ( isset($_GET['kd'])) {
                  
                setcookie("referer_id"$_GET['kd'], $Gueltigkeit);

                zum Setzen und
                PHP-Code:
                if ( isset($_COOKIE['referer_id']) ) {
                  echo 
                'referer_id='htmlspecialchars($_COOKIE['referer_id']), "<br />\n";

                zum Auslesen verwenden.

                Der Wert $_COOKIE['referer_id'] ist frühestens beim nächsten Request nach setcookie() vorhanden (oder nie, wenn der Browser den Cookie nicht akzeptiert).
                Und daran denken, dass man Dir (gerade aber nicht nur bei GET) alles mögliche unterjubeln kann. Also auf gültige Werte abtesten und ggf. absichern. Wenn die Kundennummer nur aus Ziffern 0-9 besteht, kannst Du $_GET['kd'] daraufhin abtesten, zum Beispiel mit
                PHP-Code:
                if ( !preg_match('/^[0-9]+$/'$_GET['kd']) ) {
                  exit(
                'ungültige referer id');

                siehe [man]pcre[/man]

                Kommentar


                • #9
                  Danke, dass mache ich.

                  Was wenn allerdings mehrere Links mit Kunden z.B. kd36 , kd57 usw. eingehen. Ich kann doch nur den letzten gesetzten Cookie auslesen, also kd57, oder?

                  Und wie erfolgt die Zuordnung? Nur mit kd36 kann zur Verprovisionierung noch nichts anfangen. Ich brauche da zumindest noch z.B. die E-Mail Adresse. Wie kriege ich das hin?

                  Kommentar


                  • #10
                    Was wenn allerdings mehrere Links mit Kunden z.B. kd36 , kd57 usw. eingehen. Ich kann doch nur den letzten gesetzten Cookie auslesen, also kd57, oder?
                    Der Cookie wird auf dem Client-Rechner gespeichert. Das Problem tritt also praktisch nur auf, wenn ein Kunde mehrere xyz.php?kd=nummer Links (per mail oder sonstwie) erhalten. (Genauer, wenn von einem Rechner/Browserprofil aus verschiedene Links mit ?kd=nummer aufgerufen werden). Dann würde ich den letzten Wert nehmen ...und genau das passiert im Moment auch, der jeweils letzte Aufruf von setcookie() überschreibt einen eventuell bereits vorhandenen Wert.

                    Und wie erfolgt die Zuordnung?
                    Über Deine Datenbank auf dem Server. Also so etwas wie
                    PHP-Code:
                    $query 'SELECT
                      name,email
                    FROM
                      kunden
                    WHERE
                      kunden_id="'
                    .mysql_real_escape_string($_COOKIE['referer_id'], $mysql)."'
                    "

                    Kommentar


                    • #11
                      Sehr gut, das habe ich verstanden und das mache ich auch so!

                      Noch nee Frage zu "kd36". Besteht die Möglichkeit dies in der Browserzeile verschlüsselt (z.B. md5) aufzurufen? Dann ist doch die Möglichkeit der "Spielereien" eingeschränkt.

                      Oder bin ich da auf dem Holzweg?

                      Kommentar


                      • #12
                        Das bringt nichts. Du musst ja die Eingabe mit Deinem Datenbestand vergleichen.
                        Du kannst nur dafür sorgen, dass die Nummern nicht durchlaufend sind. Dann dämmst Du zumindest "hm, ich habe kd=35, mal sehen was mit kd=36 passiert..." ein.
                        Dann solltest Du das aber auch getrennt in der Datenbank speichern. Also ein auto-Wert als "Deine" Kundennummer und ein Zufallswert (aber eindeutig) als referer_id, die Du "rausgibst" an den Kunden.
                        Was Du noch machen kannst zur Validierung ...aber auch nur, wenn es sein muss... ist sowohl die refer_id als auch eine Prüfsumme im Link zu übergeben.
                        Also zum Beispiel <a href="http://www.php.de/php-einsteiger/php-einsteiger/php-einsteiger/php-einsteiger/...?refid=3456&c=042e03f40db95ca9b595bd2eda935944" >
                        Das kannst Du dann abtesten mit
                        PHP-Code:
                        if ( _GET['c']!==md5('totalgeheim'.$_GET['refid']) ) {
                          exit(
                        'ungültige referer id');

                        Den Parameter c für den Link musst Du dann natürlich auch per md5('totalgeheim'.$referer_id) erstellen.
                        md5() gilt nicht mehr als sicher. Wenn es also unbedingt sein muss, solltest Du nach einem "besseren" Hashverfahren schauen.
                        Ob sich das lohnt, ist eine andere Frage.

                        Kommentar


                        • #13
                          Vielen lieben Dank.

                          Du hast mir unglaublich geholfen. Ich danke Dir von Herzen und noch einen schönen Tag.

                          Kommentar

                          Lädt...
                          X