2016-04-23 27 views
0

Ich habe ein Problem mit meinem Code, speziell mit der move_uploaded_file. Ich änderte den Ordner Ich behalte die Bilder in Berechtigungen auf 777, um sicherzustellen, dass es kein Problem mit den Berechtigungen war. Ich lese auch ein PHP-Handbuch zur Verwendung von move_uploaded_file von w3schools.com. Ich habe keine Ideen mehr, wie ich mein Bild mit php in einen Ordner hochladen kann. Bitte helfen Sie. Hiermove_uploaded_file funktioniert nicht, aber kein Fehler

ist der Teil des Codes mit dem move_uploeaded_file:

<?php 
    if (@$_GET['action'] == "ci"){ 
     echo "<form action='account.php?action=ci' method='POST' enctype='multipart/form-data'><br /> 
     Available file extention: <stong>.PNG .JPG .JPEG</stong><br /><br /> 
     <input type='file' name='image' /><br /> 
     <input type='submit' name='change_pic' value='Change' /><br /> 
     </form>"; 
     if (isset($_POST['change_pic'])) { 
      $errors = array(); 
      $allowed_e = array('png', 'jpg', 'jpeg'); 

      $file_name = $_FILES['image']['name']; 
      $file_e = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); 
      $file_s = $_FILES['image']['size']; 
      $file_tmp = $_FILES['image']['tmp_name']; 

      if(in_array($file_e, $allowed_e) === false) { 
       $errors[] = 'This file extension is not allowed.'; 
      } 

      if ($file_s > 2097152) { 
       $errors[] = 'File size must be under 2MB'; 
      } 

      if (empty($errors)) { 
       move_uploaded_file($file_tmp, '../images/'.$file_name); 
       $image_up = '../images/'.$file_name; 
       $check = mysqli_query($connect, "SELECT * FROM users WHERE usename='"[email protected]$_SESSION['username']."'"); 
       $rows = mysqli_num_rows($check); 

       while($row = mysqli_fetch_assoc($check)) { 
        $db_image = $row['profile_pic']; 
       } 
       if($query = mysqli_query($connect, "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'")) 
        echo "You have successfuly changed your profile picture!"; 
     } else { 
       foreach($errors as $error) { 
        echo $error, '<br />'; 
       } 
      } 
     } 
    } 
?> 
+0

Es gibt mehrere Orte, wo man '@' verwenden, um Fehler zu unterdrücken. Sie sollten diese entfernen, sehen, welche Fehler angezeigt werden, und sie alle wirklich beheben. Es ist möglich, dass dein Skript aus anderen Gründen stirbt. – larsAnders

+1

@Anoopsaju
ist der richtige Weg, um Tags wie das zu schließen. – SkrillexNukehulk

+0

@larsAnders Ich werde das bald versuchen. – SkrillexNukehulk

Antwort

1

Hier ist das letzte Stück des Codes, etwas neu geschrieben. move_uploaded_file gibt einen boolean, so können wir testen, ob es durch die Einrichtung einer Variable $ result wahr oder falsch ist:

 if (empty($errors)) { 
      $image_up = 'images/'.$file_name; 
      $result = move_uploaded_file($file_tmp, $image_up); 

      if($result){ 
       //this line had a typo usename -> username 
       //Also, you should change this over to using parameters and binding values ASAP. This leaves you open to hacking. 
       $check = mysqli_query($connect, "SELECT * FROM users WHERE username='"[email protected]$_SESSION['username']."'"); 
       $rows = mysqli_num_rows($check); 

       while($row = mysqli_fetch_assoc($check)) { 
        $db_image = $row['profile_pic']; 
       } 
       $q = "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'"; 
       if($query = mysqli_query($connect, $q)){ 
        echo "You have successfuly changed your profile picture!"; 
        } 
      } else { 
       echo "Upload failed."; 
      } 
    } else { 
      foreach($errors as $error) { 
       echo $error, '<br />'; 
      } 
     } 
    } 
} 
+0

Ich bin nicht sehr gut mit Sicherheit, wie Sie sehen können. Was sind verbindliche Werte? – SkrillexNukehulk

+0

Auschecken [die Dokumentation zu parametrisierten Abfragen mit mysqli] (http://php.net/manual/en/mysqli.prepare.php). – larsAnders

+0

Okay, ich werde es überprüfen. Wie auch immer, danke für die schnelle Lösung! Sie kritisieren mich nicht so scharf wie manche Leute. – SkrillexNukehulk

Verwandte Themen