Diese Seite weiterempfehlen…

PHP Skript: Seite weiterempfehlen...Wer seinen Besuchern die Möglichkeit geben will, die gerade von ihm gelesene Seite an einen Freund weiterzuempfehlen, kann das auf vielerlei Weise tun. Wir machen das im Einbau und können mit zusätzlichen Features das Skript noch komfortabler machen. Zum Beispiel mit einem Virenschutz oder dem automatischen Auslesen der Meta-Description.

Eine solche Funktion gehört beinahe schon zum guten Ton. Sie wird häufig
eingesetzt. In wie weit sie jedoch benutzt werden, hängt vom Profil der Besucher
ab. Auf Spiegel-Online wird ein solches Tool stark benutzt. Zumindest lässt es
jede Website komfortabler erscheinen.


Es funktioniert relativ einfach. Ein Besucher schaut sich eine Seite an,
klickt auf den Link „Diese Seite einem Freund weiterempfehlen“ oder ähnlich –
ein Fenster öffnet sich und eine Empfehlung kann ausgesprochen werden.


Der Empfehlungslink sieht wie folgt aus:


<a href=”#”
onClick=”window.open(’empfehlen.php?ref
=’+location.href,’NewWindow’,’width=400,
height=600′)”>Diese Seite weiterempfehlen?</a>


Dabei wird in einem neuen Popup-Fenster das Skript empfehlen.php aufgerufen.
An dieses wird der Parameter “ref” weitergegeben. Der Parameter bekommt mit
“location.href” die aktuelle Adresse übergeben.


Möchte man auf das Popup-Fenster verzichten, lässt sich die Sache auch über
einen einfachen Link regeln.


<a href=”javascript:
window.location.href=’empfehlen.php?ref=’+location.href”>Diese Seite
weiterempfehlen?</a>


Das Empfehlen-Skript besteht zum einen aus einer Email-Funktion und zum
anderen aus einem Formular. Des Weiteren müssen die Eingaben der Benutzer vor
dem Absenden der Email auf Ihre syntaktische Korrektheit hin untersucht
werden.


Das Skript dazu:


empfehlen.php


