Limiter le nombre d'upload

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 : Limiter le nombre d'upload

Re: Limiter le nombre d'upload

par cris84 » 18 déc. 2018, 19:52

Je comprends bien les messages, et ils s'affichent correctement, ce que j'ai du mal à comprendre c'est comment récupérer le message qui suivra, comment sont générés $error_multiple_files ?
Il faudrait ajouter par exemple :

error: function($error_multiple_files) 
      {
    $("#error").html ('<br /><label class="text-primary">Vous avez atteint le maximum d\'images autorisée</label>');
      }

mais comment récupérer cette erreur ?

Re: Limiter le nombre d'upload

par Patriboom » 18 déc. 2018, 01:53

Vas-y.
Teste-le.
Lis les messages d'erreur, tente de comprendre ce que les messages d'erreur diront. C'est ainsi que tu progresseras.

Re: Limiter le nombre d'upload

par cris84 » 17 déc. 2018, 20:22

Bonsoir,
après avoir encore cherché je pense que le message devrait s'afficher après ceci :

 beforeSend:function(){
     $('#error_multiple_files').html('<br /><label class="text-primary"><img src="img/ajax-loader.gif" /> T&eacute;l&eacute;chargement en cours...</label>');
    }, 
    success:function(data)
    {
     $('#error_multiple_files').html('<br /><label class="text-success">T&eacute;l&eacute;chargement termin&eacute;</label>');
     load_image_data();
    }

si le nombre dépasse 3 en ajoutant une function mais pas un for ?

Re: Limiter le nombre d'upload

par Patriboom » 16 déc. 2018, 20:25

Et oui, tu peux faire compter.
Tu définis une variable avant la boucle, puis tu l'incrémentes à chaque fois qu'une image a été chargée avec succès.
Puis, tu vérifies la valeur de la variable, à savoir si elle est égale ou supérieure à la limite souhaitée (dans ton cas 3),
La commande break te fera sortir de la boucle.
Quelque chose comme:

Code : Tout sélectionner

