OffTopicDatei Upload auf homepage?


18.02.2013, 15:01 - Ironhide99 - Fortgeschrittener - 107 Beiträge
Hallo!

Kann wer mir mal einen HTML oder php code sagen womit man datein Uploaden kann (auf seiner Homepage)?
wäre nett ich habe schon Welche Gefunden aber die gehen net ka why.

[img]http://img.eleven-games.net/images-i7213b70lrz.jpg[/img]

 
18.02.2013, 17:11 - BlackBonjour - Administrator - 1160 Beiträge
Das ist relativ einfach, als ersten musst du mittels HTML ein Formular erstellen, womit man die Datei auswählen kann:

Quelltext:
  1. <form action="ADRESSE/ZUR/PHP-DATEI.php" method="post">
  2.    <input type="file" name="datei">
  3. </form>
Bei action kommt der Pfad (am besten absolute) zur PHP Datei, welche alles auswertet und speichert. Dann brauchen wir jetzt die PHP Datei:

Quelltext:
  1. <?php
  2.    move_uploaded_file($_FILES['datei']['tmp_name'], '/ABSOLUTER PFAD WO DIE DATEI GESPEICHERT WERDEN SOLL/'.$_FILES['datei']['name']);
  3. ?>
Das ist eig. alles, aber ich würde noch div. Prüfungen machen wie z.B., ob es eine verbotene Datei ist etc., kann das aber jetzt aktuell nicht alles auflisten da ich noch auf der Arbeit bin Bigggrin

Damit du weißt was ich meine:

Quelltext:
  1. if(substr($_FILES['datei']['name'], -4) == '.exe')
  2. {
  3.   die('exe-Dateien sind nicht erlaubt.');
  4. }
Als Beispiel:

index.html -> das Formular von oben
upload.php -> der PHP-Code

index.html:

Quelltext:
  1. <form action="upload.php" method="post">
  2.    <input type="file" name="datei">
  3. </form>
Bei fragen schick mir ne PN.

[center]🤙 [img]http://www.gameshots.eu/images/2016/10/23/GirlontheWall-Signature510.png[/img][/center]

 
18.02.2013, 19:34 - Ironhide99 - Fortgeschrittener - 107 Beiträge
Geht irgendwie net sad
Ka why
schade

[img]http://img.eleven-games.net/images-i7213b70lrz.jpg[/img]

 
18.02.2013, 19:43 - BlackBonjour - Administrator - 1160 Beiträge
schreib mir mal einr pn mit den codes die du gespeichert hast und wie die dateien heissen. Ausserdem die Fehlermeldung, wenn eine da war.

[center]🤙 [img]http://www.gameshots.eu/images/2016/10/23/GirlontheWall-Signature510.png[/img][/center]

 
19.02.2013, 12:50 - BlackBonjour - Administrator - 1160 Beiträge
So, hab das Problem gefunden und habe dir jetzt ein ordentliches Uploadsystem gebastelt, welches 100%-ig funktioniert (getestet):

[php]
<?php
class config
{
var $destination = '/ZIELORDNER/'; // Der Pfad, wo die Dateien gespeichert werden sollen...
var $blacklist = array('.exe', '.php'); // Liste der verbotenen Dateien ...
}

