php.de

Zurück   php.de > Lösungen durch Skripte > Scriptbörse

Scriptbörse PHP Lösungen für nen schmalen Taler

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.02.2011, 16:30  
Benutzer
 
Registriert seit: 28.07.2010
Beiträge: 41
PHP-Kenntnisse:
Anfänger
xVEGAx befindet sich auf einem aufstrebenden Ast
Standard E-Mail-Formular (Sicherung)

Hi Jungs/Mädels,

ich benutze ein E-Mail-Formular, welches an Sicherheit nicht wirklich viel zu bieten hat. Zurzeit überprüft es nur, ob die Pflichfelder auch Inhalte haben (was aber auch schon Leerzeichen sein können). Es überprüft nicht einmal, ob eine gültige E-Mail-Adresse eingegeben wurde.

Die einzige etwas bessere Sicherheit ist ein leeres unsichtbares (durch CSS) Feld, welches nicht gefüllt werden darf und dann eben durch PHP abgefragt wird. Das hilft gegen ein paar Bots.

Ich poste hier mal das komplette Skript. Kann mir jemand von euch das E-Mail-Formular wesentlich sicherer machen (ohne gleich ein Captcha einzubauen und Javascript zu verwenden)? Einen Zehner würde ich für denjenigen, der den "Job" erhält, springen lassen - per Paypal oder Überweisung. Es ist ja keine superkomplexe Arbeit.

bisheriges Skript:
Code:
<?php include('../../cookie.php'); ?>
<?php
if (!empty($_POST['url'])) {
    die('Spam');
}

