Tell-a-Friend Droplet
Natürlich kann man über Facebook und andere soziale Netzwerke Internetseiten seinen Freunden weiterempfehlen. Wie aber kann ich eine bestimmte URL an einen (eMail-)Freund aus WebsiteBaker übermitteln?
Diese Frage wurde im Forum aufgebracht und weckte meinen technischen Ehrgeiz. Nett wäre ein Droplet, das ein Webmaster im Template oder nur auf bestimmten Seiten einfügen kann, über das dann eine eMail mit genau dieser URL generiert wird.
Im Netz finden sich dann unter dem Stichwort "Tell-a-Friend" zahlreiche Lösungen, die alle beliebig kompliziert sind, zum Teil auch Geld kosten, aber dann meist doch nur die URL der Domain übermitteln. Aus einer dieser Lösungen habe ich daher ein Droplet entwickelt, das die gerade aufgerufene URL übermittelt. Allerdings ist das Droplet derzeit nur in Deutsch verfügbar ... vielleicht erweitere ich es irgendwann einmal auf Mehrsprachigkeit.
Um Spam-Automatismen zu verhindern, habe ich ein Captcha eingefügt ... allerdings nicht das von WB mitgebrachte (ehrlich gesagt, war mir die Einbindung zu kompliziert), sondern das reCaptcha von Google. Daher (ich trau' mich ja kaum, das zu sagen) brauchst Du einen Google-Account, um Dir ein Schlüsselpärchen zu besorgen, damit ReCaptcha auf Deiner Site funktioniert. Dieses Schlüsselpärchen benötigst Du in Deinem angepassten Droplet.
Zur Installation des Droplets gehst Du (auf dem herkömmlichen Weg) so vor:
- Die Library des reCaptcha muss in Deiner WB Installation vorhanden sein. Ich habe sie der Einfachheit halber unter /include/captcha installiert.
ACHTUNG : nach Updates von WB kann es sein, daß diese Library gelöscht wird.
Die Installation geschieht durch Übertragen der Datei in Deinen Webspace via FTP - es ist kein WB Modul! - Unter Admin-Tools ---> Droplets ---> Hinzufügen Droplet gibst Du danach Folgendes ein:
- Name: tell-a-friend (z.B.)
- Beschreibung: Tell-a-Friend Droplet (z.B.)
- Aktiv: Ja
- Code: den untenstehenden Code kopieren und einfügen
- Kommentare: nach Gusto - was immer Du an zusätzlichen Infos brauchst. Nett wäre z.B. der Hinweis auf www.pa-s.de, von wo ich den Basiscode gefunden habe.
- Am Schluß wird dann das Droplet gespeichert.
- Nun muß dieser Code auf Deine Domain hin angepasst werden. Im Code -Feld werden dazu folgende Änderungen nötig:
- Zeile 5: der Pfad zur recaptchalib.php, die Du in Schritt 1 installiert hast.
- Zeile 7: Dein privater reCaptcha-Schlüssel, den Du dir ja als allererstes besorgt hast.
- Zeile 16: der Absender Deiner eMail. Das muß nicht der Webmaster sein - der Absender muß aber eine gültige Adresse sein, von der aus Dir Dein Webspace-Provider das Absenden von eMails erlaubt.
- Zeile 79: Hier muß unter Umständen eine andere Zeichenkodierung gewählt werden, abhängig von den Einstellungen in WB.
- Zeilen 111 und 114 : Dein öffentlicher reCaptcha-Schlüssel.
- Am Schluß wird das so geänderte Droplet wieder gesichert.
- Nun steht das fertige Droplet zur Verfügung und kann auf Deine Seiten oder sogar ins Template über eingefügt werden.
Wenn nun ein Besucher Deine URL weiterempfehlen möchte, füllt er das Formular komplett (!) aus. Sein Freund erhält dann eine eMail, die in etwas so aussieht:
Subject : Schau Dir mal http://www.hillschmidt.de/wb/pages/internet/websitebaker-module/tell-a-friend-droplet.php an! Text : Hallo Andreas, |
Nach dem Absenden sieht Dein Besucher folgende Erfolgsmeldung:
Empfiehl diese Seite weiter: Vielen Dank - Dein Hinweis auf
http://www.hillschmidt.de/wb/pages/internet/websitebaker-module/tell-a-friend-droplet.php wurde erfolgreich an Andreas verschickt! |
Wer OHNE Captcha arbeiten will, der muß Folgendes am Code ändern (aber das empfehle ich nicht!):
Nach dem Kopieren des untenstehenden Codes folgende Zeilen löschen oder mit # auskommentieren:
4 bis 12, 25, 30, 40, 41, 74 bis 77.
Damit wird auf Aufruf und Überprüfung des Captcha verzichtet.
Folgende Zeilen müssen angepasst werden:
65: Die Abfrage nach der || $recaptcha_response == ""
löschen.
110: <tr>
wird zu <!--tr>
122: </tr>
wird zu </tr-->
125: action="http://www.google.com/recaptcha/api/verify"
wird entfernt.
Hier nun der anzupassende Code des Droplets:
###########################################################################################################################
# Tell a friend inspired by PA-S.de - DROPLET for WebsiteBaker
###########################################################################################################################
# reCaptchaLib
require_once(WB_PATH.'/include/captcha/recaptchalib.php');
# reCaptcha Private - keep it private
$privatekey = "....insert here your private key ...";
# reCaptcha Check
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
# URL in question
$url="http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
# Sender
$webmastermail = "webmaster@your_domain_goes.here";
# Subject
$subject= "Schau Dir mal ".$url." an!";
# Analyze Form
$friend = $_POST['friend'];
$name = $_POST['name'];
$email = $_POST['email'];
$plus = $_POST['plus'];
$recaptcha_response = $_POST["recaptcha_response_field"];
$friend = strip_tags($friend);
$name = strip_tags($name);
$email = strip_tags($email);
$plus = strip_tags($plus);
$recaptcha_response = strip_tags($recaptcha_response);
$timestamp = time();
$date = date("d.m.Y",$timestamp);
$time = date("H:i:s",$timestamp);
// Error Messages:
# not all fields filled
$msgf = "<span style=\"color:red;\"><b>Fehler:</b> Du hast nicht alle Felder ausgefüllt!</span><br />";
# invalid eMail address
$msgm = "<span style=\"color:red;\"><b>Fehler:</b> Die E-Mailadresse ist ungültig!</span><br />";
# wrong reCaptcha
$msgc = "<span style=\"color:red;\"><b>Fehler:</b> Verificationscode falsch eingegeben.<br />(reCAPTCHA Fehlermeldung: " . $resp->error . ")</span><br />";
# eMail sent
$msgok = "<span style=\"color:blue;\">Vielen Dank - Dein Hinweis auf<br /><span style=\"font-weight:bold;\">".$url."</span><br />wurde erfolgreich an <span style=\"font-weight:bold;\">".$friend."</span> verschickt!</span>";
# Message Template for eMail:
$message .= "Hallo $name,<br />";
$message .= "diese Seite habe ich im Internet gefunden:<br />";
$message .= "$url<br /><br />";
$message .= "Persönliche Nachricht:<br />";
$message .= "$plus<br /><br />"; // additional text out of the form
$message .= "Viele Grüsse von $friend<br /><br />";
$message .= "Gesendet am $date um $time";
$out='
<form name="form1" method="post" action="'.$PHPSELF.'">
<table width="50%" border="0" align="center" cellpadding="3" cellspacing="1" style="border:1px solid #CCCCCC;">
<tr>
<td bgcolor="#f5f5f5"><b>Empfiehl diese Seite weiter:</b></td>
</tr>
<tr>
<td>';
if($_POST['send'] == "1") {
$err=0;
if ($friend == "" || $name == "" || $email == "" || $recaptcha_response == "" ) {
$out.='<div style="background-color:yellow;">'.$msgf.'</div>';
$err=1;
}
if (!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
$out.='<div style="background-color:yellow;">'.$msgm.'</div>';
$err=1;
}
if (!$resp->is_valid) {
$out.='<div style="background-color:yellow;">'.$msgc.'</div>';
$err=1;
}
if ($err == 0) {
$pass = "ok";
$header="FROM: $webmastermail\nContent-type: text/html; charset=utf-8";
mail($email,$subject,$message,$header);
$out.='<div style="">'.$msgok.'</div>';
}
}
if($pass != "ok") {
$out.='
<table width="50%" border="0" cellpadding="2" cellspacing="2">
<tr>
<td><b>Dein Name:</b><br /></td>
<td><input name="friend" type="Text" id="friend" value="'.$friend.'" size="30" maxlength="100"></td>
</tr>
<tr>
<td><b>Empfänger Name:</b><br /></td>
<td><input name="name" type="Text" id="name" value="'.$name.'" size="30" maxlength="100"></td>
</tr>
<tr>
<td><b>Empfänger eMail:</b><br /></td>
<td><input name="email" type="Text" id="email" value="'.$email.'" size="30" maxlength="100"></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><b>Zusätzlicher Text</b><strong>: (Optional) </strong></td>
</tr>
<tr>
<td colspan="2"><textarea name="plus" cols="50" rows="3">'.$plus.'</textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><script type="text/javascript"
src="http://www.google.com/recaptcha/api/challenge?k=...your public key goes here ...">
</script>
<noscript>
<iframe src="http://www.google.com/recaptcha/api/noscript?k=...your public key goes here ..."
height="300" width="500" frameborder="0"></iframe><br />
<textarea name="recaptcha_challenge_field" rows="3" cols="40">
</textarea>
<input type="hidden" name="recaptcha_response_field" value="manual_challenge">
</noscript>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input name="send" type="hidden" id="send" value="1">
<input type="submit" value="Absenden" name="submit" action="http://www.google.com/recaptcha/api/verify"> - <input type="reset" value="Abbrechen" name="reset"></td>
</tr>
</table>';
}
$out.='
</td>
</tr>
</table>
</form>
<div align="center" style="font-size:0.75em">© Droplet bases on a script found on <a href="http://www.pa-s.de" target="_blank">PA-S.de</a></div>';
return $out;
[5] Failed opening required '/mnt/web220/b2/93/536293/htdocs/wb/include/captcha/recaptchalib.php' (include_path='.:/opt/RZphp82/includes')