function checkPath($folders, $mode = 'folder')
{
if(strpos($folders, '/') !== false)
{
$folderArray = explode('/', $folders);
$folderStr = '';

foreach($folderArray as $key => $folder)
{
if(($mode == 'file' && $folder != $folderArray[count($folderArray) - 1]) || $mode == 'folder')
{
$folderStr .= '/'.$folder;

if(!is_dir($folderStr))
{
mkdir($folderStr);
}
}
}
}
else if($mode == 'folder')
{
if(!is_dir($folders))
{
mkdir($folders);
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dateiupload <?php if(isset($_POST) && !empty($_POST)){echo '&raquo; Upload erfolgreich';} ?></title>
</head>
<body>
<?php
if(isset($_FILES) && !empty($_FILES))
{
$cfg = new config;
$bad = false;

checkPath($cfg->destination);

foreach($cfg->blacklist as $key => $bad)
{
$length = strlen($bad);

if(substr($_FILES['datei']['name'], '-'.$length) == $bad)
{
$bad = true;
}
}

if(!$bad)
{
move_uploaded_file($_FILES['datei']['tmp_name'], $cfg->destination.$_FILES['datei']['name']);

echo 'Upload erfolgreich.';
}
else
{
echo 'Upload fehlgeschlagen, Dateityp ist nicht erlaubt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="datei" /><br />
<input type="submit" value="Datei hochladen" />
</form>
</body>
</html>
[/php]

Du musst nur Zeile 4 und 5 konfigurieren, also de Zielordner und die Liste derr verbotenen Dateien (Komma getrennt und in ' oder "). Der Zielordner muss absolute sein, also z.B.:

/var/www/mein-upload-ordner/

Wichtig ist auch, dass der / am Ende des Pfades da ist, sonst kommt es zu fehlern. Auch sollte der Name der Datei keine / (Slashes) enthalten.
MfG

BlackBonjour

EDIT: Die Funktion „checkPath” dient zum prüfen des Ordner, ob dieser existiert. Sollte dieser nicht existieren, wird dieser erstellt. Allerdings kann das Script nur dort Ordner erstellen, wo du auch Zugriff hast wie FTP (wenn es ein Webhoster ist z.B.).

EDIT2: @Admins: Ich habe jetzt erst gemerkt dass ich nen DP innerhalb von 24h gemacht habe :/ Ich bitte um Gnade Bigggrin

[center]🤙 [img]http://www.gameshots.eu/images/2016/10/23/GirlontheWall-Signature510.png[/img][/center]

 
19.02.2013, 16:43 - Ironhide99 - Fortgeschrittener - 107 Beiträge
Danke ich Probiere es gleich mal aus smile
Geht net :

[toggle=Weiter Lesen smile]Warning: mkdir() [function.mkdir]: Permission denied in /users/modcraft/www/dateien.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/dateien.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/dateien.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/dateien.php on line 24

es war ne zip datei
[/toggle]
hmm
Ich habe gemacht

var $destination = '/users/modcraft/www/downloads/'; // Der Pfad, wo die Dateien gespeichert werden sollen...
------------------- mit NotePad++ --------------


Jetzt ist das so :
[toggle=Upload.php]
?php
class config
{
var $destination = ' da muss das / weg? stand da nähmlich -> modcraft/www/downloads/'; // Der Pfad, wo die Dateien gespeichert werden sollen...
var $blacklist = array('.exe', '.php'); // Liste der verbotenen Dateien ...
}

function checkPath($folders, $mode = 'folder')
{
if(strpos($folders, '/') !== false)
{
$folderArray = explode('/', $folders);
$folderStr = '';

foreach($folderArray as $key => $folder)
{
if(($mode == 'file' && $folder != $folderArray[count($folderArray) - 1]) || $mode == 'folder')
{
$folderStr .= '/'.$folder;

if(!is_dir($folderStr))
{
mkdir($folderStr);
}
}
}
}
else if($mode == 'folder')
{
if(!is_dir($folders))
{
mkdir($folders);
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dateiupload <?php if(isset($_POST) && !empty($_POST)){echo '&raquo; Upload erfolgreich';} ?></title>
</head>
<body>
<?php
if(isset($_FILES) && !empty($_FILES))
{
$cfg = new config;
$bad = false;

checkPath($cfg->destination);

foreach($cfg->blacklist as $key => $bad)
{
$length = strlen($bad);

if(substr($_FILES['datei']['name'], '-'.$length) == $bad)
{
$bad = true;
}
}

if(!$bad)
{
move_uploaded_file($_FILES['datei']['tmp_name'], $cfg->destination.$_FILES['datei']['name']);

echo 'Upload erfolgreich.';
}
else
{
echo 'Upload fehlgeschlagen, Dateityp ist nicht erlaubt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="datei" /><br />
<input type="submit" value="Datei hochladen" />
</form>
</body>
</html>
[/toggle]

[toggle=Fehler Code]

Warning: mkdir() [function.mkdir]: Permission denied in /users/modcraft/www/downloads/upload.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/downloads/upload.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/downloads/upload.php on line 24

Warning: mkdir() [function.mkdir]: No such file or directory in /users/modcraft/www/downloads/upload.php on line 24[/toggle]

[img]http://img.eleven-games.net/images-i7213b70lrz.jpg[/img]

 
19.02.2013, 19:23 - BlackBonjour - Administrator - 1160 Beiträge
Du hadt keine Berechtigung einen Ordner zu erstellen. Leg diesen Ordner per Hand an, dann geht es.

Deine Verzeichnis: /users/modcraft/www/ etc.

[center]🤙 [img]http://www.gameshots.eu/images/2016/10/23/GirlontheWall-Signature510.png[/img][/center]

 
20.02.2013, 08:46 - Ironhide99 - Fortgeschrittener - 107 Beiträge
BlackBonjour schrieb:
Du hadt keine Berechtigung einen Ordner zu erstellen. Leg diesen Ordner per Hand an, dann geht es.

Deine Verzeichnis: /users/modcraft/www/ etc.
Ich habe den ordner in FileZilla erstellt Bigggrin

[img]http://img.eleven-games.net/images-i7213b70lrz.jpg[/img]