Problem mit dem senden eines Formulars

Hallo,

ein großes Lob: viel Speicherplatz, FTP-Zugang, keine Werbung und absolut kostenlos.
Da sag ich mal super und danke.

Nachdem ich mich gestern registrier hatte, hatte ich testweise mal eine Seite mit einem Kontaktformular hochgeladen.
Allerding habe ich nun ein Problem, welches ich auch nach Stundenlangem suchen und lesen nicht in den Griff bekomme.

Nach dem Ausfüllen und Absenden des Formulars, erscheint folgende Fehlermeldung:

" Cannot redeclare quoted_printable_encode() in /users/netberserker/www/web/w2dfgw.php on line 53 "

Hier der Link zum Formular:
http://netberserker.bplaced.net/web/03c1989c5b0d61001/index.html
Erstellt mit WebtoDate 5.0 SP3 PHP5

Ich hoffe, das mir jemand helfen kann…

Hier der w2dfgw.php Code:

[code]<?php

function postvars($key) {

// Liefert die POST-Variablen unabhängig von den Magic Quotes



if (isset($_POST[$key])) {

	if (get_magic_quotes_gpc()) {

		return (stripslashes($_POST[$key]));

	} else {

		return ($_POST[$key]);

	}

}

else {

	return ("");

}

}

function quoted_printable_encode($input) {

// MIME-Encoding



$line_max = 76;

$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');

$lines = split("\n", $input);

$eol = "\n";

$escape = "=";

$output = "";



for ($j=0;$j<count($lines);$j++) {

	$line = $lines[$j];

	$linlen = strlen($line);

	$newline = "";

	for($i = 0; $i < $linlen; $i++) {

		$c = substr($line, $i, 1);

		$dec = ord($c);

		if ( ($dec == 32) && ($i == ($linlen - 1)) ) { 

			$c = "=20"; 

		} elseif ( ($dec == 61) || ($dec==46) || ($dec < 32 ) || ($dec > 126) ) { 

			$h2 = floor($dec/16); $h1 = floor($dec%16); 

			$c = $escape.$hex["$h2"].$hex["$h1"]; 

		}

		if ( (strlen($newline) + strlen($c)) >= $line_max ) { 

			$output .= $newline.$escape.$eol; 

			$newline = "";

		}

		$newline .= $c;

	} 

	$output .= $newline;

	if ($j<count($lines)-1) $output .= $eol;

}

return trim($output);

}

function createHTMLMail() {

// erzeugt eine HTML-Mail



global $_POST;

reset($_POST);



$i=1;



$mymail="";



// Header



$mymail.= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";

$mymail.= "<html>\n";

$mymail.= "<head>\n";



$mymail.="<META http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n";



$mymail.= "</head>\n";

$mymail.= "<body bgcolor=\"#ffffff\" text=\"#333333\" link=\"#333333\">\n";



$mymail.= "<style>\n";

$mymail.= "  td {font-family : Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size : 11px; color : #333333; }\n";

$mymail.= "</style>\n";

$mymail.="<table width=100% border=0 cellpadding=4>\n";



$mymail.="<tr>";

$mymail.="<td colspan=2><strong>Folgende Mitteilung wurde an Sie gesandt:</strong></td>\n";

$mymail.="</tr>\n";



while (list($key, $val) = each ($_POST))

{

	switch ($key)

	{

		case "x":

		case "y":

		case "fgwemail":

		case "fgwsubject":

		case "fgwreturnurl":

			break;

   		default:

			$mymail.="<tr>";

			$mymail.="<td><strong>".$key.":</strong></td>\n";

			$mymail.="<td width=100%>".$val."</td>\n";

			$mymail.="</tr>\n";

	}

}



$mymail.="</table>\n";



return $mymail;

}

function createTextMail() {

global $_POST;

reset($_POST);



$mymail="";

while (list($key, $val) = each ($_POST))

{

	switch ($key)

	{

		case "x":

		case "y":

		case "fgwemail":

		case "fgwsubject":

		case "fgwreturnurl":

			break;

   		default:

			$mymail.=$key." ";

			$mymail.=$val."\n";

	}

}



$mymail.="\n";



return $mymail;

}

function createMimeMail() {

$mymime="This is a multi-part message in MIME format.\n\n";

$mymime.="----WEB2DATEGATEWAY\n";

$mymime.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";

$mymime.="Content-Transfer-Encoding: quoted-printable\n\n";

$mymime.=quoted_printable_encode(createTextMail())."\n";

$mymime.="----WEB2DATEGATEWAY\n";

$mymime.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";

$mymime.="Content-Transfer-Encoding: quoted-printable\n\n";

$mymime.=quoted_printable_encode(createHTMLMail())."\n";

$mymime.="----WEB2DATEGATEWAY--\n";

return $mymime;

}

function deSlash(&$element) {

// Für Stripslash



$element=stripslashes($element);

}

// Hauptprogramm

$fgwemail=postVars(“fgwemail”);

$fgwsubject=postVars(“fgwsubject”);

$fgwreturnurl=postVars(“fgwreturnurl”);

$whitelist=array("netberserker@googlemail.com");

if ($fgwemail!=‘nomail@kaufrausch.de’) {

if (!in_array(strtolower($fgwemail), $whitelist)) {

	die("ERROR: ILLEGAL RETURN-EMAIL-ADDRESS");

}



if (!$fgwemail) {

	die ("ERROR: NO RETURN-EMAIL-ADDRESS");

}

if (!$fgwreturnurl) {

	die ("ERROR: NO RETURN-URL");

}



mail ($fgwemail, $fgwsubject, createMimeMail(), "MIME-Version: 1.0\nContent-Type: multipart/alternative;\n\tboundary=\"--WEB2DATEGATEWAY\"\nX-Mailer: web to date Gateway Version 1.0");	

}

header("Location: ".$fgwreturnurl);

?>

[/code]

php.net/manual/en/function.q … encode.php

Diese Funktion gibt es seit PHP 5.3.0, was hier neuerdings im Einsatz ist - du kannst also nicht mehr selber eine eigene Funktion im Script so nennen.

So, wie die Funktion in deinem Script benannt ist, ist stark davon auszugehen, dass sie das gleiche macht, wie die jetzt in PHP vorhandene Funktion - dann könntest du die Deklaration der Funktion aus deinem Script einfach entfernen, dann wird an der Stelle, wo sie aufgerufen wird, automatisch die von PHP verwendet.

Wenn deine Funktion doch etwas anderes machen sollte (nicht sehr wahrscheinlich) - dann benenne sie um; natürlich auch an den Stellen, wo sie im Script verwendet wird.

Hallo chrisb,

ein großes DANKESCHÖN…

Du hast Recht, wäre ich nie drauf gekommen.

Habe testweise “quoted_printable_encode” an allen Stellen umbenannt in "Format"
und siehe da es geht.

Letztendlich habe ich dies wieder rückgängig gemacht und nur die Funktion “quoted_printable_encode” gelöscht.

Alles ist gut :wink:

Kann mir jemand sagen wo man

die Funktion “quoted_printable_encode”

löscht?

Bettina

[quote=“bettina”]Kann mir jemand sagen wo man

die Funktion “quoted_printable_encode”

löscht?[/quote]
Da, wo sie im Script definiert ist.

ich muss ganz ehrlich sagen- ich arbeite doch mit web-to-date

ich weiß nicht wie ich einen Script verändern kann- bin doch unbeleckt

Dann wende dich an den Hersteller; er soll das Ding mit PHP 5.3 kompatibel machen.

Tja da ich es nicht kann muss ich wohl in den sauren Apfel beißen

Sicherlich nicht - hier wird dir natürlich gerne geholfen. Du musst die Datei w2dfgw.php (ist die das wirklich?!) mit FileZilla herunterladen, mit dem Windowseditor öffnen und diese Stelle entfernen: [code]function quoted_printable_encode($input) {

// MIME-Encoding

$line_max = 76;

$hex = array(‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’);

$lines = split("\n", $input);

$eol = “\n”;

$escape = “=”;

$output = “”;

for ($j=0;$j<count($lines);$j++) {

  $line = $lines[$j];

  $linlen = strlen($line);

  $newline = "";

  for($i = 0; $i < $linlen; $i++) {

     $c = substr($line, $i, 1);

     $dec = ord($c);

     if ( ($dec == 32) && ($i == ($linlen - 1)) ) {

        $c = "=20";

     } elseif ( ($dec == 61) || ($dec==46) || ($dec < 32 ) || ($dec > 126) ) {

        $h2 = floor($dec/16); $h1 = floor($dec%16);

        $c = $escape.$hex["$h2"].$hex["$h1"];

     }

     if ( (strlen($newline) + strlen($c)) >= $line_max ) {

        $output .= $newline.$escape.$eol;

        $newline = "";

     }

     $newline .= $c;

  }

  $output .= $newline;

  if ($j<count($lines)-1) $output .= $eol;

}

return trim($output);

}[/code]

Danach die Datei speichern und wieder hochladen.

oh danke, aber woher bekomme ich

FileZilla ?

filezilla.de/

Wie hast du das System hochgeladen? Wenn du ein anderes FTP-Programm verwendest, kannst du natürlich auch das nehmen und die restlichen Schritte ausführen.

habe es einfach hier rausgelöscht

function postvars($key) {

// Liefert die POST-Variablen unabhängig von den Magic Quotes

if (isset($_POST[$key])) {
	if (get_magic_quotes_gpc()) {
		return (stripslashes($_POST[$key]));
	} else {
		return ($_POST[$key]);
	}
}
else {
	return ("");
}

}

// MIME-Encoding

$line_max = 76;
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = split("\n", $input);
$eol = "\n";
$escape = "=";
$output = "";

for ($j=0;$j<count($lines);$j++) {
	$line = $lines[$j];
	$linlen = strlen($line);
	$newline = "";
	for($i = 0; $i < $linlen; $i++) {
		$c = substr($line, $i, 1);
		$dec = ord($c);
		if ( ($dec == 32) && ($i == ($linlen - 1)) ) {
			$c = "=20";
		} elseif ( ($dec == 61) || ($dec==46) || ($dec < 32 ) || ($dec > 126) ) {
			$h2 = floor($dec/16); $h1 = floor($dec%16);
			$c = $escape.$hex["$h2"].$hex["$h1"];
		}
		if ( (strlen($newline) + strlen($c)) >= $line_max ) {
			$output .= $newline.$escape.$eol;
			$newline = "";
		}
		$newline .= $c;
	}
	$output .= $newline;
	if ($j<count($lines)-1) $output .= $eol;
}
return trim($output);

}

function createHTMLMail() {

// erzeugt eine HTML-Mail

ja habe ein FTP Programm auf dem Rechner

mal sehen ob es geht

Der Rest muss auch noch weg - alles, was ich in meinem Post angegeben hatte. Dann müsste es funktionieren.

das alles bis zum wort output??

Sogar alles bis zur schließenden geschweiften Klammer :wink:

Ja, da hier eine komplette Funktion angegeben wird, die PHP 5.3 schon kennt - es geht nicht nur um einen Aufruf, sondern um den Ursprung der Funktion, also die Deklaration und die Beschreibung, was sie machen soll - das ist in diesem Fall ziemlich viel.

es sieht schon besser aus aber jetzt kommt diese Fehlermeldung

ERROR: ILLEGAL RETURN-EMAIL-ADDRESS-UID

Das Problem ist, dass sich die Datei bei jedem Laden von web-to-date (was nötig ist) immer wieder vollständig hochlädt und damit die alte Fehlermeldung immer wieder kommt. Irgendwie müsste man das Programm von web-to-date ändern oder?

Komisch… Bei NetBerserker hat es ja auch funktioniert. Ich werde mir das morgen mal anschauen - bitte erinnere mich noch einmal daran, falls ich es vergessen sollte.