Script für Datei-Upload läuft nicht auf PHP 4.3.1
Haas
- php
0 Severin Kacianka0 Haas
0 Vinzenz
Habe ein Script für den Upload einer txt-Datei. Auf meinem alten Webspace mit php 4.3.4 lief alles wunderbar. Auf dem jetzigen Webspace ist leider nur die Version 4.3.1 installiert. Hier funktioniert das Script nicht, es läd sich einfach selbst, ohne die Datei hochzuladen. Kann es sein, dass dies an den unterschiedlichen versionen liegt? Was könnte ich anders machen, damit es auch auf 4.3.1 läuft?
<?php
if($was=="haas") {
$size = $bild_size; // Größe der Datei
$name = $bild_name; // Der Originalname
$type = $bild_type; // Der MIME Type der Datei
if(eregi("(txt)$",$name)) {
if($size<600000 AND $size!=0) {
copy($bild,"../$name"); // Kopiert das Bild
echo "Die Datei wurde erfolgreich hochgeladen.<br>";
echo "Größe: ".$size." Byte<br>";
echo "Name: ".$name."<br>";
echo "MIME-Type: ".$type."<br>";
} else {
echo "Ihre Datei ist über 5,5 KB oder gleich 0";
}
} else {
echo "Falsche Erweiterung: ".$name;
}
} else {
echo "<form action='".$PHP_SELF."' enctype="multipart/form-data" method='post'>";
echo "<input type='hidden' name='was' value='haas'>";
echo "<table>";
echo "<tr>";
echo "<td>Datei: </td>";
echo "<td><input type='file' name='bild'></td>";
echo "</tr><tr>";
echo "<td> </td>";
echo "<td><input type='submit' value='Hochladen'></td>";
echo "</tr>";
echo "</form></table>";
}
?>
Hallo,
Kann es sein, dass dies an den unterschiedlichen versionen liegt? Was könnte ich anders machen, damit es auch auf 4.3.1 läuft?
Nein, es liegt eher an der unterschiedlichen Konfiguration. Register Globals ist mein Tipp: http://at.php.net/register_globals.
gruß,
Severin
OK danke, hast recht, die register_globals sind auf dem Server ausgeschaltet. hat jemand einen Tip wie ich den Code jetzt umschreiben muss? Habe leider nicht allzuviel Ahnung von PHP.
Moin!
OK danke, hast recht, die register_globals sind auf dem Server ausgeschaltet. hat jemand einen Tip wie ich den Code jetzt umschreiben muss? Habe leider nicht allzuviel Ahnung von PHP.
Alle Werte, die mit einem POST-Formular geschickt werden, stehen in $_POST, alle Dateien, die geschickt werden, stehen in $_FILES.
Lies http://de3.php.net/manual/de/language.variables.predefined.php und die dort verlinkten weiterführenden Informationen. So schwierig ist die Umstellung wirklich nicht.
- Sven Rautenberg
Hallo Haas
Habe ein Script für den Upload einer txt-Datei. Auf meinem alten Webspace mit php 4.3.4 lief alles wunderbar. Auf dem jetzigen Webspace ist leider nur die Version 4.3.1 installiert. Hier funktioniert das Script nicht, es läd sich einfach selbst, ohne die Datei hochzuladen. Kann es sein, dass dies an den unterschiedlichen versionen liegt? Was könnte ich anders machen, damit es auch auf 4.3.1 läuft?
Es liegt nicht an den unterschiedlichen Versionen, es liegt an Deinem Skript.
Dieses verläßt sich darauf, dass register_globals auf on steht :-(
Aus Sicherheitsgründen steht register_globals schon seit längerer Zeit standardmäßig auf off, bei Deinem neuen Provider erfreulicherweise auch :-)
if($was=="haas") {
Du musst jetzt über $_POST['<formularelementname>' auf Deine Inhalte zugreifen, z.B. über
$_POST['was']
...
copy($bild,"../$name"); // Kopiert das Bild
...
echo "<form action='".$PHP_SELF."' enctype="multipart/form-data" method='post'>";
da Du die Übertragungsmethode POST wählst.
Bei GET analog $_GET verwenden.
Freundliche Grüsse,
Vinzenz