2017-04-20 4 views
0

Ich habe ein Feld, das nicht für ein Bild-Upload erforderlich ist .. Das Problem ist, dass, wenn der Benutzer kein Bild hinzufügen, fügt es immer noch das umbenannte Bild ohne ext.Leeres Feld sendet immer noch Informationen

so im Grunde legt sie einen Namen in der Datenbank

 if (isset($_POST['submit'])) { 

     $Name = $_POST['name']; 
     $Description = $_POST['description']; 

     $file = $_FILES['photo']['name']; 
     $ext = pathinfo($file, PATHINFO_EXTENSION); 
     $rename_image = generate_random(12); 
     $file_loc = $_FILES['photo']['tmp_name']; 
     $file_type = $_FILES['photo']['type']; 
     $file_size = $_FILES['photo']['size']; 
     $newFilename = $rename_image . '.' . $ext; 
     $folder = "../uploads/"; 

     if (empty($Name)) { 
      $errors[] = "Name Required."; 
     } 

     if (!empty($_FILES['photo']['name'])) { 
     } 

     if (($file_size > 2097152)) { 

      echo validation_errors("Your avatar exceeds file size"); 
     } elseif (($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 

      echo validation_errors("Invalid image format.");  


     if (!empty($errors)) { 
      echo validation_errors($errors[0]); 

     } else { 

     move_uploaded_file($file_loc, $folder.$newFilename); 

     $db = dbconnect(); 
     $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
     $stmt->bind_param('sss', $Name, $Description, $newFilename); 
     $stmt->execute();   
     $stmt->close(); 

     header("Location: managecategories.php"); 

    } 
    } 
} 

Antwort

0

Überprüfen Sie, ob Datei vorhanden ist oder hochgeladen mit file_exists oder/und is_uploaded_file Funktionen.

if(file_exists($_FILES['photo']['tmp_name']) || is_uploaded_file($_FILES['photo']['tmp_name']) { 
    $file = $_FILES['photo']['name']; 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $rename_image = generate_random(12); 
    $file_loc = $_FILES['photo']['tmp_name']; 
    $file_type = $_FILES['photo']['type']; 
    $file_size = $_FILES['photo']['size']; 
    $newFilename = $rename_image. 
    '.'.$ext; 
    $folder = "../uploads/"; 

    if (($file_size > 2097152)) { 
     echo validation_errors("Your avatar exceeds file size"); 
    } 
    else if(($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 
     echo validation_errors("Invalid image format."); 
    } 
    else { 
     move_uploaded_file($file_loc, $folder.$newFilename); 
    } 
} 
+0

Ich brauche nicht zu überprüfen, ob eine Datei vorhanden ist, wenn das Feld leer ist Ich brauche es nicht, einen Namen zu generieren und setzen Sie sie – Case

+0

Dann müssen wir Form Code ... – Oen44

1

Überprüfen Sie, ob die Parametervariable gesetzt ist, bevor Sie sie verwenden.

if (!empty($_FILES['photo']['name'])) { 
    $file = $_FILES['photo']['name']; 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $rename_image = generate_random(12); 
    $file_loc = $_FILES['photo']['tmp_name']; 
    $file_type = $_FILES['photo']['type']; 
    $file_size = $_FILES['photo']['size']; 
    $newFilename = $rename_image . '.' . $ext; 
    $folder = "../uploads/"; 

    if (empty($Name)) { 
     $errors[] = "Name Required."; 
    } 

    if (($file_size > 2097152)) { 

     echo validation_errors("Your avatar exceeds file size"); 
    } elseif (($file_type != "image/jpeg") && ($file_type != "image/jpg") && ($file_type != "image/gif") && ($file_type != "image/png")) { 

     echo validation_errors("Invalid image format.");  


    if (!empty($errors)) { 
     echo validation_errors($errors[0]); 

    } else { 

    move_uploaded_file($file_loc, $folder.$newFilename); 

    $db = dbconnect(); 
    $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
    $stmt->bind_param('sss', $Name, $Description, $newFilename); 
    $stmt->execute();   
    $stmt->close(); 

    header("Location: managecategories.php"); 
} 
+0

ich den Code geändert, aber es sendet es immer noch an db LV8UIYKNOXU9. wenn kein Bild ausgewählt ist. aber mit einem Bild ausgewählt funktioniert perfekt – Case

+0

Was zeigt 'var_dump ($ _ FILES ['Foto'])' zeigen? – Barmar

+0

Sie haben nicht das 'if' um den Code, der die Datei verschiebt. – Barmar

Verwandte Themen