<html><head><title>Diese Seite
weiterempfehlen…</title></head>
<body>
<div
align=”center”>
<?php
$url = $_GET[‘ref’];
if
(isset($_POST[‘submit’])) { //ist das Formular abgesendet worden?
$error =
false;
$regex =”/^”.”[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*”.”@”
.”([a-zA-Z0-9-]+\.)+”.”([a-zA-Z]{2,4})”.”$/”;
if (!preg_match($regex,
$_POST[‘s_email’])) {
echo “Geben Sie eine gültige Sender-Emailadresse
ein!<br />”;
$error = true;
}
if
(!preg_match($regex,$_POST[‘e_email’])) {
echo “Geben Sie eine gültige
Empfänger-Emailadresse ein!<br />”;
$error = true;
}
if
($_POST[‘s_email’] == $_POST[‘e_email’]) {
echo “Geben Sie zwei verschiedene
Emailadressen an<br />”;
$error = true;
}
if ($_POST[‘s_name’] ==
“” or $_POST[‘e_name’] == “”) {
echo “Geben Sie sowohl ihren Namen als auch
den Empfängernamen an<br />”;
$error = true;
}
if ($error ==
true) {
echo “<a
href=\”javascript:history.back()\”>Zur&uuml;ck</a>”;
}
else
{ //Email versenden
//im folgenden wird die Nachricht
generiert.
$nachricht = “Hallo “.$_POST[‘e_name’].”, \n”;
$nachricht .=
$_POST[‘s_name’] .” hat gerade die Seite deineseite.de besucht und meint, dass
eventuell auch “.$ref.” für dich interessant sein könnte. \n”;
$nachricht .=
“Er hinterließ dir folgende Nachricht: \n”;
$nachricht .=
$_POST[‘nachricht’];
$nachricht .= “\nEs würde uns freuen wenn du mal vorbei
schaust!\n”;
$nachricht = strip_tags($nachricht); //nur zur
Sicherheit!

if (!mail($e_email,”Surftipp von
“.$_POST[‘s_name’],$nachricht, “From: “.$s_email)) {
echo “Mail konnte nicht
versand werden!”;
}
else {
echo “Die Email wurde erfolgreich
versendet!”;
echo “<a href=\”javascript:window.close()\”>Fenster
schließen</a>”;
}
}
}
else {
?>


<p>Hier können Sie eine kurze Nachrichte an Freunde, Bekannte
oder Kollegen senden und den eben gelesenen Artikel weiterempfehlen, die
entsprechende URL wird automatisch übermittelt. Die Eingabe von Emailadressen
und Namen ist notwendig, sonst kann es nicht funktionieren. Adressen werden von
uns nicht weitergegeben.</p>


<form method=”post” action=”empfehlen.php”>
Ihr Name:
<input type=”text” name=”s_name” /> <br />
Ihre Emailadresse:
<input type=”text” name=”s_email” /> <br />
Name ihres Freundes:
<input type=”text” name=”e_name” /> <br />
Email ihres Freundes:
<input type=”text” name=”e_email” /> <br />
<textarea
name=”nachricht” cols=”34″ rows=”4″>Hey ich habe eine interessante Webseite
unter <?php echo $ref ?> gefunden! Schau sie dir mal an!</textarea>
<br />
<input type=”submit” name=”submit”
/>
</form>
<?php
}
?>
</div>
</body>
</html>


Der Aufbau des Skriptes ist relativ simpel. Zunächst wird durch
isset($_POST[‘submit’]) überprüft, ob das Formular abgesendet wurde. Ist dies
der Fall, wird geprüft, ob alle notwendigen Angaben in dem Formular gemacht
wurden. Bei der Kontrolle der Emailadressen wird auf reguläre
Ausdrücke zurückgegriffen. Sofern keine Fehler bei der Eingabe der Daten
entdeckt wurden, wird die Email versendet.


Zuvor wird die Nachricht an den Empfänger noch etwas modifiziert.
Sicherheitshalber werden über strip_tags($nachricht); sämtliche HTML Tags aus
der Nachricht entfernt. Über ein IMG-Tag könnten nämlich Viren
an den Empfänger verschickt werden. Würde der Benutzer die Email dann öffnen und
die Quelle auf die der IMG-Tag verweist geladen, könnte sich der Benutzer
infizieren.


Nun so ist das Skript noch wenig spektakulär. Man kann dem Empfänger der
Email jedoch weitere Informationen über die Seite übermitteln, die er besuchen
soll. Es wäre doch praktisch wenn der Empfänger den Titel der Seite zu lesen
bekäme, oder vielleicht eine kurze Beschreibung. Auch das ist ohne Probleme mit
ein wenig Javascript möglich.


Übergabe des Titels
Den Titel können sie mit der
JavaScript-Eigenschaft “document.title” ebenfalls als Parameter übergeben. Der
Link zu der Seite würde dann wie folgt aussehen:
<a
href=”javascript:window.location.href=’empfehlen.php?
ref=’+location.href+’&titel=’+document.title”>Diese
Seite weiterempfehlen?</a>


Übergabe der Meta-Description
Über das DOM kann auf die
Meta-Tags zugegriffen werden; so kann über


document.getElementsByTagName
(“meta”).description.content


auf den Inhalt der Meta-Description zugegriffen werden. Diese kann dann
ebenfalls über den URL an das Empfehlungsskript übermittelt werden.


<a
href=”javascript:window.location.href=’empfehlen.php?
ref=’+location.href+’&titel=’+document.title+’&desc
=’+document.getElementsByTagName
(‘meta’).description.content”>
Diese Seite weiterempfehlen?</a>


Wem das zu umständlich erscheint, der kann mit PHP vorgehen. Es gibt die
Funktion get_meta_tags(), über die sämtliche Metatags einer Datei eingelesen
werden und in ein assoziatives Array überführt werden. Dabei parst der PHP
Interpreter die Datei nur bis zum letzten MetaTag-Eintrag. Es wird also nicht
die vollständige Datei geladen.


Da über den ref-Parameter in unserem Skript die URL der zu empfehlenden Seite
übertragen wird, können anhand dieser die MetaTags aus der Datei eingelesen
werden. Das funktioniert auch bei dynamischen Webseiten.


This entry was posted in PHP. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *