w3concepts.form
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
w3concepts.form
hallo zusammen,
ich habe folgendes problem seitdem ich das formular modul eingebaut habe:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 840
an was könnte dies liegen viele grüße und danke marcello
ich habe folgendes problem seitdem ich das formular modul eingebaut habe:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 840
an was könnte dies liegen viele grüße und danke marcello
Das ist nur ein "Warning" von PHP dass die Funktion pass-by-reference oder so als deprecated eingestuft ist...
wenn Du also eine zukünftige PHP Version verwendest kann es sein dass da irgendwas nicht mehr funktioniert...
ist denn auf Deinem Server im PHP allow_call_time_pass_reference auf on ??
aber ich denke da ist irgendwo ein "&" zuviel
wenn Du also eine zukünftige PHP Version verwendest kann es sein dass da irgendwas nicht mehr funktioniert...
ist denn auf Deinem Server im PHP allow_call_time_pass_reference auf on ??
aber ich denke da ist irgendwo ein "&" zuviel

poste mal die klasse. ich kann dir dann sagen, wo du eine anpassunge machen musst. das ganze hängt mit der übergabe per referenz zusammen, die künftig dann nicht mehr funktionieren wird.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
Hallo Herr Kummer,
hier ist das modul
input:
und hier der output:
hier ist das modul
input:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";
echo "<tr><td>Zieladresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" /></td></tr>";
echo "<tr><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";
echo "<tr><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><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><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>";
und hier der output:
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
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
$this->aufdroeseln($this->suppress('sent'));
$this->generateEmailMessage();
mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"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";
}
}
// 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['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="" 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 ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
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($_POST["{$attribute['name']}"])) $value = $_POST["{$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']}\" cols=\"";
echo (empty($attribute['cols']))?('20'):($attribute['cols']);
echo "\" rows=\"";
echo (empty($attribute['rows']))?('2'):($attribute['rows']);
echo "\" wrap=\"virtual\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter $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\"/>";
} 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($_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;
}
}
// 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-z-]*$",$_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 "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular sowie der Text einzugeben, 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 prozessiert worden ist:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>
du musst folgende zeilen ersetzen (die jeweils obere durch die untere):
dann sollte die warnung nicht mehr ausgegeben werden.
gruss,
andreas
Code: Alles auswählen
$formulardaten = $this->formularInterpretation(&$formular);
$formulardaten = $this->formularInterpretation($formular);
if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
if ($sent && !$this->formularFeldKorrekt($attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
$felder = $this->formularInterpretation(&$formular);
$felder = $this->formularInterpretation($formular);
if (!$this->formularFeldKorrekt(&$feld)) return false;
if (!$this->formularFeldKorrekt($feld)) return false;
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
hallo nochmal ich habe noch eine frage, ich möchte eine jobböse realisieren und das formular sollte dann bei mehreren jobs eingebunden werden kann ich das dann direkt mit den feldern definiert irgendwie einbauen ? und ist es möglich via email den headertext und evtl articel id mitzugeben?
danke vielmals gruß
marcello
danke vielmals gruß
marcello
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
hi bekomme jetzt auf einmal folgende fehlermeldung...
an was liegt das nun ? checke leider in php nicht durch danke für eure hilfe !
gruß
Code: Alles auswählen
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 1025
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 1040
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 1136
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /srv/www/vhosts/vp-inet.de/httpdocs/contenido/includes/include.con_editcontent.php(619) : eval()'d code on line 1139
gruß
Hast du weitere Module eingebaut? Es handelt sich um den selben Fehler wie oben, du verwendest Referenzen bei Funktionsargumenten (d. h., du setzt ein '&' vor eine Variable, die du als Argument an eine Funktion übergibst - damit kann die Funktion diese Variable ändern). Einfachste Lösung: Wie oben schon gemacht, nach dem Vorkommen von '&$' suchen und das '&' löschen (allerdings nur bei den Funktionsaufrufen, nicht bei den Funktionsdeklarationen). Kann aber zu Problemen führen, wenn in der Funktionsdeklaration keine Referenz angegeben ist. Du solltest dich am Besten zumindest ein bisschen mit PHP beschäftigen, um dir ggf. auch mal selbst helfen zu können.marcello89 hat geschrieben:hi bekomme jetzt auf einmal folgende fehlermeldung...
...
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten:
Falls du nichts geändert hast und diese Warnungen beim Aufruf einer Seite auftauchen, die bisher warnungsfrei aufgerufen werden konnte, ist das sehr, sehr seltsammarcello89 hat geschrieben:hi calvini habe kein weiteres modul eingebaut ist genau das selbe wie oben und es hat schon funktioniert :-/

Nichtsdestotrotz funktioniert die Fehlerbehebung genau so, wie oben beschrieben: Schau dir die betroffenen Module an und suche dort nach Referenzen, die an Funktionen übergeben werden. Entferne diese und dann sollten auch die Warnungen verschwinden.
suche hier im forum. das problem tritt wegen den referenzen auf. ich habe die lösung schon diverse male publiziert...
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
-
- Beiträge: 116
- Registriert: Di 20. Sep 2005, 18:10
- Wohnort: Lörrach
- Kontaktdaten: