Kontaktformular kann nur wenig Text schicken

  • #1
T

Tobsen086

Bekanntes Mitglied
Themenersteller
Dabei seit
01.11.2003
Beiträge
72
Reaktionspunkte
0
Hallochen!

Ich bin grad dabei meine Seite auf XHTML umzubauen. Nun bin ich bei meinem Kontaktformular angekommen. Es ist jetzt auch XHTML valide doch es kann nur sehr wenige Zeichen schicken und ich hab keine Ahnung warum!?! Immerwieder kommt die Fehlermeldung, dass das Textfeld korriegiert werden soll. Erst wenn sehr wenig Text drin steht wird die Mail abgesendet.
Wie schaffe ich es nun, dass der Benutzer mehr Text schreiben kann?!?

Code:
<!-- Anfang Kontakt-Script -->
<?php

$Zaehler = 0 ; // Zählt die Anzahl der Fehler
$Falsch =  ; // Nicht korrekte Felder

function TesteText ( $Variable , $TestString , $Feld )
{
global $Zaehler ; // zum Schreiben der Variablen erforderlich,
global $Falsch ; // da Variablen sonst nur in Funktion gültig!!!
if ( ! ( eregi ( $TestString , trim ( $Variable ) ) ) ) // Funktion prüft Gültigkeit des Feldes
{
$Zaehler = $Zaehler + 1 ;
if ( $Zaehler > 1 ) // Wenn bereits ein nicht korrektes Feld vorhanden:
{
$Falsch .= ,  ; // Trennung zum nächsten Feld durch Komma
}
$Falsch .= $Feld ;
}
}

TesteText ( $Person , ^[a-zäöüß \.-]+$ , Name ) ;
TesteText ( $EMail , ^[a-z0-9_\.-]{5,30}@[a-z0-9_-]+\.[a-z0-9_\.-]+$ , E-Mail ) ;
TesteText ($Betreff, ^[a-zäöüß \.-]+$ , Betreff ) ;
TesteText ($Text, ^[a-zäöüß0-9 \.-]+$ , Text ) ;

switch ( $Empf ) // die E-Mail-Adresse des Empfängers wird nach der Person des Empfängers festgelegt
{
case Webmaster :
$EMailEmpf = [email protected] ;
break ;
case 1. Vorsitzender :
$EMailEmpf = [email protected] ;
break ;
}

$Gesamt = $Person . $EMail . $Betreff . $Text ; // String mit allen Feldern wird gebildet

if ($Zaehler<>0) // Wenn Fehler vorhanden sind (große Schleife):
{
if ( ! ( strlen ( $Gesamt ) ) ) // Wenn noch nichts eingetragen wurde:
{
echo <p>Füllen Sie bitte die untenstehenden Felder sorgfältig aus.</p> ;
}
elseif ( $Zaehler == 1 ) // Wenn ein Feld nicht korrekt ausgefüllt ist:
{
echo <p>Bitte korrigieren oder ergänzen Sie das Feld $Falsch.</p> ; // zeigt String mit nicht korrektem Feld an
}
else // Wenn mehrere Felder nicht korrekt ausgefüllt sind:
{
echo <p>Bitte korrigieren oder ergänzen Sie die Felder $Falsch.</p> ; // zeigt String mit nicht korrekten Feldern an
}
?>
					<form action=kon.php method=get>
					  <table border=0 cellspacing=2 cellpadding=0 width=100%>
						<tr>
						  <td nowrap=nowrap align=right>An:</td>
						  <td> </td>
						  <td width=100%><select name=Empf size=1><option<?php if ($Empf==Webmaster){echo  SELECTED;}?>>Webmaster</option><option<?php if ($Empf==1. Vorsitzender){echo  SELECTED;}?>>1. Vorsitzender</option></select></td>
						</tr>

						<tr>
						  <td nowrap=nowrap align=right>Dein Name:</td>
						  <td></td>
						  <td width=100%><input type=text name=Person size=50 maxlength=120 value= /></td>
						</tr>

						<tr>
						  <td nowrap=nowrap align=right>E-Mail:</td>
						  <td></td>
						  <td width=100%><input type=text name=EMail size=50 maxlength=120 value= /></td>
						</tr>

						<tr>
						  <td nowrap=nowrap align=right>Betreff:</td>
						  <td></td>
						  <td width=100%><input type=text name=Betreff size=50 maxlength=120 value= /></td>
						</tr>

						<tr>
						  <td nowrap=nowrap align=right valign=top>Text:</td>
						  <td></td>
						  <td width=100%><textarea cols=40 rows=10 name=Text><?php echo $Text;?></textarea></td>
						</tr>

						<tr>
						  <td></td>
						  <td></td>
						  <td><input type=submit value=Nachricht versenden name=submit /></td>
						</tr>
					  </table>
<?php
}
else // Wenn kein Fehler vorhanden ist (große Schleife)
{
  $Header=From: $Person <$EMail>\n;
  $Header.=Reply-To: $EMail\n;
  $Header.=X-Mailer: php-FormMailer ([url]www.victoria-seelow.de[/url])\n;
  $Header.=Content-Type: text/plain;
echo Vielen Dank! Deine E-Mail wurde abgesendet. ;
mail ( $EMailEmpf, $Betreff, $Text, $Header) ;
}
?>
<!-- Ende Kontakt-Script -->
Die eMail-Adressen sind in Wirklichkeit anders.

Oder hier im Einsatz:

Danke schonmal für jegliche Hilfe!
 
  • #2
Hi,

denke, es liegt nich an der Länge des Textes, sondern es geht nicht mehr wenn Zeilenumbrüche drin sind und Schuld dürfter folgender Code sein:
Code:
TesteText ($Text, ^[a-zäöüß0-9 \.-]+$ , Text ) ;

Das Muster passt nicht auf Zeilenumbrüche.

Bei den preg_XX Funktionen () gäb es dazu zwei passende Modifikatoren :) (siehe m und s unter )

ereg benutz ich eigentlich nicht, aber vielleicht geht es so (allerdings ungetestet):

Code:
TesteText ($Text, ^[a-zäöüß0-9 \.\n-]+$ , Text ) ;
 
  • #4
ach, wer benutzt den Kommas und son Schrot? :p :)
 
  • #5
  • #6
Hallo!

Es lag wirklich an dem Textumbruch. Danke dafür. Das mit dem strip_tags ist interessant. Weiß zwar nicht genau, wie man das verwendet (bin nicht der PHP-Expterte) aber ich hab es mal so gemacht. Und es funktioniert auch so.

Code:
TesteText ( $Person , ^[a-zäöüß \.-]+$ , Name ) ;
TesteText ( $EMail , ^[a-z0-9_\.-]{5,30}@[a-z0-9_-]+\.[a-z0-9_\.-]+$ , E-Mail ) ;
TesteText ($Betreff, ^[a-zäöüß \.-]+$ , Betreff ) ;
$Text_mod=strip_tags($Text,'<a>,<img>');

Ist das so korrekt?
An euch beide erstmal vielen Dank!
Damit ist das Thema erledigt.
 
  • #7
wenns funzt ist doch gut und scheint auch richtig zu sein ;)
 
Thema:

Kontaktformular kann nur wenig Text schicken

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben