Markus L.: Newsletter-Bestätigungslinks, wie?

Hallo,
ich frage mich schon seit längerem wie sowas mit
Bestätigungslinks funktioniert.
So: Newsletter -> Anmelden -> ne Mail an die gegebene E-Mail schicken -> Auf Link drücken -> Dann erst endgültig eingetragen!

Wie geht sowas? Woher weiss "es" das der Link passend zu der E-Mail iss?
Ich würde sowas gerne nachmachen, weiss aber nicht wie, habe alles verfügbar, HTML Javascript PHP MySQL.
Wäre sehr dankbar für Hilfe! :)

  1. Hallo Markus !

    So: Newsletter -> Anmelden -> ne Mail an die gegebene E-Mail schicken -> Auf Link drücken -> Dann erst endgültig eingetragen!

    Du meinst, im Link auf Bestätigung klicken, etc ?

    Also an sich mal theoretisch kein Problem:

    - anmeldeseite: Form mit E-Mail-adresse angeben
       - "bitte bestätigen sie in der E-Mail": Das CGI-Programm macht noch gar nix, versendet
         nur die e-mail mit link in form von z.B.

    ...bestätigen.php?email=blabla@blabal.de

    - und die aufgerufene seite bestätigen.php trägt dann erst die E-Mail-Adresse in eine
         Datenbank ein, was auch kein Problem mehr ist.

    selbst sowas wie "auswahl, ob man html oder text-newsletter will" ist dann kein Problem:
    Die E-Mail, die ja von PHP automatisch generiert wird, bekommt dann eben noch mim link sowas dran... &format=html oder sowas, und das schreibt die aufgerufene seiten dann eben mit in die DB !

    Theoretisch kein Problem, mit ein bisschen PHP-Programmiertechnik auch keins mehr, auskennen sollte man sich mit PHP natürlich schon ein bisschen !

    benji

    --
    © by benji
    ® by benji
      all rights reserved
    1. Schon, aber ich wollte eigentlich einen verschlüsselten Link à la
      http://test.url/bestaetigen.php?link=ae845gq923dmsw93jZ74hS84

      Sowas wie das, sonst kann man ja den Link mit beliebigen E-Mails als nachhang aufrufen und so die Database zuspammen, weisst du vielleciht wie man die Links verschlüsselt und Entschlüsselt?
      Oder wie man sich eine eigene Verschlüsselung baut?

    2. Hallo,

      nur die e-mail mit link in form von z.B.

      ...bestätigen.php?email=blabla@blabal.de

      halte ich für keine gute Idee: Es soll ja verhindert werden, daß eine Person (oder robot) einen Newsletter für jemand anderen bestellt. Ein Bestätigungsscript, welches nur die eMail Adresse als Parameter hat ist da nicht sehr sicher.
      Ich würde eine zufälligen Schlüssel generieren und zusasammen mit der eMail Adresse in einer Datenbank speichern. Der Schlüssel wird dann in die URI in der Bestätigungs eMail eingebaut, das Script schaut einfach nach zu welcher eMail-Adresse der übergebene Schlüssel gehört und schaltet die Adresse frei.

      Gab es nicht ein Urteil zu dem Thema? Ich bin mir nicht ganz sicher, aber die Sache mit der "unaufgefordert" zugestellten Bestätigungs-eMail war doch rechtlich brisant - weiß ich aber nicht mehr genau.

      Grüße,

      Peter

      --
      The only legitimate use of the greatly loathed <BLINK> tag:
      Schroedinger's Cat is <BLINK>NOT</BLINK> dead.
      --- User Friendly 27/04/2003
      1. Ja, aber wie lasse ich einen sagen-wir-mal 20-stelligen Schlüssel generieren?
        Der User klickt dann quasi auf nen Link wie
        http://test.url/bestaetigen.php?mail=test@email.de?key=39dj47che83jd4gd83jsla Abfrage geht dann mit "SELECT * FROM newsletter WHERE adress='$mail', key='$key'

        Dann abfragen ob er null oder eine Row ausgibt, oder?
        Nur wie generiert man einen Zufallsschlüssel?

        1. Nur wie generiert man einen Zufallsschlüssel?

          zUFALLSZAHL zwischen 0 und 1, diese so multiplizieren und berechnen, dass da was 20stelliges rauskommt

          benji

          --
          © by benji
          ® by benji
            all rights reserved
  2. Hello,

    ich würde mittels dieses erwähnten Links erst ein Formular aufrufen, in das noch zusätzlich ein Wert eingetragen werden muss.

    Zufallsstring:

    function get_random_str($lenmin,$lenmax)
    {
      mt_srand ((double)microtime()*1000000);
      $anzahl = mt_rand($lenmin,$lenmax);
      $zeichen="abcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ0123456789-+_&~.,!";

    $zufall="";

    $i=0;
      while($i<=$anzahl)
      {
        $zufall.=substr($zeichen,mt_rand(0,strlen($zeichen)),1);
        $i++;
      }
      return $zufall;
    }

    Grüße

    Tom