2012-07-23 4 views
0

J'ai un script de téléchargement d'image qui permet le téléchargement PHP simple des images de profil. Il échoue maintenant de façon inattendue sur le téléchargement. Je ne suis pas entièrement sûr pourquoi. J'ai vérifié le post_max_size et le upload_max_size et ils sont plus de 1MB. Je soupçonne que cela a à voir avec // Supprimer l'image précédente mais je ne sais pas pourquoi. Si vous regardez la requête où il est dit;Téléchargement d'image échouant de manière inattendue

AND image1 !='../files/noprofile.jpg' 

Cela signifie que si l'image de profil est l'image par défaut, l'image par défaut n'est pas supprimée. J'ai le sentiment qu'il s'agit de cette partie et le téléchargement échoue lorsque l'image est l'image de profil par défaut.

Je sais que je devrais utiliser mysqli mais s'il vous plaît ne mentionnez pas que je travaille dessus.

Voici le script entier avec quelques chose prise à des fins de simplicité:

session_start(); 
$username=$_SESSION['username']; 
$pass = $_SESSION['password']; 
$path = "../imageuploads/"; 

//Delete previous picture 
$pic = mysql_query(" 
SELECT * FROM members WHERE artist='Y' AND username='$username' AND password='$pass' AND image1 !='../files/noprofile.jpg' 
")or die(mysql_error()); 

while($fetchpic = mysql_fetch_array($pic)){ 

//if image1 does not equal no profile 
unlink($fetchpic['image1']); 

} 


$valid_formats = array("jpg", "png", "gif", "bmp", "jpeg"); 
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
    { 
     $name = $_FILES['photoimg1']['name']; 
     $size = $_FILES['photoimg1']['size']; 

     if(strlen($name)) 
      { 
       list($txt, $ext) = explode(".", $name); 
       if(in_array($ext,$valid_formats)) 
       { 
       if($size<(2024*2024)) 
        { 
         $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext; 
         $tmp = $_FILES['photoimg1']['tmp_name']; 
         if(move_uploaded_file($tmp, $path.$actual_image_name)) 
          { 
          mysql_query("UPDATE members SET image1='../imageuploads/$actual_image_name' WHERE username='$username' AND password ='$pass' AND artist='Y'"); 

           echo "<p1><img src='../imageuploads/".$actual_image_name."' class='imageright1'></p1>"; 
          } 
         else 
          echo "<p1>failed</p1>"; 
        } 
        else 
        echo "<p1>Your image is a bit too big. It has to be below 1MB.</p1>";     
        } 
        else 
        echo "<p1>Only JPG, PNG GIF and BMP file formats are accepted.</p1>"; 
      } 

     else 
      echo "<p1>You've gotta select an image first!</p1>"; 

     exit; 
    } 
+0

($ txt, $ ext) = exploser (".", "prénom.nom.jpg"); donnera un résultat inattendu –

+0

Que recommandez-vous à la place? –

+0

$ explodedName = explode ('.', $ Name); if (in_array ($ explodedName [count ($ explodedName) - 1], $ valid_formats) {.... –

Répondre

0

Dans votre balise de formulaire, ajoutez le enctype attribut:

<form action="page.php" method="post" enctype="multipart/form-data"> 
liste
+0

Cela a déjà été fait, pas le problème –

Questions connexes