Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktionierts? (https://www.delphipraxis.net/50002-php-copy-bzw-move_uploaded_file-wie-funktionierts.html)

mr47 19. Jul 2005 15:24


(PHP) Copy() bzw. Move_Uploaded_file() > Wie funktioniert
 
Hi!

Ich will eine Datei per PHP-Script hochladen. Mein Problem ist folgendes: Ich weiß net wie man die Funktionen Copy() oder Move_Uploaded_File() korreckt aufruft. Wenn man da einfach Pfade eingibt kommt ein Fehler, dass der Pfad nicht existiert (bei Copy auf einem IIS-Server). Kann mir jemand sagen wie man diese Funktionen aufruft?
Bei Google hab ich nur andere Sachen gefunden (von Leuten die schon wissen wie's geht :mrgreen: )


mfg und danke mr47

alcaeus 19. Jul 2005 15:28

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Moin mr47,

in der php-Doku gibts einen Artikel zu File-uploads: http://de.php.net/manual/de/features.file-upload.php

Greetz
alcaeus

mr47 19. Jul 2005 15:56

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Hi! Danke Alcaeus.

Jetzt steht hier ein Code:
Code:
<?php
// In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt $_FILES verwenden.
// In PHP kleiner als 4.0.3 verwenden Sie copy() und is_uploaded_file() anstatt von
// move_uploaded_file()

$uploaddir = '/var/www/uploads/';

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
   print "File is valid, and was successfully uploaded. Here's some more debugging info:\n";
   print_r($_FILES);
} else {
   print "Possible file upload attack!  Here's some debugging info:\n";
   print_r($_FILES);
}

?>
An welcher Stelle soll ich jetzt den Dateinamen einfügen? $uploaddir steht ja für das Verzeichnis auf dem Server oder?
[edit1]: Ja ich weis ich bin nicht so toll in PHP. Aber ich brauchs wirklich! :wink:[/edit]
[edit2]Rechtschreibfehler[/edit2]

S2B 19. Jul 2005 16:05

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Der Dateiname wird schon beim Upload ausgelesen und befindet sich dann in $_FILES['userfile']['name']. Wenn du also den Namen verändern willst, musst du einfach jeweils das $_FILES['userfile']['name'] durch den Namen (evtl. mit Dateierweiterung) austauschen.

mr47 19. Jul 2005 20:37

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Hi. Ok ich hab den Code folgendermaßen abgeändert:

Code:
<?php
// In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt $_FILES verwenden.
// In PHP kleiner als 4.0.3 verwenden Sie copy() und is_uploaded_file() anstatt von
// move_uploaded_file()

$uploaddir = '/tmp/';

print "<pre>";
if (move_uploaded_file("C:\a.txt", $uploaddir . "abc.txt")) { 
   print "File is valid, and was successfully uploaded. Here's some more debugging info:\n";
   print_r($_FILES);
} else { 
   print "Possible file upload attack!  Here's some debugging info:\n";
   print_r($_FILES);


?>
Die Ausgabe im Browser ist

Zitat:

Possible file upload attack! Here's some debugging info:
Array
(
)
und die Datei liegt nicht im Serververzeichnis :-( Sowohl C:\a.txt als auch das Verzeichnis(C:\InetPub\wwwroot)\tmp\ existieren. Was ist falsch ? :-| (Der Pfad in den Klammern kommt von IIS)
mfg mr47

Phistev 19. Jul 2005 20:52

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Falsch ist, dass du versucht, auf die Festplatte des Servers zuzugreifen, anstatt auf die Datei die der Benutzer per Formular hochlädt. Ersetz also
Code:
if (move_uploaded_file("C:\a.txt", $uploaddir . "abc.txt")) {
mit
Code:
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . "abc.txt")) {
, dann sollt's funzen.

mr47 19. Jul 2005 21:18

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Aha! Danke!

Kann ich so
Code:
$_FILES['userfile']['tmp_name']='C:\a.txt';
etwas in die Variable $_Files schreiben? Weil wenn ich das so mache und dann die Codezeile
Code:
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . 'abc.txt')
verwende kommt

Zitat:

Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[tmp_name] => C:\a.txt
)

)

Und die DAtei ist wieder net auf em Server. Oder darf man das so auch net machen?
PS: Also ich will momentan noch immer die gleiche DAtei hochladen. Keine verschiedene! Deshalb dieses Hardgecodete "C:\a.txt" :wink:

mfg mr47

Phistev 19. Jul 2005 21:34

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Die Funktion interessiert (erstmal) nicht, wie die Datei heißt, sondern ob sie hochgeladen wurde. Dateien im Stammverzeichnis des Servers sind das normalerweise nicht. Vergiss niemals, dass das Script auf dem Server läuft, also nicht auf die Festplatte des Clients zugreifen kannst. Wenn du immer die gleiche Datei hochladen möchtest, musst du im Formular immer wieder die gleiche Datei angeben.

mr47 20. Jul 2005 12:09

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Ich hab jetzt verstanden wo mein denkfehler liegt! Aber das mit immer der gleichen Datei kann ich net glauben. Ein Formular schreibt doch auch nur was in die Variable rein, oder? Dann muss ich dass doch auch manuell machen können....


mfg und Danke mr47

Airblader 20. Jul 2005 12:16

Re: (PHP) Copy() bzw. Move_Uploaded_file() > Wie funktion
 
Nein, es ist sicherheitstechnisch nicht möglich.
Was für ein Paradies für Hacker wäre es denn, sowas zu machen?

Dateinamen können NUR manuell vom User festgelegt werden (input mit type file).
Der Trick dabei ist, dass nicht der Dateiname im Script bei dir vorhanden ist.

Mit Absenden des FOrmulars wird die Datei autom. temporär hochgeladen.
move_uploaded_file verschiebt sie nur - wie der Name sagt - in ein Verzeichnis,
in dem die Datei nach Scriptende nicht gelöscht wird.

air


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz