PHP Version: 4.4.7
Dass $_POST leer sei, war wohl doch etwas voreilig von mir geschossen, wäre auch zu strange gewesen 
Ich konnte die Ursache des Problems allerdings weiter eingrenzen und stelle mal die relevanten Ausschnitte des Scripts rein, in denen der Fehler auftritt.
Aus der formular.php
PHP-Code:
<form name="form1" method="post" action="senden.php<?=SID?>">
<table border="0" cellspacing="2" cellpadding="2" align="center">
<tr>
<td align="left" valign="middle" class="table1">
<label for="name">Ihr Name:</label> <?php if ($Pflicht_Name == "ja") echo "*"; else echo ""; ?></td>
<td class="table1">
<input name="Name" id="Name" type="text" class="inputtext" value="<?php echo isset($_SESSION['Name']) ? $_SESSION['Name'] : '' ?>" size="40">
</td>
</tr>
Aus der verarbeitenden senden.php
PHP-Code:
<?php
session_start();
error_reporting(E_ALL & ~E_NOTICE);
//Einbinden der Config-Datei
include ("includes/kontakt_config.inc.php") ;
// Funktionen einbinden
include( "includes/kontakt_funct.inc.php" );
// Benutzereingaben bereinigen und auf Injection prüfen
cleanInput();
// Name prüfen
$Name = checkName( $_POST['Name'] );
// Email prüfen
$Email = checkEmail( $_POST['Email'] );
/* Hier werden die übergebenen Formulardaten in dem Array der aktuellen Session abgelegt, damit diese, beim Klick auf den Zurück-Button, im Formular wieder zur Verfügung stehen und nicht erneut eingegeben werden müssen. */
$_SESSION['Name'] = $Name;
$_SESSION['Email'] = $Email;
$_SESSION['Strasse'] = $_POST['Strasse'];
$_SESSION['PLZ'] = $_POST['PLZ'];
$_SESSION['Ort'] = $_POST['Ort'];
$_SESSION['Land'] = $_POST['Land'];
$_SESSION['Telefon'] = $_POST['Telefon'];
$_SESSION['Fax'] = $_POST['Fax'];
?>
So und jetzt kommts...lasse ich die Funktion checkName außen vor, dann funkts!
Der Vollständigkeit halber die Funktion checkName aus der eingebundenen kontakt_funct.inc.php
PHP-Code:
// Name auf Gültigkeit prüfen
function checkName( $name )
{
$muster_name = '/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/';
if (preg_match( $muster_name, $name ))
{
return $name;
}
else
{
die("<table><p class=\"inputbutton\">Der eingegebene Name enthält nicht erlaubte Zeichen! Bitte versuchen Sie es erneut.<br /><br />
<a href=\"kontakt.php?=SID\" class=\"inputbutton\">
«« zurück </a></p></table>");
}
}
Bis auf die Ausgabe unter else ist das die unveränderte checkName von Rizzo.
Wie man in der senden.php sehen kann, verwende ich auch seine cleanInput() und checkEmail() in etwas abgeändeter Form. Und die funktionieren!
Was also hat der Parser an der checkName auszusetzen? Liegt es an den RegExp? Ist das "zuviel" für den Parser?