PHP: session_start() blockiert $_FILES-Array

G

Guentor Netzor

Guest
Liebe Entwickler,

wenn ich in meinem Skript

session_start();

auskommentiere, dann hat das $_FILES-Array einen Wert. Andernfalls ist es leer. Ich habe gegoogelt, gechattet und fand keine Lösung. Denn normalerweise müsste sich das $_FILES-Array genauso verhalten wie das $_POST-Array.

Ich poste hier trotzdem einmal den Code des gesamten Skripts, obwohl es nach meinen Debuging-Versuchen nur an der Session hängen müsste.

CODE <?
//session_start();



error_reporting(E_ALL | E_STRICT);
//ini_set('display_errors', 'On');


if (isset($_POST['senden'])) {

$eingabe = array(); // zum abspeichern ueberpruefter Benutzereingaben
$error = array(); // zum merken von fehlerhaften Benutzereingaben
} else {
$error = array(); // zum merken von fehlerhaften Benutzereingaben
}


if (isset($_POST['name']) && strlen($_POST['name']) && !is_array($eingabe['name'])) {
$eingabe['name'] = htmlspecialchars(trim($_POST['name']));
} else {
$error['name'] = true;
}

if (isset($_POST['test']) && strlen($_POST['test']) && !is_array($eingabe['test'])) {
$eingabe['test'] = htmlspecialchars(trim($_POST['test']));
}


// E-Mail + Ist die Adresse theoretisch echt?
if (isset($_POST['email']) && strlen($_POST['email']) && !is_array($_POST['email']) && preg_match("/.+@.+\.{1,6}/i", $_POST['email'])) {
$eingabe['email'] = htmlspecialchars(trim($_POST['email']));
} else {
$error['email'] = true;
}

if (isset($_POST['tel']) && strlen($_POST['tel']) && !is_array($_POST['tel'])) {
$eingabe['tel'] = htmlspecialchars(trim($_POST['tel']));
}

if (isset($_POST['www']) && strlen($_POST['www']) && !is_array($_POST['www'])) {
$eingabe['www'] = htmlspecialchars(trim($_POST['www']));
}

if (isset($_POST['message']) && strlen($_POST['message']) && !is_array($_POST['message'])) {
$eingabe['message'] = htmlspecialchars(trim($_POST['message']));
} else {
$error['message'] = true;
}

if (isset ($_FILES['attachment']) && $_FILES['attachment']['size'] > 1000000) {
$zufallszahl = md5(time());
$filename = $zufallszahl.$_FILES['attachment']['name'];
$uploaddir = '/www/htdocs/w00a048f/serienmail/up/';
$uploadfile = $uploaddir.$filename;
if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
print"File is valid, and was successfully uploaded.";
print "Here's some more debugging info:\n";
print_r($_FILES['attachment']);
}
} else {
$error['attachment'] = true;
}


if (isset ($_FILES['attachment']) && $_FILES['attachment2']['size'] > 1000000) {
$zufallszahl2 = md5(time());
$filename = $zufallszahl2.$_FILES['attachment2']['name'];
$uploaddir2 = '/www/htdocs/w00a048f/serienmail/up/';
$uploadfile2 = $uploaddir2.$filename;
if (move_uploaded_file($_FILES['attachment2']['tmp_name'], $uploadfile)) {
print"File is valid, and was successfully uploaded.";
print "Here's some more debugging info:\n";
print_r($_FILES['attachment']);
}
} else {
$error['attachment2'] = true;
}


var_dump($_SESSION);
var_dump($eingabe);

var_dump($_FILES);
var_dump($error);

session_register(eingabe);
session_register(_FILES);
echo session_id();

/*
if (empty ($_SESSION['eingabe'])) {
session_unregister(eingabe);
}
*/


?>


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<title>Kontakt</title>
<link rel="shortcut icon" href="/pix/favicon.ico" type="image/x-icon">
<link href="css/mainstyle.css" rel="stylesheet" type="text/css" />

</head>
<body>
<form action="<? echo htmlentities($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data" method="post">

<div id="wrap1">

<ul id="navcontainer">
<li><a rel="" href="interface.php">Startseite</a></li>
<li><div id="logo">serienmail.org</div></li>
<li><input class="userLogin" name="userLogin" type="text" value="E-Mail" onclick="if(this.value == this.defaultValue) this.value = '';"
onblur="if(!this.value) this.value = this.defaultValue;"></li>
<li><input class="passwordLogin" name="passwordLogin" type="password" value="test"
onclick="if(this.value == this.defaultValue) this.value = '';"
onblur="if(!this.value) this.value = this.defaultValue;"><input class="loginButton" type="submit" name="senden" value="Einloggen" />
<input type="checkbox" class="checkbox" name="cookie" value="true"><div id="text">Angemeldet bleiben</div></li>
</ul>
<?if (!isset($test)) {?>
<div id="anmeldung">
<b>Nachricht an serienmail.org</b><br>
Außer der eigentlichen Nachricht, sind E-Mail und Name Pflichtfelder.<p>
<?}?>
<?
if (!empty($error) && isset($eingabe['senden'])) {?>
<span class="attention"><b>Bitte korrigiere deine Eingaben.</span></b><p><?
//var_dump($error);
}

