[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Weiterempfehlen-Formular - valide, weitgehend barrierefrei
Seite 1 von 1

Weiterempfehlen-Formular - valide, weitgehend barrierefrei

Verfasst: 17. Jul 2005, 18:55
von blubb
Hi Leute,

basierend auf dem von mir geposteten Kontaktformular, siehe
http://forum.redaxo.de/viewtopic.php?t=595
hier ein Script "Unsere Seite weiterempfehlen".

Ich poste hier mal nur das Script: Features und Stylesheet-Angaben bitte obigem Link entnehmen.

neues Modul erzeugen, Code ins Ausgabefeld einfügen und in Artikel einbinden:

Code: Alles auswählen

<?php
	
// ============== Form config ==============
// Daten für die Ausgabe der Fehlermeldung, 
// Überschrift, Legend, Beschreibung, Feldnamen, "Submit"-Button

	$page_info = "Unsere Website gefällt Ihnen? Dann empfehlen Sie uns doch an Freunde, Bekannte oder Kollegen weiter. Die eingegebenen Adressen werden von uns nicht an Dritte weitergegeben.";
	$hack_message = "Leider konnten wir Ihre Anfrage nicht bearbeiten, weil das Formular nicht korrekt ausgefüllt ist. Bitte überprüfen Sie folgendes Eingabefeld:";
	
	//Formular
	$form_header = "";
	$form_legend = "";
	$form_info = "";
	$form_name = "Name";
	$form_email = "E-Mail";
	$form_fname = "Name des Empfängers";
	$form_femail = "E-Mail des Empfängers";
	$form_message = "Ihre Nachricht";
	$submit_value = "Senden";
	$submit_titel = "Zum Absenden bitte nur 1x klicken";
	
	// Danke-Seite
	$thanks_message = "Vielen Dank, dass Sie sich die Zeit genommen und einige Zeilen geschrieben haben. Ihre Nachricht wurde soeben erfolgreich versendet.";
	
	// E-Mail
	$email_titel="Informative Seite über xxx";
	$mail_text="Ich habe diese Seite gefunden und möchte sie gerne weiterempfehlen.";
	$website="www.xxx.com";
    $email_from="Message von: ";
	
// ============== Ende Form config ==============

// Daten aus Form config konvertieren
    function clean_text($value = "") 
    {
        $value = htmlentities($value);
        return $value;
	}

    $page_info = clean_text($page_info);
	$hack_message = clean_text($hack_message);
	$form_legend = clean_text($form_legend);
	$form_name = clean_text($form_name);
	$form_email = clean_text($form_email);
	$form_fname = clean_text($form_fname);
	$form_femail = clean_text($form_femail);
	$form_message = clean_text($form_message);
	$submit_value = clean_text($submit_value);
	$submit_titel = clean_text($submit_titel);
	$thanks_message = clean_text($thanks_message);
	
// ============== Formularüberprüfung ==============

function cleanup ($string) {
	// falls magic quotes on
	if (get_magic_quotes_gpc()) 
	{
    	$string = stripslashes($string);
    }
	$string = addslashes($string); 
    $string = strip_tags($string);
    // "--","#";";","`","/"	Ausfiltern von SQL-Statements
 	$string = str_replace(array("--","- -","#",";","`","/","<",">","{","}","[","]"),array("","","","","","","","","","","",""),$string);
	// - mit Leerzeichen dazwischen (SQL-Kommentare!)
 	$string = preg_replace('#-\s+-#i',"",$string);
    return $string;
} // end function cleanup

function checkName ($string) {
// $name am Anfang Buchstabe; keine Zahlen und Nicht-Wortzeichen; dann
// beliebig viele Buchstaben, Bindestriche, Leerzeichen und Punkte
    if (preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\s\.\ä\ö\ü\Ä\Ö\Ü\ß])*$/", stripslashes($string)))
    {
	    return true; // OK
	}
	else
	{
	    return false; // falsche Eingabe
	}	
} // end function checkName

function checkNumeric ($string) {
// nur Zahlenr
    if (preg_match("/^\d*$/", stripslashes($string)))
    {
	    return true; // OK
	}
	else
	{
	    return false; // falsche Eingabe
	}	
} // end function checkNumeric

function checkEmail ($string) {
// $email mindestens a@a.aa
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", stripslashes($string)))
    {
	    return true; // OK
	}
	else
	{
	    return false; // falsche Eingabe
	}	
} // end function checkEmail

function checkMessage ($string) {
// $email mindestens a@a.aa
    if (preg_match("/^[^\d_]([^\W]|[\-\'\s\"\.\!\?\;\,\:\€\%\(\)\+\=\@\*\ä\ö\ü\Ä\Ö\Ü\ß])*$/", stripslashes($string)))
    {
	    return true; // OK
	}
	else
	{
	    return false; // falsche Eingabe
	}	
} // end function checkMessage


	$hack = false;  // Bool'sche Variable zeigt an, ob
                    // ein Hackingversuch vorliegt
                    	
	// Auslesen und Säubern der Daten aus $_POST
	if (sizeof($_POST) == 0) 
	{
        $yname = "";
    	$yemail = "";
    	$fname = "";
    	$femail = "";
    	$message = "";
        $submit = "";
    }
    else
    {
		$yname = $_POST["yname"];
    	$yemail = $_POST["yemail"];
    	$fname = $_POST["fname"];
    	$femail = $_POST["femail"];
    	$message = $_POST["message"];
    	$submit = $_POST["submit"];
    	
    	$yname = cleanup($yname);
    	$yemail = cleanup($yemail);
    	$fname = cleanup($fname);
    	$femail = cleanup($femail);
    	$message = cleanup($message);
    	$submit = cleanup($submit);
	
    	// Verifizieren der Daten

    	if (checkName($yname)!=1)
		{
			$hack = true; $feld = $form_name;
		}

		if (checkEmail($yemail)!=1)
		{
			$hack = true; $feld = $form_email;
		}

		if (checkName($fname)!=1)
		{
			$hack = true; $feld = $form_fname;
		}

		if (checkEmail($femail)!=1)
		{
			$hack = true; $feld = $form_femail;
		}
		
		if (checkMessage($message)!=1)
		{
			$hack = true; $feld = $form_message;
		}
		
	} // end else

// ============== Ende Formularüberprüfung ==============

?>

<?php
// beim ersten Aufruf oder unkorrekten Eingaben Formular ausgeben
if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
{
	
	// Bei inkorrekten Eingaben eine Fehlermeldung ausgeben:
	if ($hack) 
	{
?>
<p><?php echo $hack_message; ?></p>
<ul>
<li><?php echo $feld; ?></li>
</ul>
<?php
	} // end if ($hack)
	else 
	{
		if ($page_info != "")
		{
			echo "<p>" . $page_info . "</p>\n";
		}

	} // end else
	
?>

<div id="formwrap">
<div id="form">

<form id="weiterempfehlen" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<fieldset>
<?php
	echo "<legend><strong>" . $form_legend . "</strong></legend>\n";
?>

<label for="yname"><strong><?php echo $form_name; ?></strong></label><br />
<input class="inpt" type="text" id="yname" name="yname" size="38" title="<?php echo $form_name; ?>" value="<?php echo stripslashes($yname); ?>" tabindex="1" /><br /><br />

<label for="yemail"><strong><span lang="en"><?php echo $form_email; ?></span></strong></label><br />
<input class="inpt" type="text" id="yemail" name="yemail" size="38" title="<?php echo $form_email; ?>" value="<?php echo stripslashes($yemail); ?>" tabindex="2" /><br /><br />

<label for="fname"><strong><?php echo $form_fname; ?></strong></label><br />
<input class="inpt" type="text" id="fname" name="fname" size="38" title="<?php echo $form_fname; ?>" value="<?php echo stripslashes($fname); ?>" tabindex="3" /><br /><br />

<label for="femail"><strong><?php echo $form_femail; ?></strong></label><br />
<input class="inpt" type="text" id="femail" name="femail" size="38" title="<?php echo $form_femail; ?>" value="<?php echo stripslashes($femail); ?>" tabindex="4" /><br /><br />

<label for="message"><strong><?php echo $form_message; ?></strong></label><br />
<textarea class="txt" name="message" id="message" title="<?php echo $form_message; ?>" cols="36" rows="8" tabindex="5"><?php echo stripslashes($message); ?></textarea><br /><br />

<input class="senden" type="submit" name="submit" value="<?php echo $submit_value; ?>" title="<?php echo $submit_titel; ?>" tabindex="6" />

</fieldset>
</form>
</div>
</div>

<?php
} // if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))

elseif (($submit == $submit_value) AND ($hack == false))
{
	    
    $recipient="$femail";
    $subject="$email_titel";
    $header="From: " . $yemail . "\n";
    $mail_body.="$mail_text\n";
    $mail_body.="$website\n\n";
    $mail_body.= "$email_from$yname\n\n";
    $mail_body.=$message . "\n\n";

    mail($recipient,$subject,$mail_body,$header);
    
	echo "<br /><br /><p class=\"center\"><strong>" . $thanks_message . "</strong></p>\n";
}  
?>
Auch hier gilt: wer Verbesserungsvorschläge hat, bitte posten!

Viel Spaß beim Testen :D

Gruß
Thorsten

Verfasst: 13. Aug 2007, 14:25
von Boonkid
Hallo,

ist fast genau das, was ich suche. Du gibst ja im Code eine Feste Seite an, die Du weiterempfiehlst. Geht das auch irgend wie das immer die aktuelle, also die gerade beuchte Seite als Link auftaucht?

MfG

Verfasst: 30. Sep 2007, 09:35
von ThomasS
Hallo Thorsten,

vielen Dank für das Weiterempfehlungsscript. Es ist einfach einzubauen, sieht gut aus, kann leicht im Layout angepasst werden - kurz: es ist für meine Bedürfnisse perfekt!

Ich möchte Dich gern zur Sicherheit des Scripts befragen. Du hast eine Boolsche Variable eingebaut:

$hack = false; // Bool'sche Variable zeigt an, ob
// ein Hackingversuch vorliegt

Bedeutet das, dass dieses Script nicht für Spam missbraucht werden kann? Wird kein Captcha oder dergleichen mehr benötigt?

Vielen Dank und herzliche Grüße
Thomas

Verfasst: 5. Okt 2007, 19:36
von Markus.Staab
Hi,

ihr verwendet REDAXO 2.x?

Wenn nicht, bitte im R3 Forum nen Topic öffnen.

Gruß,
Markus