begin process at 2012 05 28 13:51:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

j'ai un bug dans mon script upload HELP!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

j'ai un bug dans mon script upload HELP!!!

vendredi 22 septembre 2006 à 16:51:14 | j'ai un bug dans mon script upload HELP!!!

ptiloup73

Voila j'ai fais un forumulaire d'upload avec un check de l'extention mais bon .. je ne comprends pas pourquoi il plante.. je débute en php donc je pense que l'erreur vient des if et elseif... mais j'ai besoin qu'on me corrige mon script... merci d'avance.

Mon forumulaire :
[...]
<form name="add_sfupload" method="post" action="add_sfupload_code.php" enctype="multipart/form-data">
<div align="center">
<table width="655" border="0" align="center" cellpadding="0" cellspacing="0" id="pagesfupload">
<tr>
    <td colspan="2"><span class="style1">Ajouter un fichier :</span></td>
</tr>
<tr>
<td width="254"><input size="40" name="upload" type="file"></td>
<td width="372"><div align="right"><input name="hidden" type="hidden" value="" size="50" maxlength="50" /></div></td>
</tr>
<tr>
<td colspan="2">
<input name='annuler' type='reset' value='Annuler' />
<input name='upload' type='submit' value='Upload' />
</td>
</tr>
[...]
</table></div>
</form>

et voila mon Script... :

<?php
if(isset($_FILES['upload']))
{
unset($erreur);
$nom = $_FILES['upload']['name'];
$ext = '.'. substr(strrchr($nom, '.'), 1);
$ext = strtolower($ext); // On passe l'extension en minuscules
$ext = str_replace('.jpeg', '.jpg', $ext); // On remplace '.jpeg' par '.jpg'
$nom = strtolower(str_replace(' ', '_', $nom)); // On remplace les espaces dans le nom du fichier par un underscore, et on met le nom en minuscules.
$destination = '';
$max_file_size = 0;

    if( !is_uploaded_file($tmp_file) )
    {
        $erreur='Le fichier est introuvable';
    }
 elseif($ext == '.jpg' OR $ext == '.png' OR $ext == '.jpeg')
 {
  $destination = 'images/';
  $max_file_size = 1000000;
  
  if (!getimagesize($_FILES['upload']['tmp_name']))
  {
   exit("GD n'a pas reconnu le fichier en tant qu'image, script interrompu.");
  }
  elseif( file_exists($_FILES['upload']['tmp_name']))
  {
   exit("Fichier existant sur le serveur au mème nom!");
  }
  elseif( filesize($_FILES['upload']['tmp_name']) > $max_file_size)
  {
   exit("Fichier existant sur le serveur au mème nom!");
  }
 }
 elseif($ext == '.zip' OR $ext == '.rar')
 {
  $destination = 'download/';
  $max_file_size = 100000000;
  
  if( file_exists($_FILES['upload']['tmp_name']))
  {
   exit("Fichier existant sur le serveur au mème nom!");
  }
  elseif( filesize($_FILES['upload']['tmp_name']) > $max_file_size)
  {
   exit("Fichier existant sur le serveur au mème nom!");
  }
 }
 elseif( !move_uploaded_file($tmp_file, $content_dir . $name_file))
    {
        $erreur='Impossible de copier le fichier dans $destination';
    }
 if(!isset($erreur))
 {
  move_uploaded_file($_FILES['upload']['tmp_name'],$destination.$nom.$ext))
  $nom = $nom.$ext;
  exit("Envoi du fichier effectué avec succès. Adresse du fichier: <a href<A href='images/$nom'>'$nom'</A>");
 }
 else{echo($erreur);}
}
?>

Merci pour l'aide... d'avance.


vendredi 22 septembre 2006 à 17:30:44 | Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73

j'ai ajouter la variable :

<code>
$tmp_file = $_FILES['upload']['tmp_name'];
</code>

