Page 1 sur 1

upload et rien....page blanche !

Posté : 03 mai 2006, 10:56
par tom_
Salut,

J'ai un probleme avec un upload... qui marche en local mais pas sur le serveur
résultat : page blanche et pas de message d'erreur

voici mon code :
$rep_img="../img_cle/";
$nomcle = htmlspecialchars($_POST['nomcle'],ENT_QUOTES );


$fic_name  = $_FILES['file']['name'];
$fic_tmp_name=$_FILES['file']['tmp_name'];
$fic_name  = str_replace(' ','_',$fic_name);
$fic_name  = str_replace('-','_',$fic_name);
$fic_name  = str_replace('é','e',$fic_name);
$fic_name  = str_replace('ê','e',$fic_name);
$fic_name  = str_replace('è','e',$fic_name);
$fic_name  = str_replace('à','a',$fic_name);
$fic_name  = str_replace('ù','u',$fic_name);
$fic_name = strtolower($fic_name);
$extension = strrchr($fic_name,".");

//echo $id_produit;

if ($extension != ".jpg" and $extension!=".jpeg" and $extension!=".JPG" and $extension!=".JPEG" and $extension!=".gif" and $extension!=".GIF" and $extension!=".png" and $extension!=".PNG")
        {
        $msg="Mauvais format";
                header('location:cle.php?msg='.$msg);
        }

elseif(move_uploaded_file($fic_tmp_name, $rep_img.$fic_name))
        {
        $sql="INSERT INTO cle_photo (id_photo,cle,photo) VALUES ('','$nomcle','$fic_name')";
        $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

                 if ($req){
                //message de validation
                $msg="photo enregistrée";
                header('location:cle.php?msg='.$msg);
        }

}

Posté : 03 mai 2006, 10:58
par guilt92
Je reprend ce que j ai dit dans l autre post :

Essaye deja de mettre des echo "test" et echo "test2" dans chacun des deux if pour voir dans lequel tu rentres, ca permettra de localiser le probleme.

Posté : 03 mai 2006, 11:01
par Cyrano
S'il n'y a pas de message d'erreurs, tu peux peut-être ajouter des options permettant justement l'affichage d'erreurs personnalisées le temps du débuggage: ajoute un else{} là où il n'y en a pas par exemple après un if/elseif/rien-du-tout : ça te permettra de voir au moins où tu es dans l'exécution : soit ça affiche l'erreur du else auquel cas le problème est AVANT, soit ça n'affiche pas et alors soit c'est APRÈS, soit ça n'est carrément pas rentré dans le traitement...

Posté : 03 mai 2006, 11:02
par tom_
Je n'ai pas de test qui s'affiche à l'écran... :shock:
$rep_img="../img_cle/";
$nomcle = htmlspecialchars($_POST['nomcle'],ENT_QUOTES );


$fic_name  = $_FILES['file']['name'];
$fic_tmp_name=$_FILES['file']['tmp_name'];
$fic_name  = str_replace(' ','_',$fic_name);
$fic_name  = str_replace('-','_',$fic_name);
$fic_name  = str_replace('é','e',$fic_name);
$fic_name  = str_replace('ê','e',$fic_name);
$fic_name  = str_replace('è','e',$fic_name);
$fic_name  = str_replace('à','a',$fic_name);
$fic_name  = str_replace('ù','u',$fic_name);
$fic_name = strtolower($fic_name);
$extension = strrchr($fic_name,".");

//echo $id_produit;

if ($extension != ".jpg" and $extension!=".jpeg" and $extension!=".JPG" and $extension!=".JPEG" and $extension!=".gif" and $extension!=".GIF" and $extension!=".png" and $extension!=".PNG")
        {
        $msg="Mauvais format";
        echo "test1";
                header('location:cle.php?msg='.$msg);
        }

elseif(move_uploaded_file($fic_tmp_name, $rep_img.$fic_name))
        {
        $sql="INSERT INTO cle_photo (id_photo,cle,photo) VALUES ('','$nomcle','$fic_name')";
        $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
         echo "test2";
                 if ($req){
                     echo "test3";
                //message de validation
                $msg="photo enregistrée";
                header('location:cle.php?msg='.$msg);
        }

}

Posté : 03 mai 2006, 11:04
par guilt92
Donc Cyrano a raison, tu ne rentres dans aucune des deux boucles.

Posté : 03 mai 2006, 11:04
par Cyrano
As-tu bien lu et compris ce que j'ai suggéré ??? :-k

Posté : 03 mai 2006, 11:12
par tom_
dsl cyrano je n'ai pas regardé ton post

donc en effet il ne rentre pas dans le traitement
$rep_img="../img_cle/";
  $nomcle = htmlspecialchars($_POST['nomcle'],ENT_QUOTES );


$fic_name  = $_FILES['file']['name'];
$fic_tmp_name=$_FILES['file']['tmp_name'];
$fic_name  = str_replace(' ','_',$fic_name);
$fic_name  = str_replace('-','_',$fic_name);
$fic_name  = str_replace('é','e',$fic_name);
$fic_name  = str_replace('ê','e',$fic_name);
$fic_name  = str_replace('è','e',$fic_name);
$fic_name  = str_replace('à','a',$fic_name);
$fic_name  = str_replace('ù','u',$fic_name);
$fic_name = strtolower($fic_name);
$extension = strrchr($fic_name,".");



if ($extension != ".jpg" and $extension!=".jpeg" and $extension!=".JPG" and $extension!=".JPEG" and $extension!=".gif" and $extension!=".GIF" and $extension!=".png" and $extension!=".PNG")
        {
        $msg="Mauvais format";
        echo "test1";
                header('location:cle.php?msg='.$msg);
        }

elseif(move_uploaded_file($fic_tmp_name, $rep_img.$fic_name))
        {
        $sql="INSERT INTO cle_photo (id_photo,cle,photo) VALUES ('','$nomcle','$fic_name')";
        $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
         echo "test2";
                 if ($req)
                 {
                 echo "test3";
                 //message de validation
                 $msg="photo enregistrée";
                 header('location:cle.php?msg='.$msg);
                 }

        }
else
{
 echo "erreur !!";
}

Posté : 03 mai 2006, 11:14
par guilt92
Le probleme vient surement de la fonction move_uploaded_file(...) qui doit apparemment renvoie false ou rien... A la suite de ton echo "erreur !"; fais un echo de la valeur retournée par ta fonction cela expliquera surement pourquoi tu ne rentres pas dans le elseif...

Posté : 03 mai 2006, 11:16
par tom_
c'est etrange... ça marche en local

Posté : 03 mai 2006, 11:22
par tom_
Ok
else
{
 echo $fic_tmp_name;
 echo"<br />";
 echo $rep_img;
 echo"<br />";
 echo $fic_name;
}
il me retourne :

/tmp/phpxuDlQC
../img_cle/
pompe_mini.jpg

Posté : 03 mai 2006, 11:38
par tom_
que dois-je faire ?? pleeaaase :cry:

Posté : 03 mai 2006, 12:05
par guilt92
Si le filename est inexact ou que le fichier ne peut pas etre déplacé la fonction renverra FALSE donc tu ne rentreras pas dans la boucle.

A vérifier :
  • l'existence effective du fichier source
  • les permissions et l'existence du dossier de destination
Si ca marche en local mais pas sur le serveur c est peut etre un probleme de droits...

Posté : 03 mai 2006, 12:26
par tom_
je vais me renseigner auprès de notre hébergeur.
Merci