Ich habe gerade ein Skript aus dem Buch "PHP 5 Praxisbuch und Referenz" probiert. Dabei geht es um Dateiupload. Nur leider funktioniert es nicht, auch das originale Beispiel von CD bringt folgenden Fehler
Code:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/test/upload.php:6) in /var/www/test/test/upload.php on line 26
Die besagte Datei sieht so aus:
Code:
<html>
<head>
<title>Dateiupload - Status</title>
</head>
<body>
<?php
// Prüfen des Array $_FILES
if (isset($_FILES["datei"])) {
// Upload-Status
if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) {
// Muster zur Überprüfung der im Dateinamen
// enthaltenen Zeichen (Optional)
$regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";
// Dateiname und Dateigrösse
if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 100000) {
// Temporäre Datei in das Zielverzeichnis
// des Servers verschieben.
move_uploaded_file($_FILES["datei"]["tmp_name"],"shots/".$_FILES["datei"]["name"]);
// Redirect zur Erfolgs-Meldung
header("Location: status.html");
}
else {
echo "Fehler: Im Dateinamen oder Dateigrössen Limit!";
}
}
else {
echo "Fehler: Während der Übertragung aufgetreten!";
}
}
else {
echo "Fehler: Dateiupload fehlgeschlagen!";
}
?>
</body>
</html>
Interessanterweise kommt bei der abgetippten Version auch Zeile 6 als Auslöser, obwohl dort die Leerzeilen fehlen und somit an dieser Stelle etwas anderes steht. Da ja die Originaldatei ebenfalls nciht geht, schließe ich einen Fehler meinerseits aus, hab auch mit diversen Editoren nach nicht sichtbaren Sonderzeichen gesucht, aber nix zu finden...