Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
blubb
Beiträge: 33
Registriert: 13. Jul 2005, 13:39
Wohnort: Hannover

Weiterempfehlen-Formular - valide, weitgehend barrierefrei

17. Jul 2005, 18:55

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

Benutzeravatar
Boonkid
Beiträge: 100
Registriert: 23. Dez 2005, 09:09

13. Aug 2007, 14:25

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

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

30. Sep 2007, 09:35

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

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

5. Okt 2007, 19:36

Hi,

ihr verwendet REDAXO 2.x?

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

Gruß,
Markus

Zurück zu „Allgemeines [R2]“