//Zuerst die Abfrage, ob an der URL "?senden" hängt
if (isset($_GET['senden'])){
	
	//Dann werden die Daten auf Vollständigkeit geprüft:
	if (($_POST['vorname'] != '') && ($_POST['name'] != '') && ($_POST['@dresse'] != '') && ($_POST['thema'] != '') && ($_POST['botschaft'] != '')){       

	//Wenn alle erforderlichen Daten eingegeben wurden, werden die Benutzerangaben (falls vorhanden) in Variablen geschrieben
	$vorname = $_POST['vorname'];
	$nachname = $_POST['name'];
	$email = $_POST['@dresse'];
	if (empty($_POST['unternehmen'])){$unternehmen = "- nicht angegeben -";} else {$unternehmen = $_POST['unternehmen'];}
	if (empty($_POST['ort'])){$ort = "- nicht angegeben -";} else {$ort = $_POST['ort'];}
	if (empty($_POST['tel'])){$telefon = "- nicht angegeben -";} else {$telefon = $_POST['tel'];}
	$thema = $_POST['thema'];
	$nachricht = $_POST['botschaft'];

	//Dann werden Die Daten für die mail() Funktion in Variablen geschrieben
	$an = "bla@bla.com";
	$von = "Kontaktformular <$an>";
	$betreff = "E-Mail von www.bla.com";
	$ip = $_SERVER['REMOTE_ADDR'];
	$header = "From: $von\r\n";
	$header .= "Subject: $betreff\r\n";
	$header .= "Content-Type: text/html\r\n";
	$header .= "MIME-Version: 1.0\r\n";
	$msg = "E-Mail von:\r\n<br />
	Name: $vorname $nachname\r\n<br />
	E-Mail: $email\r\n<br />
	Unternehmen: $unternehmen\r\n<br />
	Ort: $ort\r\n<br />
	Telefon: $telefon\r\n\r\n<br />
	IP: $ip\r\n<br /><br />
	Betreff: $thema\r\n<br />
	Nachricht: $nachricht\r\n<br />
	---";
	
	//Falls es beim Senden der Email einen Fehler gibt, wird dies dem Besucher signalisiert
	if (mail($an, $betreff, $msg, $header)){
	$rueckgabe = 'Ihre Anfrage wurde versandt. Vielen Dank für Ihr Interesse. <br />';
	}else{
		$rueckgabe = 'Beim Senden der Nachricht ist ein Fehler aufgetreten. <br />';
	}
} else {
		$rueckgabe = 'Bitte alle Felder, die mit * markiert sind, ausfüllen!';
}
}else{
	$rueckgabe = '';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.bla.com</title>
<style type="text/css">
@import url("../../<?php echo $style?>.css");
</style>
</head>

<body>
<div id="titelwrap">
<div id="titel">
<h1><a href="../../" target="_parent">Bla</a></h1>
</div>
</div>
<div id="menu">
<ul class="navi">
<li class="drop"><a href="../portfolio">PORTFOLIO</a>
	<ul>
	<li><a href="../portfolio/x.php">MODE</a></li>
	<li><a href="../portfolio/y.php">MENSCHEN</a></li>
	<li><a href="../portfolio/z.php">SZENERIE</a></li>
	</ul>
</li>
<li><a href="../clients">KLIENTEL</a></li>
<li><a href="../person">PERSON</a></li>
<li><a href="../contact">KONTAKT</a></li>
<li><a href="../imprint">IMPRESSUM</a></li>
<li><a class="last" href="../ecard">ECARD</a></li>
</ul>
<div id="farbmenue">
<p>
<a href="<?php echo $_SERVER['SCRIPT_NAME']?>?style=style_default">1</a> : 
<a href="<?php echo $_SERVER['SCRIPT_NAME']?>?style=style_rw">2</a> : 
<a href="<?php echo $_SERVER['SCRIPT_NAME']?>?style=style_ws">3</a> : 
<a href="<?php echo $_SERVER['SCRIPT_NAME']?>?style=style_mg">4</a>
</p>
</div>
</div>
<div id="wrap">
<div id="themabild" class="shadow">
<?php
$bilder = glob( "../../titelbilder/*.jpg" );
shuffle( $bilder );
$bildinfo = getimagesize( $bilder[0] );
echo '<img src="' .$bilder[0]. '" ' .$bildinfo[3]. ' alt="" />';
?>
</div>
<div id="inhalt">
<h2>.: KONTAKT</h2>
<form name="form" action="?senden" method="post">
<div id="kf_1">
<p>Vorname *<br /><input type="text" name="vorname" value="<?php if (isset($_REQUEST['vorname'])) echo htmlspecialchars($_REQUEST['vorname']); ?>" size="35" maxlength="50" /><br />
Nachname *<br /><input type="text" name="name" value="<?php if (isset($_REQUEST['name'])) echo htmlspecialchars($_REQUEST['name']); ?>" size="35" maxlength="50" /><br />
E-Mail *<br />        <input type="text" name="@dresse" value="<?php if (isset($_REQUEST['@dresse'])) echo htmlspecialchars($_REQUEST['@adresse']); ?>" size="35" maxlength="50" /><br /> 
Unternehmen<br />          <input type="text" name="unternehmen" value="<?php if (isset($_REQUEST['unternehmen'])) echo htmlspecialchars($_REQUEST['unternehmen']); ?>" size="35" maxlength="50" /><br /> 
Ort<br />          <input type="text" name="ort" value="<?php if (isset($_REQUEST['ort'])) echo htmlspecialchars($_REQUEST['ort']); ?>" size="35" maxlength="50" /><br /> 
Telefon<br />          <input type="text" name="tel" value="<?php if (isset($_REQUEST['tel'])) echo htmlspecialchars($_REQUEST['tel']); ?>" size="35" maxlength="50" /><br /></p>
<p>* Pflichtfeld</p>
</div>
<div id="kf_2">
<p>Betreff *<br />        <input type="text" name="thema" value="<?php if (isset($_REQUEST['thema'])) echo htmlspecialchars($_REQUEST['thema']); ?>" size="35" maxlength="50" />          <br /> 
  Nachricht *<br />          <textarea name="botschaft" cols="40" rows="11"></textarea><br /><br /></p>
</div>
<div id="kf_3">
<input type="submit" name="senden" value="senden" alt="senden" class="btn" /><br />
<input type="text" name="url" class="pro">
<p>&nbsp;</p>
<p><?php echo $rueckgabe; ?></p>
</div>
</form>
</div>
</div>

</body>
</html>
xVEGAx ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.02.2011, 16:41  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wesentlich sicherer bekommst Du das ohne die genannten Möglichkeiten nicht. Du musst hier auch unterscheiden zwischen

- Validierung: Prüfung von Fehleingaben, ungültigen oder fehlenden Angaben - hierzu musst Du erstmal genau die möglichen Werte, die Menge der Pflichfelder etc. definieren
- Spam-Schutz: Anti-Bot-Maßnahmen - Captcha, Zeitprüfung, Leerfeldprinzip/Honeypot, Javascript
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 08.02.2011, 19:56  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Bei der Höhe des ausgesetzten Honorars wirst du sicherlich keinen Spezialisten anlocken.

Auf den ersten Blick kann man sehen, dass du POST-Daten ungeprüft in den Mailheader nimmst und dass du mail() mit selbstgebastelten Mime-Headern verwendest. Hier etwas Lesestoff:

Die 3 E-Postel und die Freuden des Briefverkehrs
http://www.php.de/adventskalender-20...fverkehrs.html (13: Die 3 E-Postel und die Freuden des Briefverkehrs)

http://swiftmailer.org/
http://sourceforge.net/projects/phpmailer/
http://pear.php.net/package/Mail/

Mail() ist tot, es lebe mail()
http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 12.02.2011, 12:34  
Benutzer
 
Registriert seit: 28.07.2010
Beiträge: 41
PHP-Kenntnisse:
Anfänger
xVEGAx befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Wesentlich sicherer bekommst Du das ohne die genannten Möglichkeiten nicht. Du musst hier auch unterscheiden zwischen

- Validierung: Prüfung von Fehleingaben, ungültigen oder fehlenden Angaben - hierzu musst Du erstmal genau die möglichen Werte, die Menge der Pflichfelder etc. definieren
- Spam-Schutz: Anti-Bot-Maßnahmen - Captcha, Zeitprüfung, Leerfeldprinzip/Honeypot, Javascript
nun, mir ging es hauptsächlich um den spam-schutz, aber ja, die validierung gehört natürlich auch dazu. ich glaube, das leerfeldprinzip/den honeypot habe ich bereits drin, wenn ich es richtig gemacht habe. captcha wollte ich vermeiden, weil das immer etwas stressig ist.
xVEGAx ist offline   Mit Zitat antworten
Alt 12.02.2011, 12:37  
Benutzer
 
Registriert seit: 28.07.2010
Beiträge: 41
PHP-Kenntnisse:
Anfänger
xVEGAx befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wolla Beitrag anzeigen
Bei der Höhe des ausgesetzten Honorars wirst du sicherlich keinen Spezialisten anlocken.

Auf den ersten Blick kann man sehen, dass du POST-Daten ungeprüft in den Mailheader nimmst und dass du mail() mit selbstgebastelten Mime-Headern verwendest.
mag sein, aber sind wir mal ehrlich, das ist auch keine spezialistenarbeit oder? für jeden erfahrenen php-user ist das eine aufgabe von 15 min, denke ich. es liegt alles quasi schon vor und muss nur angepasst/verbessert werden, mal abgesehen von der mail()-/php-klasse-geschichte und selbst diese gibt es (fast) fertig, wie ich nun gelesen habe.

daher fragte ich ja, ob es jemand kann und machen möchte. ich persönlich möchte mich nicht hinein arbeiten, sondern es einfach nur funktionierend haben/sehen.
xVEGAx ist offline   Mit Zitat antworten
Alt 12.02.2011, 13:23  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich darf dir widersprechen. Solche Dinge laufen manchmal auch auf folgendes hinaus:

30 min erklären lassen, was man überhaupt machen soll.
30 min Testumgebung auf eigenem Server schaffen, weil der Kunde einen nicht auf den Originalserver lässt.

20 min Programmieren, 10 min mail schreiben mit Ergebnis als attachement und Erklärung dazu verfassen, Rechnung schreiben und mitsenden.

Email lesen nach Meldung "funzt nicht". Auf der Seite nachschauen und feststellen, dass die Arbeit gar nicht eingebaut wurde (falsch FTPt) und antworten: 30 min.

3 Emails mit Rückfragen beantworten: 30 min.

5 mal Bank kontrollieren und feststellen, dass nichts gekommen ist. 3 Emails schreiben und fragen, wo die Kohle bleibt. 3 mal lesen, dass ...
"Verlorengegangene Rechnung" neu mailen.

Macht alles in allem 3 Stunden Arbeit. Und das ist noch vorsichtig kalkuliert.

Wenn es ums mailen geht, dann muss man dazu vielleicht noch 3 Tage warten, bis der Kunde Mailpostfächer angelegt hat und sich von seinem Hoster hat erklären lassen, wie das geht.

Das alles mag für dich und diese Sache nicht zutreffen, aber man muss es halt immer mitkalkulieren. Daher mein Einwand, dass du mit 10 Euro nicht unbedingt jemanden anlockst, der sich beruflich mit der Materie beschäftigt.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 14.02.2011, 10:58  
Benutzer
 
Registriert seit: 28.07.2010
Beiträge: 41
PHP-Kenntnisse:
Anfänger
xVEGAx befindet sich auf einem aufstrebenden Ast
Standard

haha, ich verstehe, du musst wirklich eine menge schlechte erfahrungen gesammelt haben.

1. ich habe schon einen unter-ftp-account angelegt (sogar phpmailer ist schon drauf), obwohl man das ja auf jedem standardserver mit php testen kann.

2. ich bin seit meinem 19. lebensjahr selbständig trotz studium und sonstigem bildungs-/arbeitsweg. bezahlung ist mir nicht fremd. rechnung wäre bei solch einem kleinen auftrag ebenso nicht nötig gewesen, da das auch unter taschengeld oder künstlerauftrag ablaufen kann (würdest du an meiner website erkennen). außerdem kann man heutzutage auch sekundenschnell per paypal überweisen, wenn man diese sicherheit haben möchte. mache ich oft und biete ich immer an.

3. bei einem e-mail-formular kann nicht so extrem viel falsch gehen. das skript an für sich funktioniert ja schon perfekt (jetzt mit mail()). erweitern macht es nicht unbedingt kaputt, wenn der programmierer weiß, was er tut. ich meine, sogar der phpmailer, der angelegt ist (er wurde bislang nur für mein ecard-feature verwendet), funktioniert bereits.

4. die e-mail-fächer liegen natürlich längst vor, sonst könnte das formular ja nicht bereits funktionieren, aber das erklärt schon 3.

ich verstehe aber deinen einwand bezüglich stress/sorgen.
xVEGAx ist offline   Mit Zitat antworten
Alt 14.02.2011, 17:43  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
obwohl man das ja auf jedem standardserver mit php
Ein „Standardserver“ im PHP-Umfeld gehört in die Schublade „Mythen und Einhörner“. So etwas gibt es nicht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mail Formular Hilfe dringend erforderlich h.punkt Scriptbörse 2 25.03.2010 17:14
PHP Formular mail csh PHP Tipps 2009 3 25.11.2009 16:36
[Erledigt] Formular senden mit mail(); martwd05 PHP Tipps 2009 8 16.04.2009 11:32
[Erledigt] Formular: Mail kann mehrmals gesendet werden Johnson PHP Tipps 2008 13 11.11.2008 21:34
Formular - Normaler Text im Mail? Toby PHP Tipps 2008 6 31.10.2007 13:32
Fehler suche Mail Formular PHP Tipps 2005-2 7 11.08.2005 23:26
Mail Formular mit Bilder als Anhang PHP Tipps 2005-2 1 29.06.2005 18:21
Mail Funktion mit Variablen aus einem Formular PHP Tipps 2005 2 17.03.2005 14:21
[Erledigt] HTML Formular durch PHP Code per Mail versenden PHP Tipps 2004-2 3 12.11.2004 11:48
Formular mit Attachment(doc, pdf, zip...)als Mail versenden PHP-Fortgeschrittene 3 04.11.2004 14:58
Formular als Mail versenden? stefan-miti PHP Tipps 2004 4 19.10.2004 18:14
[Erledigt] Formular via Mail über Php senden? PHP Tipps 2004 3 21.07.2004 14:09
Formular mit mail() verschicken ?! bitte um Hilfe PHP Tipps 2004 48 11.07.2004 19:46
PHP Mail Formular PHP Tipps 2004 1 09.07.2004 11:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php formular mit sicherung, telefonnummer php email formular, php echo href email, htmlspecialchars, swiftmailer rückgabe, <form action=\textarea.php\> <p> thema: <input name=\thema\ type=\text\ /><br/> text:<br>, formblatt datensicherung beim kunden, php formular sicher, php e mail \\n

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum