Seite 1 von 2
Verfasst: 29.10.2005, 12:48
von mirko
das dekodiert die E-Mail-Adresse und schreibt diese in die Variable $EMail
$EMail = $crypt->phpDecrypt(rawurldecode($EMail));
Verfasst: 29.10.2005, 12:16
von dav
Anpassung vom 27.10 19.27 hab ich gemacht:
if ( (isset($EMail)) && ( ($Action==\"confirmation\") || ($Action==\"unsubscribeconfirmation\") ) ) {
$EMail = $crypt->phpDecrypt(rawurldecode($EMail));
}
...und in der definitven subscribe-mail kommt...
Sorry es müsste heissen
... und in der definitiven UNsubscribe-mail kommt die E-Mail-Adresse des Abmelders codiert ...
Die E-Mail-Adresse des Abmelders in der definitiven unsubscribe-mail ist codiert.
EMail: 475F485E44465E5254421F54525E59545C745733285745414356 1515F
IP-Anmeldung: 84.227.168.108
Datum-Anmeldung: 29.10.2005
Uhrzeit-Anmeldung: 11:48
Wo wird die E-Mail-Adresse des Abmelders in der definitiven unsubscribe-mail decrypt/decode?
bei
# Alle uebergebenen Werte in die Nachricht uebernehmen
$message = \"\";
reset ($_GET);
...
versuche ich etwas wie
...
if ($Action == \"subscribe\")
$message .= \"$key: \".$crypt->phpDecrypt(rawurldecode($val)).\"\\n \";
if ($Action == \"unsubscribe\")
$message .= \"$key: \".$crypt->phpDecrypt(rawurldecode($val)).\"\\n \";
else
$message .= \"$key: \".rawurldecode($val).\"\\n\";
}
dann ist zwar die E-Mail-Adresse des Abmelders in der definitiven unsubscribe-mail uncodiert jedoch sind wieder in der definitven subscribe-mail alle Angaben doppelt einmal codiert und einmal uncodiert
Ohne exit; wird auch gleich unsubscribeconfirmation ausgeführt
if ($Action == \"unsubscribe\") {
$headers = \"From: $Recipient\\n\";
.......
print \"<b>Es wurde eine E-Mail an die E-Mail-Adresse $EMail mit einem Bestaetigungslink zur Abmeldung von
unserem Newsletter gesendet.<br><br>Bitte klicken Sie in dieser E-Mail auf den Bestaetigungslink, damit Ihre
E-Mail-Adresse definitiv aus unserem Newsletter ausgetragen wird.</b>\";
exit;
}
schleife sparen beim abmelden hab ich verstanden

Verfasst: 29.10.2005, 11:14
von mirko
deinen Beitrag verstehe ich nicht. Für die Dekodierung der E-Mail-Adresse beim Klick auf den Bestätigungslink solltest du die Anpassung aus meinem Beitrag vom \"27.10.2005, 19:27 Uhr\" einbauen. Für die Abmeldung braucht man nur die E-Mail-Adresse, die restlichen Angaben kann man vergessen, sind unnütz. Entsprechend kann man sich bei der Bestätigungsmail für die Abmeldung die komplette while (list ($key, $val) = each ($_GET)) { bzw. while (list ($key, $val) = each ($_POST)) { Schleife sparen und schreibt nur den Link $Link = \"http://\".$SERVER_NAME.$SCRIPT_NAME.\"?Action=unsubscribeconfirmation&EMail=\".rawurlencode($crypt->phpEncrypt($EMail)); als Bestätigungslink in die E-Mail selbst. Entsprechend wird beim Klick auf den Link $EMail übergeben und dekodiert, das verarbeitet man dann im Script weiter und ist fertig.
Tracken darf man natürlich den Abmeldelink niemals, das muss klar sein, da ansonsten die E-Mail-Adresse nicht übergeben wird.
Verfasst: 29.10.2005, 10:56
von dav
Also ich bin kein code-schreiber aber analysieren kann ich ein wenig. Ich hab\'s jetzt soweit das Anmeldung und definitives subscribe und Abmeldung soweit funktionieren. Einfach den Abmeldelink darf man nicht tracken da wird sonst der Platzhalter nicht umgewandelt.
Ich denke mal bei
if ($Action == \"unsubscribe\") {.....
fehlte das
exit;
Was ist eigentlich mit?
$s=\"\";
reset ($_GET);
.......
und
reset ($_POST);
......
innerhalb
if ($Action == \"unsubscribe\") {
Aus meiner Sicht fehlt noch die decodierung der definitven unsubscribe-mail bei
# Alle uebergebenen Werte in die Nachricht uebernehmen
$message = \"\";
reset ($_GET);
while (list ($key, $val) = each ($_GET)) {
if ($key == \"Action\") continue;
if ($key == \"SubmitBtn\") continue;
if ($Action == \"subscribe\")
$message .= \"$key: \".$crypt->phpDecrypt(rawurldecode($val)).\"\\n\";
else
$message .= \"$key: \".rawurldecode($val).\"\\n\";
}
$message .= \"IP-Anmeldung: \".$REMOTE_ADDR.\"\\n\";
$message .= \"Datum-Anmeldung: \".date(\"d.m.Y\").\"\\n\";
$message .= \"Uhrzeit-Anmeldung: \".date(\"H:i\").\"\\n\";
In einem Mailing ist der Abmeldelink ja immer uncodiert. In der Aufforderung zur definitven Abmeldung ist die E-Mail Adresse des Abmelders codiert und in der definitven subscribe-mail kommt die E-Mail-Adresse des Abmelders ebenfalls codiert jedoch die IP, Datum und Uhrzeit uncodiert. Und das kriege ich als nicht-code-schreiber nicht hin.

mfg
Verfasst: 28.10.2005, 19:03
von mirko
irgendwas hast du falsch zusammenkopiert, daher ist es nun doppelt. Schick mir mal das Script an meine Support-E-Mail-Adresse, ich schaue es an obwohl es nicht zum Programmsupport gehört Scripte kostenlos anzupassen, das kostet normalerweise je nach Aufwand 50 EUR aufwärts.
Verfasst: 28.10.2005, 13:51
von dav
Original von dav:
So weit so gut.
Jetzt kommt jedoch die E-Mail-Adresse einer bestätigten Anmeldung codiert. \"From\" ist noch in Ordung. Inhalt des Mail mit der definitiven Anmeldung:
EMail:
webmaster@mypcsupport.ch
EMail: 46554D5F565C445043705C494353434440445E33391C555C
IP: 212.4.76.27
Auch wenn mehrere Felder im Anmeldeformular sind werden diese zusätzlich codiert:
EMail:
dav@vipconsult.ch
EMail: 55515972414640565E5E42455F441E5258
Anrede: Sehr geehrter Herr
Anrede: 625547401748555059424555411078544246
Vorname: Daniel
Vorname: 7551415B5243
Name: Voglsinger
Name: 675F485E44465E525442
IP: 212.4.76.27
Und SuperMailer übernimmt genau die codierten Inhalte und nicht die anderen.
Verfasst: 28.10.2005, 13:15
von dav
So weit so gut.
Jetzt kommt jedoch die E-Mail-Adresse einer bestätigten Anmeldung codiert. \"From\" ist noch in Ordung. Inhalt des Mail mit der definitiven Anmeldung:
EMail:
webmaster@mypcsupport.ch
EMail: 46554D5F565C445043705C494353434440445E33391C555C
IP: 212.4.76.27
Auch wenn mehrere Felder im Anmeldeformular sind werden diese zusätzlich codiert:
EMail:
dav@vipconsult.ch
EMail: 55515972414640565E5E42455F441E5258
Anrede: Sehr geehrter Herr
Anrede: 625547401748555059424555411078544246
Vorname: Daniel
Vorname: 7551415B5243
Name: Voglsinger
Name: 675F485E44465E525442
IP: 212.4.76.27
Verfasst: 27.10.2005, 19:27
von mirko
Das Script hat sich natürlich seit damals geändert. Es gibt noch die Prüfung
Code: Alles auswählen
if ( (isset($EMail)) && ($Action=="confirmation") ) {
$EMail = $crypt->phpDecrypt(rawurldecode($EMail));
}
diese muss so geändert werden
Code: Alles auswählen
if ( (isset($EMail)) && ( ($Action=="confirmation") || ($Action=="unsubscribeconfirmation") ) ) {
$EMail = $crypt->phpDecrypt(rawurldecode($EMail));
}
Verfasst: 27.10.2005, 16:33
von dav
Das mit dem einbauen hat geklappt. Lediglich die Codierung der E-Mail Adresse funktioniert noch nicht. Wenn der Abmelde-Bestätigungs-Link mit codierter E-Mail Adresse drin \"http://\".$SERVER_NAME.$SCRIPT_NAME.\"?Action=unsubscribeconfirmation&EMail=\".rawurlencode($crypt->phpEncrypt($EMail)); angeklickt wird kommt die Fehlermeldung: \"Es wurde keine E-Mail-Adresse angegeben oder die E-Mail-Adresse liegt nicht im korrekten Format vor!\"
Wenn die E-Mail Adresse nicht codiert wird \"http://\".$SERVER_NAME.$SCRIPT_NAME.\"?Action=unsubscribeconfirmation&EMail=\".$EMail; funktioniert die Abmeldung.
Was muss gemacht werden, damit die E-Mail Adresse im Link des Mail mit der Auffordrung zur Bestätigung der Abmeldung korrekt codiert würde?
Verfasst: 27.10.2005, 15:02
von dav
Wo genau muss der erste Teil eingefügt werden?
Original von Mirko:
Warum ist es nicht sinnvoll im Script \"rumzubauen\"? Das Script liegt im Quellcode vor, damit kann jeder daraus basteln was er gern möchte.
Die Double-Opt-Out Funktion ist auch relativ leicht zu implementieren, man verwendet den gleichen Code wie beim Opt-In.
in etwa so:
Code: Alles auswählen
$EMailSubjectUnsubscribe="Bestätigung Ihrer Abmeldung vom Newsletter";
$UnsubscribeEMailText="http://www.meineseite.de/unsubscribeemail.txt";
$ConfirmationUnsubscribeMailSendOKPage="http://www.meineseite.de/unsubcribemailsend.html";
if ($Action == "unsubscribe") {
$headers = "From: $Recipient\\n";
$headers .= "X-Mailer: SuperMailerScript\\n";
$headers .= "Return-Path: <$Recipient>\\n";
$message = join("", file($UnsubscribeEMailText));
$Link = "http://".$SERVER_NAME.$SCRIPT_NAME."?Action=unsubscribeconfirmation&EMail=".rawurlencode($crypt->phpEncrypt($EMail));
$message = str_replace ("[BESTAETIGUNGSLINK]", $Link, $message);
@mail($EMail, $EMailSubjectUnsubscribe, $message, $headers);
if ($ConfirmationUnsubscribeMailSendOKPage != "")
header("Location: $ConfirmationMailSendOKPage");
else
print "<b>Ihnen wurde eine E-Mail an die E-Mail-Adresse $EMail mit einem Bestätigungslink zur Aufnahme in unseren Newsletter gesendet.<br>Bitte klicken Sie in dieser E-Mail auf den Bestätigungslink, damit Ihre E-Mail-Adresse in unseren Newsletter aufgenommen wird.</b>";
}
Code: Alles auswählen
und dann steht im Script
# Aufruf ueber Bestaetigungs-E-Mail
if ($Action=="confirmation") {
$Action="subscribe";
}
da fügt man darunter
if ($Action=="unsubscribeconfirmation") {
$Action="unsubscribe";
}
das war es schon
Verfasst: 19.05.2005, 14:06
von mirko
Das ist richtig, außer du implementierst das anders z.b. so
# nur bei Anmeldung bzw. Klick auf Bestaetigungslink pruefen
if (($Action == \"subscribe\") || ($Action == \"confirmation\")) {
<pr>
}
else
# ansonsten checke nur ob email adresse uebergeben ist
if ( (!isset($EMail)) || ($EMail == \"\") || ( !CheckEMail($EMail) ) ) {
if ($ErrorPage != \"\")
header(\"Location: $ErrorPage\");
else
print \"<b>Es wurde keine E-Mail-Adresse angegeben oder die E-Mail-Adresse liegt nicht im korrekten Format vor!</b>\";
exit;
}
Verfasst: 19.05.2005, 13:43
von Jens_Pu
Hi Mirko,
das hilft mir sicherlich weiter...
Habe mich unlängst ein wenig in dem Script versucht.
Das mit den Pflichtfeldern habe ich schon am Laufen. Für die Sache mit dem Abmelden werden mir Deine Codeschnipsel sicherlich recht hilfreich sein. :biggrin: Danke.
Noch was:
Ist es richtig, wenn ich mit Pflichtfeldern bei der Anmeldung arbeite, dann müssen diese Pflichtfelder auch im Abmeldelink stehen? Sonst kommt die Error-Seite.
Gruß xsepp
Verfasst: 19.05.2005, 12:20
von mirko
Warum ist es nicht sinnvoll im Script \"rumzubauen\"? Das Script liegt im Quellcode vor, damit kann jeder daraus basteln was er gern möchte.
Die Double-Opt-Out Funktion ist auch relativ leicht zu implementieren, man verwendet den gleichen Code wie beim Opt-In.
in etwa so:
Code: Alles auswählen
$EMailSubjectUnsubscribe="Bestätigung Ihrer Abmeldung vom Newsletter";
$UnsubscribeEMailText="http://www.meineseite.de/unsubscribeemail.txt";
$ConfirmationUnsubscribeMailSendOKPage="http://www.meineseite.de/unsubcribemailsend.html";
if ($Action == "unsubscribe") {
$headers = "From: $Recipient\\n";
$headers .= "X-Mailer: SuperMailerScript\\n";
$headers .= "Return-Path: <$Recipient>\\n";
$message = join("", file($UnsubscribeEMailText));
$Link = "http://".$SERVER_NAME.$SCRIPT_NAME."?Action=unsubscribeconfirmation&EMail=".rawurlencode($crypt->phpEncrypt($EMail));
$message = str_replace ("[BESTAETIGUNGSLINK]", $Link, $message);
@mail($EMail, $EMailSubjectUnsubscribe, $message, $headers);
if ($ConfirmationUnsubscribeMailSendOKPage != "")
header("Location: $ConfirmationMailSendOKPage");
else
print "<b>Ihnen wurde eine E-Mail an die E-Mail-Adresse $EMail mit einem Bestätigungslink zur Aufnahme in unseren Newsletter gesendet.<br>Bitte klicken Sie in dieser E-Mail auf den Bestätigungslink, damit Ihre E-Mail-Adresse in unseren Newsletter aufgenommen wird.</b>";
}
Code: Alles auswählen
und dann steht im Script
# Aufruf ueber Bestaetigungs-E-Mail
if ($Action=="confirmation") {
$Action="subscribe";
}
da fügt man darunter
if ($Action=="unsubscribeconfirmation") {
$Action="unsubscribe";
}
das war es schon
Verfasst: 19.05.2005, 00:03
von Hermann-x
Die ungeprüfte Abmeldung kann schon ein Problem werden.
In einem speziellen Kundenkreis könnte sich schon mancher den Spaß erlauben beim Wettbewerber bekannte Mailadressen einfach mal auszuprobieren, wer weis.
Im Script einfach rumzubauen ist nicht unbedingt sinnvoll, hier könnten 2 gleiche Scripte mit verschiedenen Namen und 2 Postfächer jeweils für Ab und Anmeldung das Problem lösen.
Damit hat man zwar auch 2 Formularfelder im html code und es sieht nicht so elegant aus, als wenn es als Option bereits im Script implementiert wäre, aber vielleicht hat der Entwickler doch noch ein Einsehen.
Verfasst: 07.05.2005, 12:57
von Jens_Pu
Da muß ich erst noch etwas üben...
Da gibt es momntan wichtigeres.
Bis ich dazu komme formuliere ich die Bestätigungsmail entsprechend.
:augenroll: