• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datein verschieben durch <option>

Status
Für weitere Antworten geschlossen.

KillaH

Neues Mitglied
Hoi
ich bins malwieder und hab folgendes Problem
ich hab ein Normales Uploadscript aus'm Internet gesucht und es klappt auch wunderbar nur ich will das so hinbekommen, dass man ein Optionfeld hat wo man 1 von 3 Namen wählen kann und das hochgeladene Bild wird dann in den Ordner verschoben (je nachdem welcher name gewählt wurde)
ginge das i-wie?
 
PHP:
switch($_POST['ort'])
{
    case 'lustig': move_uploaded_file(..., '../lustig/'); break;
    case 'nicht lustig': move_uploaded_file(..., '../nicht_lustig/'); break;
    default/*STANDART*/: move_uploaded_file(..., '../so_mittel_so/'); break;
}
 
und was is mit den Option Feldern? xD
ich bin son Totaler Kackn00b ich kann das nich so wirklich mit php sorry :roll:
 
also das mit dem option feld ne... da schreibst du ja

HTML:
<select name="ort">
<option>lustig</option>
<option>so mittel so</option>
<option>nicht lustig</option>
</select>

und das kannste dan mit PHP in der variable $_POST['ort'] empfangen da steht den das drin was du in dem formular ausgewählt hast.
 
also ich habs jetzt einfach engefügt und dann kommt folgendes

Parse error: syntax error, unexpected '.', expecting ')' in /usr/export/www/vhosts/funnetwork/hosting/killahzone/upl/index.php on line 46


wäre dann

case 'lustig': move_uploaded_file(..., '../lustig/'); break;

??? versteh ich i-wie nicht
 
ja da wo steht ... bei move_uploaded_file müsste sowas stehen

$_FILES['name']['tmp_name']
 
Also muss ich das noch hinzufügen oder nur so eine stelle suchen?

so hab ichs jezz

PHP:
<?php
// Variabeln festlegen
$max_byte_size = 5000000;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";
switch($_POST['ort'])
{
    case 'lustig': move_uploaded_file(..., '../lustig/'); break;
    case 'nicht lustig': move_uploaded_file(..., '../nicht_lustig/'); break;
    default/*STANDART*/: move_uploaded_file(..., '../so_mittel_so/'); break;
}
// Formular wurde abgeschickt
if ( isset($_POST['submit']) ) {
// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"])) {
// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {
// Alles OK -> Datei kopieren
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {
echo "<center><img src=\"upload/erfolg.png\"></center><br><br>";
echo "<img src=\"upload/ip.png\"> $REMOTE_ADDR; wurde aus sicherheitsgründen gespeichert!<br>";
echo "<img src=\"upload/name.png\"> " . $_FILES["file"]["name"] . "<br>";
echo "<img src=\"upload/size.png\"> " . $_FILES["file"]["size"] . " Byte<br>";
echo "<img src=\"upload/link.png\"> <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a><br>";
echo "<img src=\"upload/html.png\"> &lt;img src=\"http://killahzone.ki.funpic.de/upl/" . $_FILES["file"]["name"] . "\"&gt;<br><br><br><br>";
echo "<center><img class=\"img\" src=\"" . $_FILES["file"]["name"] . "\"></center>";
}
else {
echo "<center><img src=\"upload/nichthochgeladen.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/byte1.png\"> " . $max_byte_size . " <img src=\"upload/byte2.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/endung.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/keinedatei.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/upform.png\"></center>";
}
?>

o.o
 
Ganz einfach, @ Slibbo, da fehlt ein value im option-Tag.
Aber jetzt zur Lösung:

HTML-FORM:
Code:
...
<select name="dir">
<option value="admin_pics">./admin_pics/</option>
<option value="member_pics">./member_pics/</option>
<option value="user_pics">./user_pics/</option>
</select>
...

PHP:
...
move_uploaded_file($_FILES['file']['tmp_name'], "./".$_REQUEST['dir']."/".$_FILES['file']['name']);     
...

Am besten ist es, wenn du noch eine Zahl (die sollte zufällig erstellt werden) zur Identifizierung dem Namen voranstellst.
 
hm O.o klappt i-wie nicht
da mach ich i-was falsch

PHP:
<?php
// Variabeln festlegen
$max_byte_size = 5000000;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";
 
// Formular wurde abgeschickt
if ( isset($_POST['submit']) ) {
// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"])) {
// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {
move_uploaded_file($_FILES['file']['tmp_name'], "./".$_REQUEST['dir']."/".$_FILES['file']['name']);
// Alles OK -> Datei kopieren
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {
echo "<center><img src=\"upload/erfolg.png\"></center><br><br>";
echo "<img src=\"upload/ip.png\"> $REMOTE_ADDR; wurde aus sicherheitsgründen gespeichert!<br>";
echo "<img src=\"upload/name.png\"> " . $_FILES["file"]["name"] . "<br>";
echo "<img src=\"upload/size.png\"> " . $_FILES["file"]["size"] . " Byte<br>";
echo "<img src=\"upload/link.png\"> <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a><br>";
echo "<img src=\"upload/html.png\"> &lt;img src=\"http://killahzone.ki.funpic.de/upl/" . $_FILES["file"]["name"] . "\"&gt;<br><br><br><br>";
echo "<center><img class=\"img\" src=\"" . $_FILES["file"]["name"] . "\"></center>";
}
else {
echo "<center><img src=\"upload/nichthochgeladen.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/byte1.png\"> " . $max_byte_size . " <img src=\"upload/byte2.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/endung.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/keinedatei.png\"></center>";
}
}
else {
echo "<center><img src=\"upload/upform.png\"></center>";
}
?>

ergibt

Warning: copy(/usr/export/tmp/phpANdkkL) [function.copy]: failed to open stream: Datei oder Verzeichnis nicht gefunden in /usr/export/www/vhosts/funnetwork/hosting/killahzone/upl/index.php on line 66

wäre if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {

häte ich das mit dem switch oder so drinlassen sollen?

könntet ihr nicht mal mein Code kopieren und direkt verbessern?
 
nein, schließlich sind wir nich da um scripte zu schreiben, sonder um zu helfen.

Wenn du ein fertiges Script willst hilft dir Onkel oder die Jobbörse
 
ihr sollte ja nur ein paar zeilen drüber un drunter kopiern damit ich weiß wos hinkommt x)
 
ach ja und wenn das dan auch noch sicher sein soll, dann ist
PHP:
move_uploaded_file($_FILES['file']['tmp_name'], "./".$_REQUEST['dir']."/".$_FILES['file']['name']);

eine ganz schlechte idee :-D
 
Super dann is das unsicher aber was ist dann sicher :''( und ich weiß immernoch wie ich die Version dann einbauen kann weil ich die zeilen drumherum nicht kenne
 
PHP:
move_uploaded_file($_FILES['file']['tmp_name'], "./".$_REQUEST['dir']."/".$_FILES['file']['name']);

ist unsicher, da man die daten jetzt beliebig überall auf den server kopieren könnte indem man die post variable "ort" z.b. so abändert

../../../anderer/ordner

nebenbei kann man in deinem script z.b. einer shell einfach die endung .jpg geben und dann über einen RFI lücke überall in dein script einbinden, da man den ort der datei ja auch selber bestimmen kann.

zu deinem problem...

änder volgende zeilen

PHP:
if($_FILES["file"]["size"] <= $max_byte_size) {
move_uploaded_file($_FILES['file']['tmp_name'], "./".$_REQUEST['dir']."/".$_FILES['file']['name']);
// Alles OK -> Datei kopieren
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {

einfach in das hier...

PHP:
if($_FILES["file"]["size"] <= $max_byte_size) {

// Alles OK -> Datei kopieren
if(move_uploaded_file($_FILES['file']['tmp_name'], "./".del_chars($_REQUEST['dir'])."/".$_FILES['file']['name'])) {

um das noch n bissel sicher zu gestalten fügst du in das script jetzt unter

<?php

folgenden code ein.

PHP:
function del_chars($resource)
{
    $replace = array('/', '\\', '%', '.');
    $resource = str_replace($replace, '', $resource);
    return $resource:
}

sollte dan ungefähr so aussehen unter <?php

PHP:
<?php

function del_chars($resource)
{
    $replace = array('/', '\\', '%', '.');
    $resource = str_replace($replace, '', $resource);
    return $resource:
}

// Variabeln festlegen
$max_byte_size = 5000000;
$allowed_types = "(jpg|jpeg|gif|bmp|png)";

MFG Miah

//Edit: sorry mein fehler ploedes copy&pasta *gg* habs verbessert :)
 
Zuletzt bearbeitet von einem Moderator:
ja sorry v.v Ich habs nich gesehn aber jetzt kommt das

Parse error: syntax error, unexpected ';' in /usr/export/www/vhosts/funnetwork/hosting/killahzone/upl/index.php on line 95

wäre

if(move_uploaded_file($_FILES['file']['tmp_name'], "./".del_chars($_REQUEST['dir'])."/".$_FILES['file']['name']);) {


muss da jetzt ein : statt ; ??
 
Zuletzt bearbeitet:
dann beend' den befehl mal richtig.
noch besser: lern' endlich mal die grundzüge von PHP...

ich sag' nur semikolon...

Nils aka XraYSoLo
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben