Problem mit move_uploaded_file()

Hi Community,
Ich habe ein Bilderupload(es ist keine Hosting Site) und möchte das hochgeladene Bild
mittels move_uploaded_file() verschieben. Hier mein Skript:

[code]<?
include(‘db.php’);
$userfilename = “sprite”; // name das datei-input-felds in der form
$zielverzeichnis = “/upload”; // hierhin wirds gespeichert

if(isset($_FILES[$userfilename])){
switch($_FILES[$userfilename][‘error’]){
case 0: break; // kein fehler
case 1: die(“Datei ist zu groß.”);
case 2: die(“Datei ist zu groß.”);
case 3: die(“Datei wurde nicht vollständig hochgeladen.”);
case 4: die(“Es wurde keine Datei hochgeladen.”);
}

// ist´s ein bild?
if(substr($_FILES[$userfilename]['type'], 0, 5) != 'image')
    die("Datei ist kein Bild!");

// umbennenen, falls datei existiert
$i = 1;
$newname = $_FILES[$userfilename]['name'];
while(is_file("$zielverzeichnis/$newname")){
    $ext = strrchr($_FILES[$userfilename]['name'], '.');
    $newname = substr($_FILES[$userfilename]['name'], 0, -(strlen($ext)+1)) . "_$i.$ext";
    $i++;
}

// verschieben
echo move_uploaded_file($_FILES[$userfilename]['tmp_name'], "$zielverzeichnis/$newname") ? "Datei wurde erfolgreich hochgeladen." : "Speichern der Datei schlug fehl.";

$einfuegen=“INSERT INTO ‘sprites’
(id,macher,name,beschreibung,pokemon,src)
VALUES
(’’
,’$_POST[mache]’
,’$_POST[name]’
,’$_POST[beschreibung]’
,’$_POST[pokemon]’
,’’
)”;
$eintrag=mysql_query($einfuegen);
}
else{
?>

Sprite auswählen:

Macher:

Hybrid Pokemon Name:

Beschreibung:

Pokemon, aus denen es besteht:

<? } ?>[/code]

Und hier die Fehlermeldung:

Warning: move_uploaded_file(/upload/meisterball.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in /users/furien/www/upload.php on line 29

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move ‘/users/furien/temp/phpOnmcoy’ to ‘/upload/meisterball.png’ in /users/furien/www/upload.php on line 29
Speichern der Datei schlug fehl.

Könnt ihr mir helfen?

Lass beim Zielverzeichnis mal den “/” am Anfang weg. :wink:

Okay Danke, das hat schon mal geklappt,
aber erstens wird nichts in die DB eingetragen warum?
Zweitens wie kann ich verhindern, dass Schadcode eingeschleust wird und
drittens wie kann ich den filetyp und die max. Größe einstellen?
Ich hoffe ich stelle nicht zu viele Fragen^^
Und DANKE wenn sie mir wer beantwortet.

de3.php.net/function.getimagesize
und
$_FILES[‘size’]

INSERT INTO 'sprites’
sollte sein:
INSERT INTO sprites

$_POST[mache]
durch
$_POST[‘mache’]
ersetzen. usw.

us.php.net/manual/de/function.my … string.php

us.php.net/manual/de/ref.fileinfo.php
us.php.net/manual/de/function.getimagesize.php
us.php.net/manual/de/features.fi … method.php ($_FILES[‘userfile’][‘size’])

Danke!
Ich habe es jetzt so: [code]$macher = $_POST[“macher”];
$name = $_POST[“name”];
$beschreibung = $_POST[“beschreibung”];
$pokemon = $_POST[“pokemon”];

$einfuegen=“INSERT INTO sprites
(id,macher,name,beschreibung,pokemon,src)
VALUES
(’’,
,’$macher’
,’$name’
,’$beschreibung’
,’$pokemon’
,’$zielverzeichnis/$newname’
)”;
$eintrag=mysql_query($einfuegen);
echo $eintrag;[/code]

funktioniert aber immer noch nicht.

('', ,'$macher'
Da ist ein Komma zu viel…

Juhuu es geht jetzt nur noch Schutz, Filesize und Filetype rein und ich bin fertig
vielen Dank Leute!

Okay: ich habe doch noch ein Problem.
SO sieht mein Script nun aus:

[code]<?
include(‘db.php’);
$userfilename = “sprite”; // name das datei-input-felds in der form
$zielverzeichnis = “upload”; // hierhin wirds gespeichert

$zufall = rand(1,100).rand(1,100).rand(1,100).rand(1,100).rand(1,100);

if (empty($_POST[“macher”])) {
echo ‘Bitte gib einen Macher an!
Zurück’;
}

elseif (empty($_POST[“name”])) {
echo ‘Bitte gib den Hybrid-Sprite Namen an!
Zurück’;
}

elseif (empty($_POST[“beschreibung”])) {
echo ‘Bitte gib eine Beschreibung an!
Zurück’;
}

elseif (empty($_POST[“pokemon”])) {
echo ‘Bitte gib die Pokemon an, aus denen dein Hybrid-Sprite besteht!
Zurück’;
}
elseif ($_POST[“zufallfeld”] == $zufall or empty($_POST[“zufallfeld”])) {
echo ‘Bitte gib den richtigen Code ein!
Zurück’;
}
else {

    if(isset($_FILES[$userfilename])){
        switch($_FILES[$userfilename]['error']){
            case 0: break; // kein fehler
            case 1: die("Datei ist zu groß.");
            case 2: die("Datei ist zu groß.");
            case 3: die("Datei wurde nicht vollständig hochgeladen.");
            case 4: die("Es wurde keine Datei hochgeladen.");
     }

     // ist´s ein bild?
    if(substr($_FILES[$userfilename]['type'], 0, 5) != 'image')
        die("Datei ist kein Bild!");

    // umbennenen, falls datei existiert
    $i = 1;
    $newname = $_FILES[$userfilename]['name'];
    while(is_file("$zielverzeichnis/$newname")){
        $ext = strrchr($_FILES[$userfilename]['name'], '.');
        $newname = substr($_FILES[$userfilename]['name'], 0, -(strlen($ext)+1)) . "_$i.$ext";
        $i++;
    }


    // verschieben
    echo move_uploaded_file($_FILES[$userfilename]['tmp_name'], "$zielverzeichnis/$newname") ? "Dein Sprite wurde erfolgreich
    hochgeladen. Du findest es <a href=\"index.php?page=sprites\">hier</a>." : "Speichern der Datei schlug fehl.";



    $macher = $_POST["macher"];
    $name = $_POST["name"];
    $beschreibung = $_POST["beschreibung"];
    $pokemon = $_POST["pokemon"];

    $einfuegen="INSERT INTO `sprites`
    (id,name,macher,beschreibung,pokemon,src)
    VALUES
    (
        ''
        ,'$name'
        ,'$macher'
        ,'$beschreibung'
        ,'$pokemon'
        ,'$zielverzeichnis/$newname'
    )";
    $eintrag=mysql_query($einfuegen);
    echo $eintrag;
    }

}
else{
?>

Hybrid Sprites uploaden

Bitte lade nur eigene Sprites und nur Sprites hoch!

Wenn etwas anderes als Hybrid Sprites hochgeladen wird, werde ich es sofort löschen.

Also bitte erspart mir die Arbeit und ladet nur Hybrid Sprites von euch hoch.

Viel Spaß wünscht euch pika8!

Sprite auswählen:

Macher:

Hybrid Pokemon Name:

Beschreibung:

Pokemon, aus denen es besteht:

Bitte gib hier diesen <?php echo $zufall; ?> Code ein:

<? } ?>[/code]

Ich bekomme folgende Fehlermeldung Parse error: syntax error, unexpected '}' in /users/furien/www/upload.php on line 78
da ich versuche die If anweisungen total komisch zu verschachhteln,was aber leider nicht anders geht.

Also ich mache es theoretisch so:

[code]

<?php if () { } else { if () { } } else { ?>

//FORMULAR

<? } ?>[/code]

Kann man das irgendwie lösen?

EDIT Ich habe es noch einmal geändert(sieht aus wie oben) und jetzt kriege ich Parse error: syntax error, unexpected T_ELSE in /users/furien/www/upload.php on line 78 Wahrscheinlich, weil das else der zweiten if nicht direkt nach der zweiten if, sondern
erst nach der } des ersten else kommt, oder?

Du kannst nicht zwei mal “else” hintereinander benutzen. Wenn das zweite “else” sich auf das zweite “if” beziehen soll, dann muss es diesem auch unmittelbar folgen…

Btw:
Das Cpatcha-System ist witzlos und nach kurzem überfliegen des Codes würde ich sagen, dass es vermutlich noch nicht mal funktioniert.

Das Captcha wollte ich ja auch nur vorrübergehend haben.
Und dann muss ich mir wohl was anderes einfallen lassen…