ici :
<code>
<?php
if(isset($_FILES['upload']))
{
unset($erreur);
$nom = $_FILES['upload']['name'];
******ICI*****
[...]
</code>

et corriger ça :
elseif( !move_uploaded_file($tmp_file, $content_dir . $name_file))
en :
elseif( !move_uploaded_file($tmp_file, $content_dir . $nom))

mais toujours rien... snif help

vendredi 22 septembre 2006 à 22:23:02 | Re : j'ai un bug dans mon script upload HELP!!!

darkduck

Tiens un petit cadeau, voici la classe que j'ai créée :

<?php

function upload($champ_files, &$nom_fichier_transfere, $repertoire_destination, &$message,
                $extensions_autorisees_array=array('pdf','jpg','jpeg','gif','png'),
                $taille_max_fichier=2000000, $chmod=755)
{    /*Fonction qui transfère un fichier sur le serveur.
    Retourne true si le transfert s'est déroulé correctement, false sinon.

    Liste des paramètres :
    - $champ_files : $_FILES['nom_du_champ']
    - $nom_fichier_transfere (donnée-resultat) : Nom que l'on veut donner au fichier transféré
                                                 (modifié automatiquement si un fichier porte
                                                 déjà le même nom)
    - $repertoire_destination : Chemin relatif du répertoire dans lequel on veut transférer le fichier
    - $message (donnée-resultat) : Message généré par lors du transfert
    - $extensions_autorisees : Tableau contenant la liste des extensions des fichiers autorisées
    - $taille_max_fichier : Taille maximale (en octets) autorisée pour le fichier à transférer
                            (Aide : 1Ko = 1000 octets; 1Mo = 1000000 octets)
    - $chmod : Chmod du fichier transféré*/

    /*Initialisations*/
    $upload_reussi = false;
    $message = '';
    $extension = $str_formats_autorises = '';
   

    /*On vérifie que $nom_fichier_transfere et $repertoire_destination ne soient pas vides*/
    if ($nom_fichier_transfere == '' OR $repertoire_destination == '')
        $message = 'Erreur : Vous devez préciser un nom à donner au fichier à transférer ainsi qu\'un répertoire de destination';

    /*On vérifie que la taille du fichier à transférer n'est pas trop importante*/
    elseif ($champ_files["size"] > $taille_max_fichier) //Si la taille de la fic est supérieure à la taille max
    {
        $taille_max_autorisee = $taille_max_fichier / 1000;

        $message =  'Erreur : La taille du fichier que vous voulez transférer est trop grande.<br />'.br().
        'Taille maximale autorisée : '.$taille_max_autorisee.' Ko';
    }

    else //Aucune erreur pour le moment
    {
        /*On supprime les accents et caractèers spéciaux*/
        $nom_fichier_transfere = clearStr($nom_fichier_transfere);

        /*On récupère l'extension du fichier envoyé*/
        $extension_fichier = substr(strchr($champ_files["name"],'.'),1);


        /*On récupère la liste des formats autorisés et on vérifie si l'extension du fichier est autorisée*/
        $extension_autorisee = false; //Initialisation

        foreach ($extensions_autorisees_array as $extension)
        {
            $str_formats_autorises .= $extension.', ';

            /*On vérifie si l'extension du fichier est autorisée*/
            if (!$extension_autorisee AND $extension_fichier == $extension)
                $extension_autorisee = true;
        }

        /*Suppression de la ,(virgule) à la fin de $str_formats_aurorises*/
        $str_formats_autorises = implode(', ', $extensions_autorisees_array);


        if (!$extension_autorisee) //Si le format du fichier n'est pas valide
        {
            $message =     'Erreur : Le fichier que vous voulez transférer ne porte pas une extension autorisée.<br />'.br().
            'Extension du fichier que vous voulez transférer : '.$extension_fichier.'<br />'.br().
            'Extenstions autorisées : '.$str_formats_autorises;

        }
        else //Format valide
        {
            /*Si le fichier existe on le renomme de la forme nomDuFichier(X).extension*/

            /*Initialisations*/
            $i = 0;
            $extension = '.'.$extension_fichier;
            $nom_fichier_transfere = str_replace($extension,'',$nom_fichier_transfere);

            /*On renomme le fichier tant qu'un fichier porant le même nom existe*/
            while (file_exists($repertoire_destination.$nom_fichier_transfere.$extension))
            {
                /*Suppression de l'éventuel (X) existant*/
                $nom_fichier_transfere = str_replace('('.$i.')','',$nom_fichier_transfere);

                /*On incrémente le compteur*/
                $i++;

                /*Ajout de (X)*/
                $nom_fichier_transfere = str_replace($nom_fichier_transfere,$nom_fichier_transfere.'('.$i.')',$nom_fichier_transfere);
            }

            /*Nom de destination final*/
            $nom_fichier_transfere = $nom_fichier_transfere.$extension;

            if (is_uploaded_file($champ_files["tmp_name"])) //Si le fichier a été uploadé correctement
            {
                /*On renomme le fichier avec le nom du fichier envoyé (nom éventuellement maj)*/
                if (!rename($champ_files["tmp_name"], $repertoire_destination.$nom_fichier_transfere))
                {
                    $message .= "Envoi du fichier impossible";
                }
                else //Transfert réussi
                {
                    /*On modifie les chmod du fichier*/
                    chmod ($repertoire_destination.$nom_fichier_transfere,'0'.$chmod);

                    $upload_reussi = true; //Transfert réusssi

                    $message = "Le fichier a correctement été transféré !";
                }
            }
        }
    }
   
    return $upload_reussi;
}
?>
vendredi 22 septembre 2006 à 22:55:46 | Re : j'ai un bug dans mon script upload HELP!!!

darkduck

Pour l'utiliser :

Ton formulaire :

<form name="add_sfupload" method="post" action="add_sfupload_code.php" enctype="multipart/form-data">
<div align="center">
<table width="655" border="0" align="center" cellpadding="0" cellspacing="0" id="pagesfupload">
<tr>
    <td colspan="2"><span class="style1">Ajouter un fichier :</span></td>
</tr>
<tr>
<td width="254"><input size="40" name="upload" type="file"></td>
<td width="372"><div align="right"><input name="hidden" type="hidden" value="" size="50" maxlength="50" /></div></td>
</tr>
<tr>
<td colspan="2">
<input name='annuler' type='reset' value='Annuler' />
<input name='upload' type='submit' value='Upload' />
</td>
</tr>
[...]
</table></div>
</form>

et tu appelles le script comme suit :

<?php

$champ_files = "upload";
$nom_fichier_transferre = "nouveauNom";
$repertoire_destination = "monRepertoire/";
$message = "";

$reussi = upload($champ_files, $nom_fichier_transfere, $repertoire_destination, $message);

if ($reussi)
{
    echo "Le fichier s'appelle désormais $nom_fichier_transfere";
}

echo $message;

?>
vendredi 22 septembre 2006 à 23:30:11 | Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73

c'est une bonne base de travail.. mais si tu peux me dire comment faire pour pouvoir automatiser le fait que j'upload : un zip ou rar dans un dossier (upload) et les images dans un dossier (images), il faut encore que je puisse utiliser l'emplacement du fichier uploader comme une variable pour l'inscrire dans la base de donnée MySql...
 
pour ça il faut que je puisse faire la différence entre les types de fichier mais sans passé par le type MIME... cf autre navigateur pas forcement les mème MIME...
faire un code genre :

if isset blabl
{ [mes variables...]

   if $ext == jpg or $ext == png
   {
      [variables...]
   }
   elseif $ext == zip or $ext == rar
   {
      [variables...]
   }
   else { exit ("Bad format files!")}
}
echo $mon_fichier = $destination/$fichier.$ext

mais impossible de faire ça je ne comprend pas...

samedi 23 septembre 2006 à 12:16:58 | Re : j'ai un bug dans mon script upload HELP!!!

jean84

As-tu essayer les expressions regulieres ? Cela pourrait resoudre ton probleme !! Exemple (pour les fichiers zip) : $Regex = '`.*\.zip`i'; if ( preg_match($Regex, $FichierAUper) === true ) { // ... traitement } T'as juste a change l'extension dans la regex pour pouvoir verifier les zip ou les png ! @++
dimanche 24 septembre 2006 à 18:35:41 | Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73

Pour jean84 je ne connais pas les expressions regulieres... je suis plus que nouveau avec le php...

Mais j'ai fini mon script.. il ne fonctionne toujours pas.. et la c'est moi qui bug lol

au moment du move_uploaded_file il ne fait rien... pourtant toutes mes variable fonctionne testée avec des echo svp si vous avez une solution est-ce en raport avec le fait que je suis en localhost ? merci. pour info voila mon script fini :

<?php
if (empty($_POST['uploadname']))
{
 echo 'You must enter the number of the news.';
}
else
{
 if (!empty($_FILES['uploadfile']['name']))
 {
 $file = basename($_FILES['uploadfile']['name']);
 $ext = strrchr($_FILES['uploadfile']['name'], '.');
 $ext = substr($ext, 1);
 
  if (($ext == 'jpg') or ($ext == 'png'))
  {
   //echo 'ceci est une image';
   $dest='images/';
  }
  else
  {
   if (($ext == 'zip') or ($ext == 'rar'))
   {
    //echo 'ceci est une archive';
    $dest='downlaod/';
   }
  }
 echo '<p>', $dest ,'</p>';
 echo '<p>', $file ,'</p>';
 echo '<p>', $_FILES['uploadfile']['tmp_name'] ,'</p>';
 move_uploaded_file($_FILES['uploadfile']['tmp_name'], $dest . $file);
 }
 else
 {
 // enlever les accents
  echo 'You must set the target file for uploading.';
 }
}
?>

dimanche 24 septembre 2006 à 19:21:26 | Re : j'ai un bug dans mon script upload HELP!!!

ptiloup73

Réponse acceptée !

Problème résolut il fallait dans $dest que je mette le path sur '../images/' et non 'images/' vala... tt simple lol



Cette discussion est classée dans : fichier, file, upload, files, ext


Répondre à ce message

Sujets en rapport avec ce message

problème upload [ par jipe32 ] Bonjour j'ai téléchargé un script d'upload sur Comscripts.com et je l'ai adapté à mon site, mais j'ai un problème que je n'arrive pas à résoudre. ça s Gros problème d'upload d'image...encore un [ par kenru ] Bonjour à tous, voilà j'ai un petit souci pour un upload d'image.//Fonction d'upload$nom_fichier = $_FILES['userfile']['name'];$tmp_fichier = $_FILES[ move_upload_files [ par simonlartiste ] Bonjour à tous.Quelqu'un suarait il comment uploader un fichier et le placer dans un repertoire qui ne se trouve pas dans la même racineJ execute le s Erreur Upload [ par Soul EX ] Warning: move_uploaded_file(./photos/evenements/main.jpg): failed to open stream: No such file or directory in /home/users/u/*/www/maj/envoi/evenemen [prb] upload fichier [ par Renus02 ] bonjour j'ai un petit probleme avc l'upload de fichier,  mon code : formulaire: <b Securiser un upload !! [ par SnOOpss ] Bonjour je doit faire un systeme d'upload sur un site, sans inscriptions, donc le premier venu pourra uploader des fichiers sur le serveur et je voula (upload d'image) marche une fois sur deux??? [ par kenru ] Bonjour à tous. Dans un dernier post précédemment écrit par moi même je réussi, grâce à l'aide de certains d'entre vous, à résoudre mon problème d'upl files upload [ par Hades51 ] Bonjour,Est t'il possible de faire un multiplie file upload à partir d'un seul input type="file" ?Merci jpbm d'upload d'immge aidez moi svp !! [ par razatajm16 ] bjr alor voici mon pbm en fait , j'ai un script d'upload upload.php3dont voici la source:if ($file_name == "none") { print "Spécifier un fichier à env Upload vide ? [ par SDK_akira ] Bonjour J'utilise un script d'upload que j'ai trouvé sur le net et qui marche très bien sur d'autre site néanmoins la bizarement le fichier uploadé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales