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.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: