Mon scipt bug. C'est à cause des arrays (enfin je crois)...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mon scipt bug. C'est à cause des arrays (enfin je crois)...

par colin2mars » 03 mars 2007, 22:14

En mettant une condition :
if (truc trop gros) { exit("fichier tros gros");}
et voila
Mais le scipt se bloque dés que j'essaye d'envoyer un fichier supérieur à celui autorisé dans php.ini.
Comment cela en plusieurs fois? Les découper ?
Non en fait dés que ça bug, je vous voudrais quand même afficher un message du style:
"La taille d'un fichier ne dois pas dépasser 1Mo. Mais pour que l'upload fonctionne il faut aussi que la somme des tailles de vos fichier à uploader ne fasse pas plus de 6Mo"
A la place de les découper si ton serveur accepte ftp_connect() (free ne l'accepte) tu faire passer des fichier plus gros ^^
Je vais aller regarder dans cette direction...

Merci

par thehawk » 02 mars 2007, 15:54

A la place de les decouper si ton serveur accepte ftp_connect() (free ne l'accepte) tu faire passer des fichier plus gros ^^

par Aureusms » 02 mars 2007, 10:16

Comment cela en plusieurs fois? Les découper ?

par thehawk » 01 mars 2007, 23:01

En mettant une condition :
if (truc trop gros) { exit("fichier tros gros");}
et voila

par colin2mars » 01 mars 2007, 21:05

J'ai trouvé ce qui fait bugger::D :D

Si la somme des tailles des fichiers que je veux envoyer est plus grosse que celle autorisée dans le php.ini le script bug.

Par contre y'a t'il un moyen de mettre un message d'erreur qui dit à l'utilisateur que si ses fichiers sont trop gros il peut les uploader en plusieurs fois?

par colin2mars » 01 mars 2007, 20:51

J'ai aussi tester la variable $_FILES.
Elle ne renvoi rien si le script bug.
echo'<pre>'; print_r ($_FILES); echo'</pre>'; 
résultat après bug:
Array
(
) 
J'ai aussi testé d'autre vidéo de plus d'un mo.
La plus part renvoie l'erreur:
'L\'extension du fichier num&eacute;ro '.$i.' n\'est pas correcte vous pouvez envoyer les fichier suivants: .jpg .jpeg .gif .png'
Or je crois qu'il devrait renvoyer l'erreur sur la taille du fichier. non?

Par contre je n'ai pas réussis a trouver ce qui fait qu'une vidéo fait bugger et une autre pas.

par colin2mars » 01 mars 2007, 20:34

Le script renvoi bien la bonne $erreur

par Aureusms » 01 mars 2007, 20:05

Essaye avec un fichier > 1Mo mais en jpeg. Ca fait quoi ?

par colin2mars » 01 mars 2007, 19:49

Alors quand ça bug le print_r ne renvoi rien.

Il y donc, comme tu l'a dit un problème lors de l'enregistrement

par colin2mars2 » 25 févr. 2007, 21:52

je pars demain en vacance pour trois jours.

Je poste tous ça Jeudi.

par Aureusms » 25 févr. 2007, 16:57

As tu testé par défaut ta variable $erreur en fin de script via print_r(). pour voir si elle contenanit quelque chose. Car on a deux choix :
  • soit $erreur est vide et donc le problème vient lors de l'enregistrement
  • soit le problème vient de l'affichage de $erreur
ajoute
echo'<pre>'; print_r ($erreur); echo'</pre>';
juste après les labels pour voir ce que contient la variable. Ensuite teste l'erreur et envoi nous le contenu

par colin2mars2 » 25 févr. 2007, 13:51

Car si ton fichier n'a pas la bonne extension ET dépasse 1 Mo tu n'auras que le message sur le dépassement
C'est vrai.

Mais le script ne m'affiche aucune erreur. Il m'affiche juste les six formulaires. :?
A la limite ça fait rien si le script affiche qu'une des erreurs si il y en a plusieurs.

par Aureusms » 25 févr. 2007, 13:09

Alors ok j'ai vu que tu avais deux clauses if consécutives qui pouvait écraser ton $erreur:
for ($i = 1; $i <=6 ; $i++)
              {
                  $fichier = $_FILES['fichier_'.$i.''];
          
                if ($fichier['error'] != 4)
                {
                    //verif extention images            
                    $extensions_valides = array( 'jpg', 'jpeg', 'gif', 'png');
                    $extension_upload = substr(strrchr($fichier['name'], '.')  ,1);
                    if (!in_array($extension_upload,$extensions_valides)) // première
                    {
                        $erreur[$i] = 'L\'extension du fichier num&eacute;ro '.$i.' n\'est pas correcte vous pouvez envoyer les fichier suivants: .jpg .jpeg .gif .png';
                    }
                    
                    //verif taille
                    $taille_max = 1048576;   //env. 1Mo
                    if ($fichier['size'] > $taille_max) // deuxième
                    {
                        $erreur[$i] = 'Le fichier num&eacute;ro '.$i.' est trop volumineux';
                    }
                  // si il n'y pas d'erreur ici c'est que tout est bon on procède alors au déplacement du fichier
                    if (empty($erreur[$i]))
                    {
                        $message[$i] = 'Le fichier num&eacute;ro '.$i.' est arriv&eacute; &agrave; bon port<br>';
                    }
                    
                }
            }
        }
        else 
        {
            $erreur[0] = 'Choisissez un titre.';
        }
    }
    
?> 
As tu voulu ton script comme ca ?
Car si ton fichier n'a pas la bonne extension ET dépasse 1 Mo tu n'auras que le message sur le dépassement

par colin2mars2 » 25 févr. 2007, 12:50

C'est ça. :D

par Aureusms » 25 févr. 2007, 12:39

Ok, j'essaye de résumer si tu envoi un .avi il ne renvoit pas ton numéro d'erreur suivant :
{
$erreur[$i] = 'L\'extension du fichier num&eacute;ro '.$i.' n\'est pas correcte vous pouvez envoyer les fichier suivants: .jpg .jpeg .gif .png';
                    }