Hinweise


Antwort
 
LinkBack (3) Themen-Optionen Thema durchsuchen Bewertung: Bewertung: 4 Stimmen, 4,50 durchschnittlich.
Alt 07.09.2005, 13:07   3 links from elsewhere to this Post. Click to view. #1
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User

Einfacher Formmailer mit Reloadsperre


Da es immer wieder zu Nachfragen wegen Formmailern kommt, möchte ich hier eine einfache Variante vorstellen.

Ich habe eine einfache Formatierung per css vorgenommen, das kann natürlich alles nach Herzenslust verändert werden.

Die Form besteht nur aus 3 Feldern, Name, Email und Message.
Bei Fehlern wird der Fehlertext angezeigt und die entsprechenden Felder rot umrandet.

Folgende Pflichtangaben hab ich vorrausgesetzt:
Der Name muss aus mind. 3 Zeichen bestehen
Die Message muss aus mind. 10 Zeichen bestehen
Die Email-Adresse muss ein gültiges Format besitzen.

Hier der Quelltext, die Datei muss die Endung php bekommen.
Der Name der Datei ist im Script mit $pagename angegeben (in diesem Fall formmailer.php). Soll die Datei unter einem anderen Namen laufen, so muss die Variable entsprechend geändert werden.

Aus aktuellem Anlass habe ich noch eine Überprüfung auf Formattacken eingebaut.
HTML-Code:
<?php
/*******************************************/
/* formmailer.php                          */
/*                                         */
/* FORMMAILER mit Reloadsperre             */
/*                                         */
/* von Steffen Kamper                      */
/* erstellt für das Traumprojekt-Forum     */
/*                                         */
/*******************************************/


//erstmal Variablen definieren
$pagename="formmailer.php";
$error=$name=$email=$message="";

// an wen geht die Mail ?
$empfaenger="ich@zuhause.de";

