Verfasst: Fr 6. Mai 2005, 19:34
@OAA
Tausend Dank! Funzt hervorragend. Hatte ich überlesen.
Gruß
Markus
Tausend Dank! Funzt hervorragend. Hatte ich überlesen.
Gruß
Markus
Das Diskussionsforum zum Open Source Content Management System
https://forum.contenido.org/
Das hoert sich danach an, als ob in zwei Modulen auf einer Seite dieselben Variablennamen benutzt werden, z.B. 2x CMS_HTML[1]. Du musst bei einem der Module den Namen aendern, also in Klammern eine andere Zahl benutzen.JSommer hat geschrieben:das einzige was ist: in dem array, wo eigentlich das stehen sollte, was man beim absenden zu sehen bekommt, steht der inhalt der text moduls drin - also der eigentlich seitencontent ... was mach ich da falsch? ändere ich den inhalt im formularcontainer, ändert sich auch der inhalt in container3also wo eben das text-modul drinsteht... any tipps?
Warum? versteh das nicht...Warning: Invalid argument supplied for foreach() in /var/www/weba16/html/home/cms/front_content.php(567) : eval()'d code on line 96
Code: Alles auswählen
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;
Code: Alles auswählen
function add2Message($key,$value) {
if ($key == 'y' or $key == 'x'){
$this->email['message'] .= "";
}
else{
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
}
else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',25-strlen($key));
$this->email['message'] .= "$value\n";
}
}
}Code: Alles auswählen
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
case 'checkbox':
case 'radio':
case 'textarea':
if (!empty($attribute['id'])) $parameter .= " id=\"{$attribute['id']}\"";
break;
}
Code: Alles auswählen
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
$namewert[1] = $container[$match[1]];
}Code: Alles auswählen
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
$namewert[1] = $container[intval($match[1])];
}Code: Alles auswählen
$formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************/
?>
<table cellspacing="0" cellpadding="10" border="0">
<!-- <tr style="vertical-align: top;"> -->
<tr>
<td class="text_medium" style="vertical-align: top;">Empfänger-E-Mail-Adresse (alias@mydomain.com):</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Betreff:</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Absender-E-Mail-Adresse (alias@mydomain.com):<br>
(frei lassen, wenn E-Mail-Adresse des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Absendername (z. B. Vorname Name):<br>
(frei lassen, wenn Name des Formularbenutzers verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[3]" value="CMS_VALUE[3]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Hintergrundfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[4]" value="CMS_VALUE[4]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Rahmenfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top;"><input type="text" name="CMS_VAR[5]" value="CMS_VALUE[5]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Schriftfarbe bei Fehlern (z. B. red oder #FF0000):<br>
(frei lassen, wenn die Standardfarbe verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;"><input type="text" name="CMS_VAR[6]" value="CMS_VALUE[6]" size="30" /></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">Fehlermeldungen anzeigen bei Fehlern:</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[7]" value="yes"<?php if ('yes' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[7]" value="no"<?php if ('no' == "CMS_VALUE[7]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
CSS-Schriftformatierungs-Attribute der Fehlermeldungen<br>
(z. B. style="font-weight: bold; color: #FF0000;" oder class="errorMessage"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[8]" value="CMS_VALUE[8]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Übermittelte Daten auf Bestätigungsseite anzeigen:
</td>
<td class="text_medium" style="vertical-align: top;">
<input type="radio" name="CMS_VAR[10]" value="yes"<?php if ('yes' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
ja<br>
<input type="radio" name="CMS_VAR[10]" value="no"<?php if ('no' == "CMS_VALUE[10]") { echo ' checked="checked"'; } ?>>
nein
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabelle<br>
(z. B. style="border: none;" oder class="dataTable"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[11]" value="CMS_VALUE[11]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[12]" value="CMS_VALUE[12]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für Tabellenzeilen<br>
(z. B. style="height: 25px;" oder class="tableRow"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[13]" value="CMS_VALUE[13]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[14]" value="CMS_VALUE[14]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für linke Tabellenzellen (<th>)<br>
(z. B. style="padding-right: 20px; padding-bottom: 15px;" oder class="leftTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%;">
class=" <input type="text" name="CMS_VAR[15]" value="CMS_VALUE[15]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[16]" value="CMS_VALUE[16]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top; border-bottom: 1px solid #747488;">
Bestätigungsseite: CSS-Schriftformatierungs-Attribute für rechte Tabellenzellen (<td>)<br>
(z. B. style="padding-bottom: 15px;" oder class="rightTableColumn"):<br>
(frei lassen, wenn die Standardformatierung verwendet werden soll)
</td>
<td class="text_medium" style="vertical-align: top; line-height: 250%; border-bottom: 1px solid #747488;">
class=" <input type="text" name="CMS_VAR[17]" value="CMS_VALUE[17]" size="30" /> "<br>
style=" <input type="text" name="CMS_VAR[18]" value="CMS_VALUE[18]" size="30" /> "
</td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Standardtext, der in der E-Mail vor den Daten eingefügt wird:
</td>
<td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[19]" cols="30" rows="5">CMS_VALUE[19]</textarea></td>
</tr>
<tr>
<td class="text_medium" style="vertical-align: top;">
Standardtext, der in der E-Mail nach den Daten eingefügt wird:
</td>
<td class="text_medium" style="vertical-align: top;"><textarea name="CMS_VAR[20]" cols="30" rows="5">CMS_VALUE[20]</textarea></td>
</tr>
</table>
<?phpCode: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.mod2.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 15-10-2004
* Modified : 15-10-2004
************************************************
* Modified by Jan-Christoph Ihrens 2005-06-27
* See http://www.contenido.org/forum/viewtopic.php?t=5066&postdays=0&postorder=asc&start=165
* (Nickname: Enigma)
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
// hier die Namen der Formularfelder eintragen, die nicht mit in die eMail
// aufgenommen werden sollen (z. B. Submit-Button, versteckte Formularfelder, die
// nur internen Zwecken dienen etc.)
$this->aufdroeseln($this->suppress('sent', 'submit', 'submit_form', 'form_submit', 'submit_button', 'button_submit'));
$this->generateEmailMessage();
mail($this->email['adresses'], $this->email['subject'], $this->form['mailText1'].$this->email['message'].$this->form['mailText2'], "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/".phpversion());
}
// 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) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ', 25 - strlen($key));
$this->email['message'] .= "$value\n";
}
*/
$max_line_length = 75;
$indentation = 30;
if ('date_time' == $key) {
$value = date('d.m.Y, H:i');
}
$this->email['message'] .= $key.':'.CCS_LF;
if ((strlen($value) <= $max_line_length - $indentation) and (strpos($value, CCS_LF) === false)) {
$this->email['message'] .= str_repeat(' ', $indentation);
}
$this->email['message'] .= $value.CCS_LF.CCS_LF;
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) {
foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key, $value);
}
}
}
// 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['colorBackgroundError'] = $color;
}
// PUBLIC
function setBorderError($color) {
$this->form['colorBorderError'] = $color;
}
// PUBLIC
function setFontError($color) {
$this->form['colorFontError'] = $color;
}
// PUBLIC
function setMessageError($activate) {
$this->form['showErrorMessage'] = (trim($activate) == 'yes');
}
// PUBLIC
function setMessageCssClassError($cssClass) {
$this->form['errorMessageCssClass'] = trim($cssClass);
}
// PUBLIC
function setMessageCssStyleError($cssStyle) {
$this->form['errorMessageCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setShowDataStatus($status) {
$this->form['showData'] = (trim($status) == 'yes');
}
// PUBLIC
function setConfirmationDataTableCssClass($cssClass) {
$this->form['ConfirmationDataTableCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTableCssStyle($cssStyle) {
$this->form['ConfirmationDataTableCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTrCssClass($cssClass) {
$this->form['ConfirmationDataTrCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTrCssStyle($cssStyle) {
$this->form['ConfirmationDataTrCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataThCssClass($cssClass) {
$this->form['ConfirmationDataThCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataThCssStyle($cssStyle) {
$this->form['ConfirmationDataThCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setConfirmationDataTdCssClass($cssClass) {
$this->form['ConfirmationDataTdCssClass'] = trim($cssClass);
}
// PUBLIC
function setConfirmationDataTdCssStyle($cssStyle) {
$this->form['ConfirmationDataTdCssStyle'] = trim($cssStyle);
}
// PUBLIC
function setMailText1($text) {
$text = trim($text);
if ('' != $text) {
$text .= CCS_LF.CCS_LF.CCS_LF.CCS_LF;
}
$this->form['mailText1'] = $text;
}
// PUBLIC
function setMailText2($text) {
$text = trim($text);
if ('' != $text) {
$text = CCS_LF.CCS_LF.$text;
}
$this->form['mailText2'] = $text;
}
/*
// PRIVATE
function getActualErrorMessage() {
return $this->form['actualErrorMessage'];
}
*/
/* CCS begin */
// Funktion ersetzt gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$attributes = split(';', trim($felder[$i]));
foreach ($attributes 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 formularInterpretation(&$formular) {
$felder = split('###', $formular);
for ($i = 1; $i < count($felder); $i = $i + 2) {
$tempField = trim(html_entity_decode($felder[$i]));
$container = "";
if (preg_match_all('/("[^"]+")/i', $tempField, $matches)) {
$x = 0;
foreach ($matches[0] as $match) {
$x++;
$tempField = str_replace($match, "###".$x."###", $tempField);
$container[$x] = str_replace('"', '', $match);
}
}
$attributes = split(';', $tempField);
foreach ($attributes as $attribut) {
if ($attribut != "") {
$namewert = split(':', trim($attribut));
if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
$namewert[1] = $container[intval($match[1])];
}
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
}
return $feld;
}
/* CCS end */
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="" method="post">';
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 (!empty($attribute['id'])) {
$parameter .= ' id="'.$attribute['id'].'"';
$ccs_id_param = 'id="'.$attribute['id'].'"';
}
/* CCS begin */
// geändert gemäß http://www.contenido.org/forum/viewtopic.php?p=46196#46196
/*
if ($sent && !$this->formularFeldKorrekt(&$attribute))
$style = "style=\"background-color:{$this->form['colorError']};\"";
*/
$style = $attribute['style'];
if ($sent && !$this->formularFeldKorrekt(&$attribute)) {
if (!empty($this->form['colorBackgroundError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'background-color: '.$this->form['colorBackgroundError'].';';
}
if (!empty($this->form['colorBorderError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'border: 3px solid '.$this->form['colorBorderError'].';';
}
if (!empty($this->form['colorFontError'])) {
if ('' != $style) {
$style .= ' ';
}
$style .= 'color: '.$this->form['colorFontError'].';';
}
}
if ('' != $style) {
$style = 'style="'.$style.'"';
}
if (!empty($attribute['class'])) {
$style = 'class="'.$attribute['class'].'" '.$style;
}
/* CCS end */
switch ($attribute['type']) {
case 'select':
case 'password':
/* CCS begin */
// bereits unten enthalten (würde sonst doppelt erzeugt):
// case 'text':
/* CCS end */
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size']))
$parameter .= ' size="'.$attribute['size'].'"';
if (!empty($attribute['value']))
$value = $attribute['value'];
if (!empty($_REQUEST["{$attribute['name']}"]))
$value = $_REQUEST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo '<input type="text" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'password':
echo '<input type="password" '.$parameter.' value="'.$value.'" '.$style.' />';
break;
case 'textarea':
echo '<textarea name="'.$attribute['name'].'" '.$ccs_id_param.' cols="'; // $parameter?
echo (empty($attribute['cols'])) ? ('20') : ($attribute['cols']);
echo '" rows="';
echo (empty($attribute['rows'])) ? ('2') : ($attribute['rows']);
echo '" '.$style.'>'.$value.'</textarea>';
// wrap="virtual" nicht valide!
break;
case 'select':
echo CCS_LF.'<select '.$parameter.' '.$style.'>'.CCS_LF;
for ($i = 0; $i < count($attribute['option']); $i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo '<option value="'.$attribute['optionvalue'][$i].'" selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option value="'.$attribute['optionvalue'][$i].'">'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
} else {
if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
if (empty($_REQUEST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo '<option selected="selected">'.$attribute['option'][$i].'</option>'.CCS_LF;
} else {
echo '<option>'.$attribute['option'][$i].'</option>'.CCS_LF;
}
}
}
}
echo '</select>'.CCS_LF;
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]', $attribute['name']);
if ($sent) {
if ($_REQUEST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" checked="checked" />';
} else {
echo '<input type="checkbox" '.$parameter.' value="'.$attribute['value'].'" />';
}
}
break;
case 'radio':
if (!empty($_REQUEST["{$attribute['name']}"])) {
if ($_REQUEST["{$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;
case 'datetime':
echo '<input type="hidden" name="date_time" id="date_time" value="gesendet am '.date('d.m.Y, H:i').' Uhr" />';
break;
}
if ($this->form['showErrorMessage'] and ('' != $this->form['actualErrorMessage'])) {
echo '<br />'.CCS_LF;
$cssAttributes = '';
if ('' != $this->form['errorMessageCssClass']) {
$cssAttributes .= ' class="'.$this->form['errorMessageCssClass'].'"';
}
if ('' != $this->form['errorMessageCssStyle']) {
$cssAttributes .= ' style="'.$this->form['errorMessageCssStyle'].'"';
}
echo '<span'.$cssAttributes.'">'.$this->form['actualErrorMessage'].'</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 add2ConfirmationPage($key, $value) {
$tr_style = '';
if ('' != $this->form['ConfirmationDataTrCssClass']) {
$tr_style .= ' class="'.$this->form['ConfirmationDataTrCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTrCssStyle']) {
$tr_style .= ' style="'.$this->form['ConfirmationDataTrCssStyle'].'"';
}
$th_style = '';
if ('' != $this->form['ConfirmationDataThCssClass']) {
$th_style .= ' class="'.$this->form['ConfirmationDataThCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataThCssStyle']) {
$th_style .= ' style="'.$this->form['ConfirmationDataThCssStyle'].'"';
}
$td_style = '';
if ('' != $this->form['ConfirmationDataTdCssClass']) {
$td_style .= ' class="'.$this->form['ConfirmationDataTdCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTdCssStyle']) {
$td_style .= ' style="'.$this->form['ConfirmationDataTdCssStyle'].'"';
}
$this->confirmationDataTable .= ' <tr'.$tr_style.'>'.CCS_LF;
$this->confirmationDataTable .= ' <th'.$th_style.'>'.$key.':</th>'.CCS_LF;
$this->confirmationDataTable .= ' <td'.$td_style.'>'.$value.'</td>'.CCS_LF;
$this->confirmationDataTable .= ' </tr>'.CCS_LF;
}
// PRIVATE
function prepareConfirmationDataTable() {
$this->confirmationDataTable = '';
if ($this->aufgedroeselt) {
$table_style = '';
if ('' != $this->form['ConfirmationDataTableCssClass']) {
$table_style .= ' class="'.$this->form['ConfirmationDataTableCssClass'].'"';
}
if ('' != $this->form['ConfirmationDataTableCssStyle']) {
$table_style .= ' style="'.$this->form['ConfirmationDataTableCssStyle'].'"';
}
$this->confirmationDataTable .= '<table'.$table_style.'>'.CCS_LF;
foreach ($this->aufgedroeselt as $key => $value) {
if ('date_time' != $key) {
$this->add2ConfirmationPage($key, $value);
}
}
$this->confirmationDataTable .= '</table>'.CCS_LF;
}
}
// PRIVATE
function success() {
$this->sendEmail();
if (false !== strpos($this->form['answer'], '###sent_data###')) {
if ($this->form['showData']) {
$this->prepareConfirmationDataTable();
$this->form['answer'] = str_replace('###sent_data###', $this->confirmationDataTable, $this->form['answer']);
} else {
$this->form['answer'] = str_replace('###sent_data###', '', $this->form['answer']);
}
}
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
$this->form['actualErrorMessage'] = '';
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte füllen Sie dieses Feld aus!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'given_options' && !empty($feld['possible_values'])) {
$possibleValues = explode('|', $feld['possible_values']);
foreach ($possibleValues as $key => $val) {
$possibleValues[$key] = trim($val);
}
if (!in_array($_POST["{$feld['name']}"], $possibleValues)) {
$this->form['actualErrorMessage'] = 'Es sind ausschließlich folgende Werte erlaubt (ohne die Anführungszeichen): ';
$i = 0;
foreach ($possibleValues as $val) {
$i++;
if (1 != $i) {
$this->form['actualErrorMessage'] .= ', ';
}
$this->form['actualErrorMessage'] .= '"'.$val.'"';
}
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-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern und den Bindestrich!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüßéàèâêîça-z0-9-]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'textwithlinefeed' && !eregi("^[ \r\n.,;!?()öäüßéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) {
return false;
$this->form['actualErrorMessage'] = 'Bitte verwenden Sie ausschließlich Buchstaben, Ziffern, das Leerzeichen sowie die Zeichen -.,;!?()';
}
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ausschließlich Ziffern ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ausschließlich Ziffern und ggf. einen Dezimalpunkt (kein Komma!) ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie ein Datum in der Form TT.MM.YYYY ein!';
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']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine gültige eMail-Adresse ein!';
return false;
}
if (!empty($feld['valid']) && $feld['valid'] == 'phone' && !eregi("^([+][ ]?[1-9][0-9][ ]?[-]?[ ]?|[(]?[0][ ]?)[0-9]{2,4}[-)/ ]?[ ]?[1-9][-0-9 ]{3,16}$", $_POST["{$feld['name']}"])) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine gültige Telefonnummer ein!';
return false;
}
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine Zahl ein, die größer oder gleich '.$feld['minvalue'].' ist!';
return false;
}
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) {
$this->form['actualErrorMessage'] = 'Bitte geben Sie eine Zahl ein, die kleiner oder gleich '.$feld['maxvalue'].' ist!';
return false;
}
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) {
$this->form['actualErrorMessage'] = 'Die Eingabe muss mindestens '.$feld['minlength'].' Zeichen lang sein!';
return false;
}
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) {
$this->form['actualErrorMessage'] = 'Die Eingabe darf höchstens '.$feld['maxlength'].' Zeichen lang sein!';
return false;
}
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
define('CCS_LF', "\n");
if ($edit) {
echo "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular einzugeben sowie der Text, der zusammen mit dem Formular ausgegeben werden soll:</p>";
echo "CMS_HTML[0]";
echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich verarbeitet wurde:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
if ('' == trim("CMS_VALUE[2]")) {
$ccs_sender_email = $_POST['E-Mail-Adresse'];
} else {
$ccs_sender_email = trim("CMS_VALUE[2]");
}
if ('' == trim("CMS_VALUE[3]")) {
$ccs_sender_name = $_POST['Vorname'].' '.$_POST['Nachname'];
} else {
$ccs_sender_name = trim("CMS_VALUE[3]");
}
$formular->setEmailFrom($ccs_sender_email, $ccs_sender_name);
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setBorderError("CMS_VALUE[5]");
$formular->setFontError("CMS_VALUE[6]");
$formular->setMessageError("CMS_VALUE[7]");
$formular->setMessageCssClassError("CMS_VALUE[8]");
$formular->setMessageCssStyleError("CMS_VALUE[9]");
$formular->setShowDataStatus("CMS_VALUE[10]");
$formular->setConfirmationDataTableCssClass("CMS_VALUE[11]");
$formular->setConfirmationDataTableCssStyle("CMS_VALUE[12]");
$formular->setConfirmationDataTrCssClass("CMS_VALUE[13]");
$formular->setConfirmationDataTrCssStyle("CMS_VALUE[14]");
$formular->setConfirmationDataThCssClass("CMS_VALUE[15]");
$formular->setConfirmationDataThCssStyle("CMS_VALUE[16]");
$formular->setConfirmationDataTdCssClass("CMS_VALUE[17]");
$formular->setConfirmationDataTdCssStyle("CMS_VALUE[18]");
$formular->setMailText1("CMS_VALUE[19]");
$formular->setMailText2("CMS_VALUE[20]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>Hallo sabsab,sabsab hat geschrieben:function success() {
$daten = fopen ("datei.txt", "a");
fwrite($daten,"{$_POST['vorname']},{$_POST['name']}\n}"); fclose ($daten);
}
}
$formular = new localSpeichern();
$formular->process();
wie kann hier noch zusätzlich der e-mail versand eingebaut werden?
Code: Alles auswählen
// PRIVATE
function write2file($path, $data, $fopen_mode) {
$file_access_ok = true;
$file_open = false;
clearstatcache();
// ist Datei beschreibbar?
if (file_exists($path)) {
if (!is_writable($path)) {
$result = 'file_not_writable';
$file_access_ok = false;
}
}
// wenn Datei existiert und beschreibbar ist, öffnen und Ergebnis des Öffnens überprüfen,
// sonst versuchen, die Datei anzulegen und Erfolg dieses Vorgangs ebenfalls prüfen
if ($file_access_ok and (!$file_handle = @fopen($path, $fopen_mode))) {
$result = 'cannot_open_file';
$file_access_ok = false;
}
// Daten in die Datei schreiben und Schreibvorgang überprüfen
if ($file_access_ok) {
if (!fwrite($file_handle, $data) and ($data != '')) {
$result = 'cannot_write_to_file';
$file_access_ok = false;
} else {
$file_open = true;
}
if ($data == '') {
$result = 'ok_but_no_data';
}
}
if ($file_access_ok) {
$result = 'ok';
}
if ($file_open) {
fclose($file_handle);
}
return ($result);
}
// PRIVATE
function write2LogFile() {
$logfile_path = 'logs/form_log.txt';
$fopen_mode = 'ab';
$this->logEntry = '';
if ($this->aufgedroeselt) {
$i = 0;
foreach ($this->aufgedroeselt as $value) {
$i++;
if (1 != $i) {
$this->logEntry .= '; ';
}
$this->logEntry .= $value;
}
$this->logEntry .= CCS_LF;
}
$status = $this->write2file($logfile_path, $this->logEntry, $fopen_mode);
if ('ok' != substr($status, 0, 2)) {
// Fehler beim Schreiben aufgetreten!
}
}
// PRIVATE
function success() {
$this->sendEmail();
$this->write2LogFile();
if (false !== strpos($this->form['answer'], '###sent_data###')) {
if ($this->form['showData']) {
$this->prepareConfirmationDataTable();
$this->form['answer'] = str_replace('###sent_data###', $this->confirmationDataTable, $this->form['answer']);
} else {
$this->form['answer'] = str_replace('###sent_data###', '', $this->form['answer']);
}
}
echo $this->form['answer'];
}Code: Alles auswählen
$this->sendEmail();Code: Alles auswählen
if ('ok' != substr($status, 0, 2)) {
// Fehler beim Schreiben aufgetreten!
}