if (isset($error['attachment']) && isset($eingabe['senden'])) {?>
<span class="attention">Der erste Anhang übersteigt das Größenlimit.</span></b><p><?
}

if (isset($error['attachment2']) && isset($eingabe['senden'])) {?>
<span class="attention">Der zweite Anhang übersteigt das Größenlimit.</span></b><p><?
}
?>


<?if (isset($eingabe['test'])) {
if ($eingabe['test'] == $_SESSION['total']) {
include('doMessage.php');?>
<div id="message">
<b>Besten Dank!</b><br>
Die Nachricht wurde versendet und wird so bald wie möglich beantwortet.
<?} else {
?><div id="message"><span class="attention"><b>Die vorherige Frage sollte vor sogenannten Spam-Bots schützen. Falls du ein Mensch bist, klicke bitte auf den Zurückbutton deines Browsers, um eine gültige Eingabe zu machen.</span></b></div><?
}
}?>

<?php if (empty($error) && isset($_POST['senden'])) {

// Anti-Spam Bot Test
$number1 = rand(1,99);
$number2 = rand(1,99);
$total = $number1 + $number2;
session_register(total);
print "Was ergibt ".$number1." + ".$number2."?";?>
<p>
<input class="antibot" name="test" type="text" size="3">
<p>
<input class="regButton" type="submit" name="ok" value="OK" />

<?}?>


<?
if (!isset($_POST['senden']) && !isset($total)) {?>
Name:<br><input class="unimportant" name="name" type="text" size="30"><br>
E-Mail:<br><input class="unimportant" name="email" type="text" size="30"><br>
Tel.:<br><input class="unimportant" name="tel" type="text" size="30"><br>
Webadresse:<br><input class="unimportant" name="www" type="text" size="30"><br>
Nachricht:<br><textarea class="unimportant" name="message" cols="60" rows="20"></textarea>
<p>
Anhang (max. 1 MB):
<input name="attachment" type="file" size="20" />
<p>
2. Anhang (max. 1 MB):
<input name="attachment2" type="file" size="20" />
<p>
<input class="regButton" type="submit" name="senden" value="Absenden" /><br>
<?
}
elseif(!empty($error) && !isset($total))
{
?>
Name:<br><input <?if (isset($error['name'])){?>class="important"<?}else{?> class="unimportant" <?}?> name="name" type="text" size="30" <?if (!isset($error['name'])){?>value="<?echo $eingabe['name'];?>"<?}else{?>value=""<?}?>><br>
E-Mail:<br><input <?php if(isset($error['email'])) { echo ' class="important"'; } else { echo ' class="unimportant"'; }?> name="email" type="text" size="30" <?if (!isset($error['email'])){?>value="<? echo $eingabe['email']; ?>"<?}else{?>value=""<?}?>><br>
Tel.:<br><input class="unimportant" name="tel" type="text" size="30" <?if (isset($eingabe['tel'])){?>value="<?echo $eingabe['tel'];?>"<?}else{?>value=""<?}?>><br>
Webadresse:<br><input class="unimportant" name="www" type="text" size="30" <?if (isset($eingabe['www'])){?>value="<?echo $eingabe['www'];?>"<?}else{?>value=""<?}?>><br>
Nachricht:<br><textarea <?if (isset($error['message'])){?>class="important"<?}else{?> class="unimportant" <?}?> name="message" type="text" cols="60" rows="20"><?if (!isset($error['message'])) echo $eingabe['message'];?></textarea>
<p>
Anhang:
<input name="attachment" type="file" size="20" />
<p>
2. Anhang:
<input name="attachment2" type="file" size="20" />
<p>
<input class="regButton" type="submit" name="senden" value="Absenden" /><br>
<?/* if ($eingabe['test'] == $total){?>
<input class="regButton" type="submit" name="final" value="Absenden" /><br><?}
*/ }?><p>
</div>
<?php if (!empty($error) && !isset($eingabe['senden'])) {?>
<?}elseif (empty($error) && isset($eingabe['senden'])){?>
<div id="content">
Schonmal danke für dein Interesse. Du bist nur noch einen Schritt entfernt.
</div>
<?}?>
<div class="clear"></div>
</div>
<div id="footer">
<ul id="footerContainer">
<li><a rel="" href="fromFooter.php" title="Kontakt">Kontakt</a></li>
<li><a rel="" href="impressum.php" title="Impressum" caption="Impressum von Netzor.">Impressum</a></li>
<li><a rel="" href="agb.php" title="AGB" caption="Allgemeine Geschäftsbedingungen.">AGB</a></li>

<li><a rel="" href="agb.php" title="AGB" caption="Allgemeine Geschäftsbedingungen.">Quelloffenheit</a></li>
<li><i></i></li>
</ul>
</form>
</div>
</body>
</html>


An dieser Stelle bedanke ich mich für eure Zeit sowie Aufmerksamkeit und hoffe, dass ich meinen Post gut verständlich formuliert habe.
 
"Achtung
Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden. " Quelle

QUOTE session_register(_FILES);
 
Zurück
Oben