.
Brauche formmailer mit Dateiversendung
Einklappen
X
-
Hi.
Hab jetzt mal schnell die Formular Überprüfung mit JavaScript fertig gemacht und noch 2-3 kleine Fehler behoben. PHP übernimmt die Eingabewerte auch schon und "filtert" evtl. "bösen Code" schon mal raus:
PHP-Code:<html>
<head>
<script type="text/javascript">
function checkForm() {
var strFehler='';
if (document.forms[0].Vorname.value=="")
strFehler += "Feld 'Vorname' ist leer\n";
if (document.forms[0].Name.value=="")
strFehler += "Feld 'Nachname' ist leer\n";
if (document.forms[0].Adresse.value=="")
strFehler += "Feld 'Adresse' ist leer\n";
if (document.forms[0].PLZ.value=="")
strFehler += "Feld 'PLZ' ist leer\n";
if (document.forms[0].Ort.value=="")
strFehler += "Feld 'Ort' ist leer\n";
if (document.forms[0].Land.value=="")
strFehler += "Feld 'Land' ist leer\n";
if (document.forms[0].email.value=="")
strFehler += "Feld 'EMail' ist leer\n";
if (document.forms[0].Monat.value=="")
strFehler += "Feld 'Monat' ist leer\n";
if (document.forms[0].Jahr.value=="")
strFehler += "Feld 'Jahr' ist leer\n";
if(isNaN(document.forms[0].PLZ.value) == true)
strFehler += "Bitte nur Zahlen in dem Feld PLZ eingeben\n";
if (document.forms[0].URL.value=="")
strFehler += "Feld 'URL' ist leer\n";
if (document.forms[0].Beschreibung.value=="")
strFehler += "Feld 'Beschreibung' ist leer\n";
if (document.forms[0].NB.checked==false)
strFehler += "Feld 'Nutzungsbedingungen' wurde nicht angeklickt\n";
if (document.forms[0].Datenschutz.checked==false)
strFehler += "Feld 'Datenschutz' wurde nicht angeklickt\n";
if (document.forms[0].SB.checked==false)
strFehler += "Feld 'Bedingungen bestätigen' wurde nicht angeklickt\n";
if (!validEmail(document.forms[0].email.value)) {
strFehler += "Es wurde eine ungültige E-Mail Adresse eingegeben!\n";
}
if (strFehler.length>0) {
alert("Festgestellte Probleme: \n\n"+strFehler);
return(false);
}
function validEmail(email) {
var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
var regex = new RegExp(strReg);
return(regex.test(email));
}
}
</script>
</head>
<?php
//Formular wurde abgeschickt
if (isset($_POST["submit"])){
//SQL Injection vorbeugen
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Eingabewerte übernehmen
$_anrede = clean($_POST["Anrede"]);
$_vorname = clean($_POST["Vorname"]);
$_name = clean($_POST["Name"]);
$_firma = clean($_POST["Firma"]);
$_adresse = clean($_POST["Adresse"]);
$_plzort = clean($_POST["PLZ"]);
$_land = clean($_POST["Land"]);
$_email = clean($_POST["email"]);
$_monat = clean($_POST["Monat"]);
$_jahr = clean($_POST["Jahr"]);
$_url = clean($_POST["URL"]);
$_beschreibung = clean($_POST["Beschreibung"]);
//hier muss noch email versand + erfolgsmeldung rein
//....
}
?>
<body>
<b>Persönliche Angaben</b>
<p>
<form action="<?php echo $PHP_SELF; ?>" onsubmit="return checkForm()" enctype="multipart/form-data" method="post">
<table cellspacing="0">
<tr>
<td class="td-antrag">Anrede:*</td><td class="td-antrag">
<select name="Anrede" class="anrede">
<option></option>
<option>Frau</option>
<option>Herr</option>
</select></td></tr>
<tr>
<td class="td-antrag" width="130">Vorname:*</td><td class="td-antrag"><input name="Vorname" type="text" id="Vorname" maxlength="100" class="text"></td></tr>
<tr>
<td class="td-antrag">Name:*</td><td class="td-antrag"><input name="Name" type="text" id="Name" maxlength="100" class="text"></td></tr>
<tr>
<td class="td-antrag">Firma:</td><td class="td-antrag"><input name="Firma" type="text" id="Firma" maxlength="100" class="text"></td></tr>
<tr>
<td class="td-antrag">Adresse:*</td><td class="td-antrag"><input name="Adresse" type="text" id="Adresse" maxlength="100" class="text"></td></tr>
<tr>
<td class="td-antrag">PLZ, Ort:*</td><td class="td-antrag"><input name="PLZ" type="text" id="PLZ" maxlength="5" class="plz">,
<input name="Ort" type="text" id="Ort" maxlength="100" class="ort"></td></tr>
<tr>
<td class="td-antrag">Land:*</td><td class="td-antrag">
<select name="Land" class="land">
<option></option>
<option>Deutschland</option>
<option>Österreich</option>
<option>Schweiz</option>
</select></td></tr>
<tr>
<td class="td-antrag">e-mail:*</td><td class="td-antrag"><input name="email" type="text" id="e-mail" maxlength="100" class="text"></td></tr>
<tr>
</table>
<p>
<b>Optionen</b>
<p>
<input type="checkbox" name="SB" id="SB" class="checkbox" checked> Hiermit bestätige ich, die Bedingungen zu erfüllen.
<p>
<table cellspacing="0">
<tr>
<td class="td-antrag" width="130">Monat, Jahr*</td><td class="td-antrag">
<select name="Monat" class="monat">
<option></option>
<option>Januar</option>
<option>Februar</option>
<option>März</option>
<option>April</option>
<option>Mai</option>
<option>Juni</option>
<option>Juli</option>
<option>August</option>
<option>September</option>
<option>Oktober</option>
<option>November</option>
<option>Dezember</option>
</select>
<select name="Jahr" class="jahr">
<option></option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
<option>2021</option>
<option>2022</option>
<option>2023</option>
<option>2024</option>
<option>2025</option>
<option>2026</option>
<option>2027</option>
<option>2028</option>
<option>2029</option>
<option>2030</option>
<option>2031</option>
<option>2032</option>
<option>2033</option>
<option>2034</option>
<option>2035</option>
<option>2036</option>
<option>2037</option>
<option>2038</option>
<option>2039</option>
<option>2040</option>
<option>2041</option>
<option>2042</option>
<option>2043</option>
<option>2044</option>
</select></td></tr>
<tr>
<td class="td-antrag">URL:*</td><td class="td-antrag"><input name="URL" type="text" id="URL" class="text"></td></tr>
<tr>
<td class="td-antrag">Beschreibung:*</td><td class="td-antrag"><input name="Beschreibung" type="text" id="Beschreibung" class="text"></td></tr>
<tr>
<td class="td-antrag">Grafik:*</td><td class="td-antrag"><input name="probe" type="file" id="probe" class="file"></td></tr>
</table>
<p>
<b>Nutzungsbedingungen</b>
<p>
<input type="checkbox" name="NB" id="NB" class="checkbox" checked>
Hiermit bestätige ich, die
<a href="nb.html">Nutzungsbedingungen</a> gelesen zu haben und damit einverstanden zu sein!
<p>
<b>Datenschutzbedingungen</b>
<p>
<input type="checkbox" name="Datenschutz" id="Datenschutz" class="checkbox" checked>
Hiermit erkläre ich mich mit den
<a href="datenschutz.html">Datenschutzbedingungen</a> einverstanden.
<p>
<input type="submit" name="submit" value="Senden" class="button"> <input type="reset" value="Zurücksetzen" class="button">
</form>
</body>
</html>
Datei musste mit der Endung .php abspeichern und dann sollte das oben erwähnte schon gehen. Rest ist etwas aufwändiger. Hast du keinerlei Programmiererfahrung etc.?
mfg streunerErst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
-
Hallo,
die Funktion clean macht in dieser Form nur Sinn, wenn man die Daten in eine MySQL-Datenbank übernehmen will. Da du sie per E-Mail versenden willst, kannst du sie für Nur-Text-Mails so umschreiben:
PHP-Code:function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return $str;
}
PHP-Code:function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return htmlspecialchars($str);
}
Anja[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
Hast recht Anja...hab das aus meinem meiner Skripte übernommen und nicht bedacht*aschaufmeinhaupt*!Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Kommentar
-
Hier nochmal ein link, wie man z.B. eine Mail mit Anhang verschicken kann:
Mails mit Anhang verschicken in PHP | Webmaster Resource
Bei Fragen und/oder Problemen nochmal melden.
mfg streunerErst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Kommentar
-
Php5
Hallo
Du hattes mir einen Link gesendet, wo ich nachlesen kann,
wie man mails mit Anhang senden kann.
Aber leider steht da, daß dies nicht mehr mit PHP 5 geht.
Mein Webspace benutzt PHP 5.
Was ist da der Unterschied?
Es sollen nur *gif/*jpg/*png-Dateien mit dem Formular mitgeschickt werden können.
Ichhabe auch gelesen, daß man diese beiden Bereiche (text/datei) trennen muß.
Grüße
Syrefast
Kommentar
-
Unterschied zwischen PHP 5 und PHP 4 wird hier gut erklärt (Englisch):
PHP: Migrating from PHP 4 to PHP 5.0.x - Manual
hier ein Tutorial, wie man so ein Kontaktformular mit Mailanhang realisieren kann:
Emails mit PHP senden - HTML Email - Email mit Anhang
PHP-Grundlagen / E-Mail mit Anhang versenden - Homepage-Total.de
das müsste alle deine Fragen beantworten.
mfg streunerErst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.
"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Kommentar
Kommentar