[RÉSOLU] Problème avec un formulaire

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 : [RÉSOLU] Problème avec un formulaire

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 10 déc. 2011, 13:10

Ok merci. Tout fonctionne :)

Re: Problème avec un formulaire et récupération de valeur

par AB » 09 déc. 2011, 18:59

Pour choisir un dossier de destination depuis le formulaire, il y a un exemple ici

Pour la redirection en php on utilise la fonction : header('Location:monfichier.php')

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 09 déc. 2011, 15:25

Ok ! Merci beaucoup je viens de tester c'est super. Cependant si je veux mettre une variable php pour le dossier de destination cela ne marche pas.

Code : Tout sélectionner

$galerie = $_POST['galerie']; // Déclaration de la classe avec envoi des paramètres (cf doc) $form = new Telechargement ('/img/galeries/'.$galerie.'/','envoi_file','photo','get_form_1');
Pourtant j'ai fait un echo de $galerie et il m'affiche bien le contenu.

Je souhaiterais également faire une redirection une fois que les images sont téléchargées, comment je peux faire ça ?
avec un header mais je dois le placer où ?

Re: Problème avec un formulaire et récupération de valeur

par AB » 09 déc. 2011, 01:34

Parce que je n'ai pas tout compris l'histoire de la classe à AB j'ai essayer de la faire marché mais est-ce qu'il gère le multi-upload ?
Oui mieux même que le muti-upload, le multi-upload multiple :) C'est ici

Dans cet exemple il suffit de remplacer la ligne

Code : Tout sélectionner

$form->Set_Controle_dimImg ();
par
$form->Set_Redim ("1000","800");
si tu veux faire des redimensions en max 1000px de largeur et max 800px de hauteur.

Tu peux aussi faire plusieurs redimensionnement vers plusieurs répertoires et éventuellement garder l'image originale (sans traitement) dans un autre répertoire... imposer un nom de fichier... renommer le fichier si un fichier de même nom existe déjà sur le serveur ...tout cela est détaillé dans "utilisation de la classe".

Re: Problème avec un formulaire et récupération de valeur

par AB » 09 déc. 2011, 01:02

Ouep :(

A tu regardé si AB indique comment il gère la chose ?


@+
J'en ai parlé ici et avant il y a des explications.

Pour un exemple de code, la fonction qui vérifie la mémoire dans ma classe d'upload se nomme "Enoughmem" et elle est appelée dans la fonction "Redim_liste".
En fait on calcule la mémoire nécessaire pour faire le redimensionnement en fonction des résolutions de l'image source et de l'image cible (le poids de l'image n'intervient pas pour ce calcul), et si ça dépasse la mémoire disponible pour le script en cours, on sort du script en envoyant un message personnalisé. Cela évite de se prendre un dépassement mémoire du serveur qu'on ne pourra pas maîtriser.

En bas du premier message de la classe il y a quelques estimations. Avec 64 Mo ça devient confortable et il y peu de limitations. 32Mo est le minimum pour commencer à travailler sur des fichiers un peu volumineux.

Ah oui et dans le lien il y a une procédure de bench pour mesurer la mémoire utilisée en fonction de l'image.

Bah finalement niveau doc sur le sujet y'a de quoi faire :)

Re: Problème avec un formulaire et récupération de valeur

par moogli » 08 déc. 2011, 18:30

Ouep :(

A tu regardé si AB indique comment il gère la chose ?


@+

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 08 déc. 2011, 14:20

j'ai toujours la même erreur :

Code : Tout sélectionner

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 4752 bytes) in /home/soisn109/public_html/admin/img.class.php on line 213
mais avec le imagedestroy() cette fois le "tried to allocate" est nettement inférieur à celui d'avant.

Alors ça à l'aire de fonctionner mais il n’y a toujours pas assez de mémoire ?

Re: Problème avec un formulaire et récupération de valeur

par xTG » 08 déc. 2011, 14:08

Tu le mets dans ta class image après le imagejpeg() qui sert à sauvegarder l'image.

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 08 déc. 2011, 14:05

Donc le imagedestroy() d'après vous je le met où ?

Dans mon fichier upload.php :

Code : Tout sélectionner

<?php require('img.class.php'); foreach ($_FILES["images"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $name = $_FILES["images"]["name"][$key]; $galerie = $_POST['galerie']; move_uploaded_file( $_FILES["images"]["tmp_name"][$key], "../img/galeries/".$galerie."/" . $_FILES['images']['name'][$key]); Img::creerMin("../img/galeries/".$galerie."/".$_FILES["images"]['name'][$key],"../img/galeries/".$galerie."/min/",$_FILES['images']['name'][$key],155,105); } } header('Location: index.php'); ?>
Ou dans ma classe image ?

Code : Tout sélectionner

static function creerMin($img,$chemin,$nom,$mlargeur=155,$mhauteur=105) { // On supprime l'extension du nom $nom = substr($nom,0,-4); // On récupère les dimensions de l'image $dimension=getimagesize($img); // On cré une image à partir du fichier récup if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); } else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); } else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); } // L'image ne peut etre redimensionne else{return false; } // Création des miniatures // On cré une image vide de la largeur et hauteur voulue $miniature =imagecreatetruecolor ($mlargeur,$mhauteur); // On va gérer la position et le redimensionnement de la grande image if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1] ){ $dimY=$mhauteur; $dimX=$mhauteur*$dimension[0]/$dimension[1]; $decalX=-($dimX-$mlargeur)/2; $decalY=0;} if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mlargeur*$dimension[1]/$dimension[0]; $decalY=-($dimY-$mhauteur)/2; $decalX=0;} if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mhauteur; $decalX=0; $decalY=0;} // on modifie l'image crée en y plaçant la grande image redimensionné et décalée imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]); // On sauvegarde le tout imagejpeg($miniature,$chemin."/".$nom.".jpg",90); return true; }
Parce que je n'ai pas tout compris l'histoire de la classe à AB j'ai essayer de la faire marché mais est-ce qu'il gère le multi-upload ?

Re: Problème avec un formulaire et récupération de valeur

par moogli » 08 déc. 2011, 07:33

Ben si tu a d'autre truc en mémoire avant oui c'est mieux (genre sur de la modification d'image en boucle oui il préférable, je pense, de détruire l'ancienne ressource histoire d'être sur qu'il reste rien en mémoire. Après je sais pas trop comment est gérée la mémoire (ramasse miette ou pas etc etc).

@+

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 07 déc. 2011, 23:52

D'accord je vais regarder sinon il n'y a pas moyen d'insérer un imagedestroy() quelque-part ?

Re: Problème avec un formulaire et récupération de valeur

par moogli » 07 déc. 2011, 21:33

C'est un dépassement mémoire (ça tu t'en doute déjà nan ?) dû à la taille de l'image (parce que quand tu l'utilise avec gd elle prend beaucoup plus de place en mémoire).

Pas grand chose à faire, regarde dans le forum "vos contributions" la classe d'upload de AB il y a pas mal de réponse à ce sujet et il me semble qu'il a géré la chose dans sa classe, tu devrais y trouver une solution ou au moins de quoi finir le script proprent je pense.

Pour ce qui de l'upload, maintenant que tu sais que le traitement est bon il te reste à deboguer la moulinette js/Ajax pour ça roule ;)

@+

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 07 déc. 2011, 20:18

Merci pour ta réponse j'ai supprimé le script js et ca fonctionne parfaitement.

J'ai cependant encore une question lorsque j'upload plusieurs images, des fois j'ai cette erreur :
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 19008 bytes) in /home/soisn109/public_html/admin/img.class.php on line 213

Voici le code en question de mon fichier img.class.php :

Code : Tout sélectionner

if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); }

Re: Problème avec un formulaire et récupération de valeur

par moogli » 07 déc. 2011, 19:12

Hum ta testé ça tel quel ? (c'est à dire sans tous le merdier js/ Ajax ) ?

Parce que la tu n'a pas de donnée issue de post donc normale que le second test avec var_dump() retourne null.

@+

Re: Problème avec un formulaire et récupération de valeur

par virginweb » 07 déc. 2011, 17:52

J'ai testé var_dump($_POST) cela me renvoi array(0) { } sous Chrome et sous firefox
et quand je fais var_dump($_POST['galerie']) il me renvoi NULL