Formular mit Upload-Funktion
Verfasst: Mi 9. Nov 2005, 15:20
Hallo
Habe versucht das Webforumlar mit Upload Funktion so zu erweitern das mehrer datein hochgeladen werden können. Allerdings lädt er immer nur 3 Datein hoch und beim Empfang überschreibt er Datei 2 und 3 und ersetzt sie durch Datei 1. Heißt es kommt 3 mal Datei 1 an aber Datei 2 und 3 behalten ihre Namen. Datei 4 hingegen wird gar nicht beachtet.
Hier mal die Codes vielleicht kann mir ja jemand helfen
Das Formular
Input
OutPut
Wäre schön wenn mir jemand helfen könnte
Gruss
Marco
Habe versucht das Webforumlar mit Upload Funktion so zu erweitern das mehrer datein hochgeladen werden können. Allerdings lädt er immer nur 3 Datein hoch und beim Empfang überschreibt er Datei 2 und 3 und ersetzt sie durch Datei 1. Heißt es kommt 3 mal Datei 1 an aber Datei 2 und 3 behalten ihre Namen. Datei 4 hingegen wird gar nicht beachtet.
Hier mal die Codes vielleicht kann mir ja jemand helfen
Das Formular
Code: Alles auswählen
<span class="Normal">
<table style="" border="0" cellpadding="1" width="100%">
<tbody>
<tr>
<td><span class="Normal">Firma:</span></td>
<td></td>
<td>###name:Firma; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Anrede:</span></td>
<td></td>
<td>###name:Anrede; type:select; valid:text; size:1; option:bitte auswählen; option:Herr; option:Frau; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Name:*</span></td>
<td></td>
<td>###name:Name; type:text; valid:text; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Straße, Nr.:*</span></td>
<td></td>
<td>###name:Strasse; type:text; valid:text; size:40; mandatory:true###
###name:Nr; type:text; valid:integer; size:5; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">PLZ, Ort:*</span></td>
<td></td>
<td>###name:PLZ; type:text; valid:integer; size:5; mandatory:true### ###name:Ort; type:text; valid:text; size:40; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Land:</span></td>
<td></td>
<td>###name:Land; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Telefon:*</span></td>
<td></td>
<td>###name:Telefon; type:text; valid:string; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">E-Mail:*</span></td>
<td></td>
<td>###name:E-Mail; type:text; valid:email; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile1" type="file"> </td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile2" type="file"> </td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile3" type="file"> </td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile4" type="file"> </td></tr>
<tr>
<td><span class="Normal">Mit der Bitte um:</span></td>
<td></td>
<td>###name:Betreff; type:select; valid:text; size:1; option:bitte
auswählen; option:ein Angebot; option:Rückruf; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Mitteilung:</span></td>
<td></td>
<td>###name:Mitteilung; type:textarea; valid:string; rows:4; cols:38###</td></tr>
<tr>
<td colspan="3">
<p align="left"><br><input value="Anfrage senden" type="submit"> <br><br><br><span class="Normal">Diese Email wird an <a href="mailto:info@xxx.de">info@xxx.de</a> versendet. Felder die mit einem "*" gekennzeichnet sind müssen ausgefüllt werden.<br><br>Vielen Dank für Ihre Nachricht.</span></p></td></tr></tbody></table></span>
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 18-10-2005 (by halousi)
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";
echo "<tr><td class=\"text_medium\">Zieladresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" class=\"text_medium\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Antwortadresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Emailname (z.B. Vorname Name):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Hintergrundfarbe bei Fehlern (z.B. red):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"30\" /></td></tr>";
echo "</table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
* Modified : 14-04-2005 by Mathias Rauh <m.rauh@rzwei.de>
18-10-2005 by halousi (jetzt mit datei-anhang)
* - Support for attachments added
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld, $uid;
function w3form() {
}
function setAktion($aktion) { // Action-Adresse in Klasse übernehmen
$this->form['aktion'] = $aktion;
}
// PRIVATE
function sendEmail() {
$uid = md5(uniqid(rand()));
$this->aufdroeseln($this->suppress('sent','Submit'));
$this->generateEmailMessage();
$header .= "MIME-Version: 1.0\n";
$header .= "X-Mailer: PHP\n";
$header .= "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
$header .= "Reply-To: {$this->email['from']['email']}\n";
$header .= "Cc: {$this->email['from']['email']}\n";
$header .= "Return-Path: {$this->email['from']['email']}\n";
if ($_FILES['userfile1']['name']) {
$datei1 = fread(fopen($_FILES['userfile1']['tmp_name1'],"r"),filesize($_FILES['userfile1']['tmp_name']));
$datei1 = chunk_split(base64_encode($datei1));
// 2
if ($_FILES['userfile2']['name'])
{
$datei2 = fread(fopen($_FILES['userfile2']['tmp_name'],"r"),filesize($_FILES['userfile2']['tmp_name']));
$datei2 = chunk_split(base64_encode($datei2));
}
// 3
if ($_FILES['userfile3']['name'])
{
$datei3 = fread(fopen($_FILES['userfile3']['tmp_name'],"r"),filesize($_FILES['userfile3']['tmp_name']));
$datei3 = chunk_split(base64_encode($datei3));
}
// 4
if ($_FILES['userfile4']['name'])
{
$datei4 = fread(fopen($_FILES['userfile4']['tmp_name'],"r"),filesize($_FILES['userfile4']['tmp_name']));
$datei4 = chunk_split(base64_encode($datei4));
}
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
$header .= "--$uid\n";
$header .= "Content-Type: text/plain\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= $this->email['message'];
$header .= "\n\n--$uid\n";
$header .= "Content-Type: {$_FILES['userfile1']['type']}; name=\"{$_FILES['userfile1']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei1\n";
$header .= "--$uid\n";
// 2
if($_FILES['userfile2']['name'])
{
$header .= "Content-Type: {$_FILES['userfile2']['type']}; name=\"{$_FILES['userfile2']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei2\n";
$header .= "--$uid\n";
}
// 3
if($_FILES['userfile3']['name'])
{
$header .= "Content-Type: {$_FILES['userfile3']['type']}; name=\"{$_FILES['userfile3']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei3\n";
$header .= "--$uid\n";
}
// 4
if($_FILES['userfile4']['name'])
{
$header .= "Content-Type: {$_FILES['userfile4']['type']}; name=\"{$_FILES['userfile4']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei4\n";
$header .= "--$uid\n";
}
mail($this->email['adresses'],$this->email['subject'],'',$header);
}
else {
$header .= "Content-type: text/plain; charset=iso-8859-1\n";
mail($this->email['adresses'],$this->email['subject'],$this->email['message'],$header);
}
}
// PRIVATE
function aufdroeseln($aufzudroeseln,$prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value,$key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
function add2Message($key,$value) {
if (strlen($key) > 15 OR strlen($value) > 34) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',15-strlen($key));
$this->email['message'] .= "$value\n";
}
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
} // end if
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key,$suppress) === false) $fields[$key] = $value;
}
return $fields;
}
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email,$name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorError'] = $color;
}
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###',$formular);
for ($i=1;$i<count($felder);$i=$i+2) {
$attributte = split(';',trim($felder[$i]));
foreach ($attributte as $attribut) {
$namewert = split(':',trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="'.$this->form['aktion'].'" method="POST" enctype="multipart/form-data">'."\n";
echo '<input type="hidden" name="sent" value="true" />';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation($formular);
$formular = split('###',$formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"],$sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute,$sent) {
$parameter = "name=\"{$attribute['name']}\"";
if ($sent && !$this->formularFeldKorrekt($attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'file':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
echo "<input type=\"file\" $parameter class=\"standard\" $style />";
break;
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
if (!empty($attribute['value'])) $value = $attribute['value'];
if (!empty($_POST["{$attribute['name']}"])) $value = $_POST["{$attribute['name']}"];
echo "<input type=\"text\" $parameter value=\"$value\" class=\"standard\" $style />";
break;
case 'password':
echo "<input type=\"password\" $parameter value=\"$value\" $style />";
break;
case 'textarea':
echo "<textarea name=\"{$attribute['name']}\" cols=\"";
echo (empty($attribute['cols']))?('20'):($attribute['cols']);
echo "\" rows=\"";
echo (empty($attribute['rows']))?('2'):($attribute['rows']);
echo "\" wrap=\"virtual\" class=\"standard\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter class=\"standard\" $style>";
for ($i=0;$i<count($attribute['option']);$i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
}
}
} else {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option>{$attribute['option'][$i]}</option>\n";
}
}
}
}
echo "</select>";
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
if ($sent) {
if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
//echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\" class=\"formcheckbox\" />attrval=";
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />attrval=";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\" class=\"formcheckbox\" />attrsel=";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />";
}
}
break;
case 'radio':
if (!empty($_POST["{$attribute['name']}"])) {
if ($_POST["{$attribute['name']}"] == $attribute['value']) {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
}
if ($sent && !$this->formularFeldKorrekt($attribute)) echo "<span style=\"color:{$this->form['colorError']};\"> Bitte ausfüllen.</span>";
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation($formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt($feld)) return false;
}
return true;
}
// PRIVATE
function success() {
$this->sendEmail();
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false;
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) return true;
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
//if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !eregi("^[ \n\r.,;!?()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
if ($edit) {
echo "<span class=\"Ueberschrift\">Formularkonfiguration</span>";
echo "<span class=\"Normal\">Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</span>";
echo "CMS_HTML[0]";
} else {
$aktion = $auth->url(); // Action-Adresse ist URL
$formular = new w3form();
$formular->setAktion("$aktion"); // Action-Adresse an Klasse übergeben
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
//$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
$formular->setEmailFrom($_POST['E-Mail'],"\"".$_POST['Name'].", ".$_POST['Vorname']."\"");
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setForm("CMS_HTML[0]");
$antwort = "<span class=\"Normal\">Vielen Dank für Ihre Anfrage, ".$_POST['Anrede']." ".$_POST['Name'].".<br />\nWir haben Ihre Nachricht erhalten und werden sie umgehend bearbeiten.<br><br>Sie erhalten eine Kopie Ihrer Anfrage an ".$_POST['E-Mail']." gesendet</span>";
$formular->setAnswer("$antwort");
$formular->process();
}
?>
Gruss
Marco