if(isset($_POST['domail'])) {
	// es wurde abschicken gedrückt, also erst mal die Felder holen
	$name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
	$email=get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
	$message=get_magic_quotes_gpc() ? stripslashes($_POST['message']) : $_POST['message'];
	
	//Form-Attacken verhindern
	if(strpos($name,"\r\n")>0) {
		DebugAttack(substr($name,strpos($name,"\r\n"));
		$name="";
	}
	if(strpos($email,"\r\n")>0) {
		DebugAttack(substr($email,strpos($email,"\r\n"));
		$email="";
	}
	
	// wir setzen einen Flag, um Fehler zu registrieren
	$ok=true;
	//jetzt werden die Felder überprüft
	if (strlen($name)<3) // der Name muss mindestens 3 Zeichen haben
	{
		$err[0]=true; //Fehler merken
		$ok=false;    //Fehlerflag setzen
		$error.='Bitte geben Sie Ihren Namen an. (mindestens 3 Zeichen)<br>'; // Fehlertext
	}
	if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="")
	{
		//email-Adresse ist ungültig
		$err[1]=true;
		$ok=false;
		$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
	}
	if (strlen($message)<10) // die Message muss mindestens 10 Zeichen haben
	{
		$err[2]=true; //Fehler merken
		$ok=false;    //Fehlerflag setzen
		$error.='Bitte geben Sie eine Message von mindestens 10 Zeichen ein.<br>'; // Fehlertext
	}
	// ist alles ok ? dann senden
	if($ok)
	{
		//Mail komponieren
		$mailheader="From: $name <$email>\r\nX-Mailer: PHP/" . phpversion(). "\r\nX-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\nContent-Type: text/plain; charset=ISO-8859-1;";
		$subject="Webseiten-Nachricht von $name";
		if (@mail($empfaenger, $subject, $message, $mailheader)) {
			//Alles ok, Seite neuladen (Reloadsperre)
			header("Location:$pagename?success");
		} else {
			$error='<h3>Fehler beim Mailen aufgetreten</h3>';
		}
	} else {
		// Fehler ausgeben
		$error='<h3>Fehler bei der Eingabe</h3><p class="error">'.$error.'</p>';
	}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Form-Mailer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body {background:#fff;}
form {width:360px;}
label {display:block;}
input, textarea {font-size:11px;}
textarea {width:360px;height:240px;}
input.button {border:1px solid #000;background:#ffcc00;margin-top:12px;}
.fehler {border:1px solid red;}
p.error {color:red;}
</style>
</head>

<body>
<h1>Form-Mailer mit Reloadsperre</h1>
<?php
if($error!="") echo $error;
if(isset($_GET['success'])) {
	//Erfolgsnachricht ausgeben
	echo '<p>Vielen Dank für Ihre Nachricht. Sie wurde erfolgreich verschickt.</p>';
} else {
	// Form ausgeben
?>

<form action="<?php echo $pagename;?>" method="post" name="formmailer">
<fieldset><legend>Mail schreiben</legend>
<label for="name">Name</label>
<input type="Text" value="<?php echo $name;?>" maxlength="60" size="50" name="name" <?php if(isset($err[0])) echo  'class="fehler"';?>>
<label for="email">Email-Adresse</label>
<input type="Text" value="<?php echo $email;?>" maxlength="80" size="50" name="email" <?php if(isset($err[1])) echo  'class="fehler"';?>>
<label for="comment">Message</label>
<textarea cols="10" rows="10" name="message" <?php if(isset($err[2])) echo  'class="fehler"';?>><?php echo $message;?></textarea>
<input type="reset" class="button" value="zurücksetzen" name="reset">
<input type="submit" class="button" value="abschicken" name="domail">
</fieldset>
</form>
<?php
}

function DebugAttack($s) {
	//Hier den Pfad für die Protokolldatei einfügen, wenn kein Protokoll erwünscht ist, einfach auskommentieren
	$fp=fopen("/tmp/attack.txt","ab");
	fwrite($fp,$s);
	fclose($fp);
}
?>

</body>
</html>
und hier das ganze noch als Download.

Viel Spass beim mailen
Angehängte Dateien
Dateityp: zip formmailer.zip (2,0 KB, 1799x aufgerufen)
__________________

TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer

Geändert von steffenk (15.09.2005 um 10:55 Uhr).
steffenk ist offline   Mit Zitat antworten


Alt 06.03.2006, 17:25   #2
g0u
TP-Junior
 
Registriert seit: Feb 2006
g0u macht alles soweit korrekt
Hallo,

Parse error: syntax error, unexpected ';' in /is/htdocs/......content/formmailer.php on line 28


gruss
g0u
g0u ist offline   Mit Zitat antworten
Alt 06.03.2006, 20:09   #3
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
bitte die aktuelle Version benutzen:
http://www.dislabs.de/index.php?ac=labor&sub=5&id=16
__________________

TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 07.03.2006, 09:38   #4
g0u
TP-Junior
 
Registriert seit: Feb 2006
g0u macht alles soweit korrekt
ah, danke

habe den Fehler vom "alten" script gefunden, da fehlen bei 2 Zeilen jeweils eine ) .... ich hatte dann versucht Felder hinzuzufügen, für eine adresse, mit wohnort, usw. allerdings hatte das nicht geklappt :/ muss dazu sagen das ich ein Anfänger bin.

Kannst du kurz und knapp erklären, was ich wo hinzufügen muss, um neue Felder zu bekommen?

Findes das Script übrigens ziemlich gut bin lange rumgesurft bis ich ein passendes gefunden hab

gruss
g0u
g0u ist offline   Mit Zitat antworten
Alt 07.03.2006, 09:48   #5
TP-Moderator
 
Benutzerbild von Peter
 
Registriert seit: Nov 2001
Ort: Vienna
Peter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKEPeter ist ein richtiges Arbeitstier - DANKE
Hallo,

Habs ja jetzt nicht ausprobiert. Aber Reloadsperre "sehe" ich keine.
__________________
_________-- - adicto otra vez - --
(¯`·.¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸..¸¸.·´¯`·.¸¸.·`¯)
Unterwasserrugby - der dreidimensionale Sport
Peter ist offline   Mit Zitat antworten
Alt 12.03.2006, 14:52   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Die Reloadsperre ist die header-Anweisung - es wird eine neue Seite geladen, dadurch ist ein erneutes Absenden per Refresh nicht möglich

@gOu: einfach im Formular die Felder hinzufügen, beim auslesen die entsprechende Variable benutzen (wie
$name=get_magic_quotes_gpc() ? stripslashes($_POST['name']) : $_POST['name'];
)

und die Variable im Messagetext der Mail hinzufügen.
__________________

TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 15.03.2006, 08:37   #7
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Was sind denn eigentlich Form-Attacken? Und was bewirkt oder tut das script:

PHP-Code:
//Form-Attacken verhindern
    
if(strpos($name,"\r\n")>0) {
        
DebugAttack(substr($name,strpos($name,"\r\n"));
        
$name="";
    }
    if(
strpos($email,"\r\n")>0) {
        
DebugAttack(substr($email,strpos($email,"\r\n"));
        
$email="";
    } 
Paco ist offline   Mit Zitat antworten
Alt 15.03.2006, 11:03   #8
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris lebt für das TP und seine UserBoris lebt für das TP und seine UserBoris lebt für das TP und seine UserBoris lebt für das TP und seine UserBoris lebt für das TP und seine UserBoris lebt für das TP und seine UserBoris lebt für das TP und seine User
Zitat:
Zitat von Paco
Was sind denn eigentlich Form-Attacken? Und was bewirkt oder tut das script:
Steht hier:
http://www.traum-projekt.com/forum/1...injection.html
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 15.03.2006, 12:14   #9
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Danke.
Paco ist offline   Mit Zitat antworten
Alt 15.03.2006, 23:46   #10
g0u
TP-Junior
 
Registriert seit: Feb 2006
g0u macht alles soweit korrekt
Ich hab da ein anderes großes Problem mit dem Script.

Ich benutze auf meiner Seite ein kleines php Script um die gewünschten Unterseiten, "in der Seite" anzuzeigen:

PHP-Code:
          <? if(file_exists("content/" $_GET['site'] . ".php")){ 
               include(
"content/" $_GET['site'] . ".php"); 
             }elseif(
$_GET['site'] == ""){ 
               include(
"content/start.php"); 
             }else{ 
               echo 
"<div class=\"error\">Die Datei wurde nicht gefunden</div><br />"
               include(
"content/start.php"); 
             } 
          
?>
Wenn ich den Formmailer nun über http://www.name.de/index.php?site=bestellung aufrufe zeigt er mir den Mailer zwar an, nur sobald ich eine Mail abschicken will, kommt die Meldung "Dei Seite kann nicht angezeigt werden" und in der Adresszeile steht "http://www.name.de/formmailer.php".

Gibts dafür irgendwie eine einfache Lösung?
Das ich vielleicht irgendwo im Code eine Kleinigkeit änder?

Ich habs selber schon versucht, nur dabei kamen so einige php Fehler raus

Würd mich über eine Hilfestellung freuen.


Gruss
g0u
g0u ist offline   Mit Zitat antworten
Alt 16.03.2006, 10:45   #11
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
klar, ist nur eine Kleinigkeit:

PHP-Code:
$pagename="index.php?site=bestellung"
__________________

TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 16.03.2006, 10:55   #12
g0u
TP-Junior
 
Registriert seit: Feb 2006
g0u macht alles soweit korrekt
damit ist es leider nicht getan, hab es so auch schon selber ausprobiert. Bekomme folgenden Fehler:

PHP-Code:
WarningCannot modify header information headers already sent by (output started at /is/htdocs/38289/www..../index.php:8in 
/is/htdocs/38289/www..../content/formmailer.php on line 71 

und das steht in Zeile 71

PHP-Code:
header("Location:$pagename?success"); 

Geändert von g0u (16.03.2006 um 11:01 Uhr).
g0u ist offline   Mit Zitat antworten
Alt 16.03.2006, 11:06   #13
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
dann hast Du vorher schon irgendeine Ausgabe - das darf nicht. Setz den php-Teil ganz an den Anfang.

Wenn Du includest, darf auch in index.php vorher nichts ausgegeben werden.
__________________

TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 16.03.2006, 11:13   #14
g0u
TP-Junior
 
Registriert seit: Feb 2006
g0u macht alles soweit korrekt
das einzigste was ich an php in meiner index.php hab, ist der oben angegebene code.

Was muss ich denn dann wo ändern? Sorry wenn ich so blöd frage
g0u ist offline   Mit Zitat antworten
Alt 16.03.2006, 11:23   #15
TP-Moderator
 
Benutzerbild von Cybergreek
 
Registriert seit: Nov 2005
Ort: Köln
Cybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von St@eff.en
Setz den php-Teil ganz an den Anfang.
^^ Das da

Vor dem php-Teil ("<?php") darf auch kein Leerzeichen oder sonstwas stehen...
__________________
Grüße vom Griechen,
Cybergreek!

WikiDict.de - Das Wiki-Wörterbuch
Cybergreek ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
Einfacher Formmailer mit Reloadsperre [Script] Einfacher Formmailer mit Reloadsperre
« Umfrage mit PHP selbst für Leute die sich 0 auskennen! | - »

LinkBacks (?)
LinkBack to this Thread: http://www.traum-projekt.com/forum/54-traum-scripts/70806-einfacher-formmailer-mit-reloadsperre.html
Erstellt von For Type Datum
hilfe beimKontaktformular - Adobe UserGroup Dreamworker.de This thread Refback 16.01.2010 00:44
Kontaktformular unsicher? - Forum: phpforum.de This thread Refback 15.05.2009 11:30
Mehrfaches absenden durch Browserrefresh verhindern - php.de This thread Refback 11.08.2008 15:36

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67