Interruption - reprise d’un script avec choix de l’utilisateur (upload photo)

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 : Interruption - reprise d’un script avec choix de l’utilisateur (upload photo)

par geoffroy » 13 mai 2009, 19:33

comment proposer le choix de continuer le chargement ou de passer à la photo suivante
Soit en PHP

Code : Tout sélectionner

<h3>Erreur</h3> <p>Votre image semble etre deja presente dans la base</p> <form action="la-meme-page.php" action="POST"> <label for="poursuivre">Poursuivre ?</label> <input type="checkbox" name="poursuivre" id="poursuivre"> <input type="hidden" name="fichier" value="<?php urlencode( serialize($_FILES) ); ?>" /> <input type="submit" value="Envoyer" /> </form>
Donc si une image est déjà présente tu affiche un formulaire de ce genre.
Il va faire passer le tableau de tes fichiers $_FILES, en sérialisant leur contenu dans un champs "hidden".

Si l'utilisateur poursuit, tu désérialises et tu peux traiter les images ok avec ta boucle.
<?php $images = unserialize ( urldecode( $_POST["fichier"] ) ); 
foreach ($images as $i=>$j) { ... } ?>

Soit en javascript :

Code : Tout sélectionner

<script type="text/javascript"> // Ici le code javascript pour afficher la boite de dialogue if (confirm("Votre image semble etre deja presente dans la base. Poursuivre l'upload ?")) alert("Coder l'envoi via Ajax"); else alert("Rediriger vers la page d'origine"); </script>
EN outre, mon script est sur la même page que le formulaire (ce qui permet de gérer simplement des messages d'erreur)
Ce n'est pas un problème, du moment où tu t'y retrouve.
Personnellement, je découperais en plusieurs pages pour que ce soit plus simple.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par GlobalWind » 13 mai 2009, 17:00

Merci pour ces propositions.

mais :
Il s'agit de détecter des doublons potentiels dans les images :
- je donne déjà un nom unique à chaque photo (id) mais là n'est pas la question,
- une fois détectée un doublon potentiel (même si les photos ont des noms différents), comment proposer le choix de continuer le chargement ou de passer à la photo suivante (il y a une boucle pour permettre le téléchargement simultanée de 5 photos).

EN outre, mon script est sur la même page que le formulaire (ce qui permet de gérer simplement des messages d'erreur)

par dunbar » 13 mai 2009, 16:00

Il y a plusieurs manière de faire :
Soit juste avant l'insertion :
par exemple
$requete = "SELECT
	                                           champ_table
	                                          FROM
	                                           table
	                                          WHERE champ_image = '".$image_upload."'";	                                          
	                                           
	                                  $query = mysql_query($requete);
	                                  if ( mysql_num_rows($query) == 1 )
	                                   {
	                                     echo 'Impossible de poursuivre l\'image  existe déjà';
                                         echo '<a href="#">Recommencer</a>';
	                                     exit();
	                                  
	                                   } 
	                                     else 
	                                          {
	                                 	        echo 'sinon ont continue';
	                                 	       }
Ou plus simple tu donne un nom unique a chaque image
Exemple:
// génération d'un l'identifiant unique.
md5(uniqid(rand(ici la variable qui contient le nom du fichier ou de l'image sans l'extension)));

par geoffroy » 13 mai 2009, 12:51

C'est bien sur possible.
Ton formualire d'upload doit être traité par une page,
qui affiche la "boîte de dialogue" en cas de doublon,
ou qui traite l'image s'il n'ya pas de doublon (structure conditionnelle de type if { ... } else { ... } ).

En ce qui concerne la boite de dialogue, c'est possible de le faire en javascript, via la fonction alert().
Tous les principaux frameworks javascript proposent des "plugins" pour générer des boites de dialogue plus élaborés.

Mais il faut généralement proposer une alternative aux utilisateurs n'ayant pas javascript.

Exemple :

Code : Tout sélectionner

<script type="text/javascript"> // Ici le code javascript pour afficher la boite de dialogue alert ('Votre image semble etre deja presente dans la base'); </script> <noscript> <!-- Ici afficher le message HTML pour les utilisateurs n'ayant pas javascript activé --> <h3>Erreur</h3><p>Votre image semble etre deja presente dans la base</p> </noscript>
A partir de cette boite de dialogue tu peux rediriger vers une page de traitement de l'image si l'utilisateur poursuit, ou d'annulation si il annule^^ (je le dit même si ca a l'air évident).

Interruption - reprise d’un script avec choix de l’utilisate

par GlobalWind » 13 mai 2009, 11:50

Bonjour,

Je cherche à savoir s’il est possible de réaliser le processus suivant en php.

J’ai un script d’upload de photo (avec liaison avec une base de données),. Grace à une boucle, il est possible de charger plusieurs photos, les unes après les autres.

Avant l’upload et le redimensionnement, je vais vérifier si une image similaire n’a pas déjà été chargé (critères : taille, poids et nom identique).

S’il n’y a pas de doublon potentiel dans la base de donnée, l’upload doit se poursuivre et le redimensionnement se faire.

Mais s’il y a risque de doublon, je voudrais :
Qu’une boite de dialogue s’affiche, mentionnant le risque de doublon et proposant soit de poursuivre l’upload, soit l’arrêter pour cette image et de poursuivre la boucle.
Est-ce possible ?

Merci pour vos pistes si c possible !