var compte = 0; for (I=0; I<machin.lenght; I++) { //traitement de l'image if (++compte >= 3) { break; } }

Re: Limiter le nombre d'upload

par cris84 » 16 déc. 2018, 20:15

non dès que je remplace for(var i=0; i<files.length; i++) par for(var i=0; i<3; i++) il ne se passe plus rien, je ne peux plus charger aucune image...

Il n'y a pas un moyen juste de les compter et si la valeur est supérieure à 3 on affiche le message (sans que l'utilisateur n'ait à faire une déduction ?)

Re: Limiter le nombre d'upload

par Patriboom » 16 déc. 2018, 19:27

Et si tu envoyais plutôt ton message après avoir chargé les trois fichiers comme ceci ...

Code : Tout sélectionner

for(var i=0; i<3; i++) { ... } if (files.length > 3) { error_images += 'Vous ne pouvez pas t&eacute;l&eacute;charger plus de 3 images'; }

Qu'en dirais-tu ?


Bref: tu traites les 1 à 3 fichier(s), puis tu vérifies s'il y en avait d'autres à traiter. Si oui, tu envoies un message décrivant la limite de 3 et listant les fichiers qui ont été pris. Ne restera à l'usager qu'à déduire quels sont les fichiers laissés de côté.

Re: Limiter le nombre d'upload

par cris84 » 16 déc. 2018, 19:16

Désolé pour le code, je viens de le supprimer.
Le if et else existent aussi en PHP que je maîtrise comme il faut. Je ne demande pas à ce que quelqu'un code pour moi mais je n'arrive pas à comprendre le fonctionnement.
Le code d'hier fait référence à mon script PHP, puis les autres visiblement correspondent à mon code qui est dans le html. J'avoue m'y perdre....
if(files.length > 3) j'affiche le message pas plus de 3 images en même temps
sinon for(var i=0; i<3; i++) j'affiche un autre message si i est > à 3
Bref, je n'arrive pas à comprendre

Re: Limiter le nombre d'upload

par Patriboom » 16 déc. 2018, 15:24

Inutile de nous balancer tout ton code.
Nous ne sommes pas ici pour coder à ta place, mais pour t'aider à faire ton propre code.
Il faut que tu comprennes la fonction de base if () { } else { }
En français, ça se traduit par si (condition) { (action posée si la condition est respectée) } sinon { (action posée si la condition n'est pas respectée) }

Dans le cas qui t'intéresse, trouve l'erreur du morceau de code suivant:

Code : Tout sélectionner

if(files.length > 3) { error_images += 'Vous ne pouvez pas t&eacute;l&eacute;charger plus de 3 images'; } else { for(var i=0; i<3; i++) { ... }
Piste:
S'il y a plus de 3 fichiers, dis-le.
S'il n'y a pas pas plus de 3 fichiers ( else) fais ceci.

Est-ce bien ce que tu veux ?
Selon ma compréhension de ton projet, je crois que non.
Il faut donc replacer les morceaux dans le bon ordre.

Fais-nous grâce de tout ton code, mais retourne-moi la structure que tu croiras correcte en vue d'arriver à tes fins.

Re: Limiter le nombre d'upload

par cris84 » 16 déc. 2018, 15:16

Question : est-ce bien dans le fichier upload qu'il faut mettre le code ? ensuite quand je relie avec la réponse du 06/12 en remplaçant or(var i=0; i<files.length; i++) par for(var i=0; i<3; i++) dans le fichier html, le téléchargement est bien limité à 3 images (sans message d'erreur).
Le problème aussi est que quand je supprime une des images, je ne peux plus en télécharger une autre (pourtant je n'ai que 2 images).

Re: Limiter le nombre d'upload

par Patriboom » 16 déc. 2018, 15:00

Relie ma réponse du 6 décembre.

Re: Limiter le nombre d'upload

par cris84 » 16 déc. 2018, 12:03

Re-bonjour,

j'ai supposé que c'était dans le fichier upload.php qu'il faut mettre ce code. J'ai donc fait ceci mais cela ne change rien aucun message ne s'affiche et je peux toujours charger plus de 3 images l'une après l'autre (pas en même temps : quand je charge plus de 3 images en même temps là le message d'erreur s'affiche correctement).

if(count($_FILES["file"]["name"]) > 0)
{
 //$output = '';
 sleep(3);
 ?>
<script>var lesFichiers = new Array();</script>
<?php
 
 for($count=0; $count<count($_FILES["file"]["name"]); $count++)
 {
  $file_name = $_FILES["file"]["name"][$count];
  $tmp_name = $_FILES["file"]['tmp_name'][$count];
  $file_array = explode(".", $file_name);
  $file_extension = end($file_array);
  if(file_already_uploaded($file_name, $bdd))
  {
   $file_name = $file_array[0] . '-'. rand() . '.' . $file_extension;
  }
 
   $location = 'img/' . $file_name;
  
  if(move_uploaded_file($tmp_name, $location))
  {
  $query = "
   INSERT INTO tbl_images(image_name,id_membre, id_annonce) VALUES ('".$file_name."', '".$_SESSION['id']."', '0')
   ";
   $statement = $bdd->prepare($query);
   $statement->execute();
   
	
 }
   }
   
   ?>
 
	<script> if (files.length > 3) { alert("Seules les images suivantes ont été chargées : \n " + $_FILES["file"]["name"][0] + "\n " + $_FILES["file"]["name"][1] + "\n " + $_FILES["file"]["name"][2] + ""); }
	</script>
	<?php
  }

Re: Limiter le nombre d'upload

par Patriboom » 16 déc. 2018, 02:29

C'est ton code.
les ...
représentent seulement ton code que je n'ai pas répété, comme dans une citation tronquée [...] mais ici les crochets étant frimés j'ai fait sans crochet.

Re: Limiter le nombre d'upload

par cris84 » 15 déc. 2018, 21:09

Merci pour cette réponse, mais n'étant pas spécialiste, à quel endroit je dois mettre ce code ? c'est les .... ...... ...... que je ne comprends pas :)

Re: Limiter le nombre d'upload

par Patriboom » 15 déc. 2018, 19:15

En version simplifiée:

Code : Tout sélectionner

for($count=0; $count<3; $count++) { $file_name = $_FILES["file"]["name"][$count]; $tmp_name = $_FILES["file"]['tmp_name'][$count]; .... .... .... } if (files.length > 3) { alert("Seules les images suivantes ont été chargées : \n " + $_FILES["file"]["name"][0] + "\n " + $_FILES["file"]["name"][1] + "\n " + $_FILES["file"]["name"][2] + ""); }

Re: Limiter le nombre d'upload

par Patriboom » 15 déc. 2018, 19:13

Tiens, en plus je te donne le code:

Code : Tout sélectionner

var lesFichiers = new Array(); for($count=0; $count<3; $count++) { $file_name = $_FILES["file"]["name"][$count]; lesFichiers[$count] = $file_name; $tmp_name = $_FILES["file"]['tmp_name'][$count]; .... .... .... } if (files.length > 3) { alert("Seules les images suivantes ont été chargées : \n " + lesFichiers[0] + "\n " + lesFichiers[1] + "\n " + lesFichiers[2] + ""); }