le tableau $_FILES

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 : le tableau $_FILES

par areuh » 15 juin 2007, 21:47

Bonsoir,

Bé, heureusement que le sujet n'est pas résolu.

J'ai un gros probleme de comprehension avec mon script PHP d'upload de fichier.

je vous mets le code et vous explique.
<?php
/*
FICHIER PHP QUI COMMUNIQUE AVEC AVECLE FICHIER TEXTE ET L'IMAGE CLE N°3 DE L'ANIMATION FLASH
*/
// Fonction pour parser les variables vers le swf (cf: media-box.net)
function Parse($variable,$valeur) { 
   	echo "&".$variable."=".utf8_encode(urlencode($valeur)); 
}

//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
// CORRESPONDANCE DES VARIABLES ENTRE FLASH ET LE PHP ---- PHP ET TXT
//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
// - le nom du user (obligatoire pour creer et/ou lire le fichier texte)
$nomuser= $_POST['nomuser'];

// extension autorisee
$type= array ('jpg', 'jpeg', 'jpe', 'gif', 'png');

//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
// LECTURE DU FICHIER TEXTE, ON RECUPERE LIGNE PAR LIGNE POUR METTRE DANS UN TABLEAU
//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
// fichier cible
$fichier_cible= "log_".$nomuser.".txt"; //"log_areuh.txt";

$texte = file($fichier_cible) ;

$tab= array();
$i= 0;

foreach ($texte as $line_num => $texte) {
	$texte= rtrim($texte);
	// echo 'Ligne No '. $line_num.': '.$texte.'<br />';
	array_push($tab, $texte);
	$i++;
}

// echo "<br>";
// echo $line_num." entrees";
// echo "<br><br>";
// print_r($tab);
// echo "nbre de i: ".$i;
// echo "<br><br>--------<br> affichage des 3 dernieres variables quelque soit le contenu du fichier de log<br>";

$fin_inter= $i- 1;
// echo $fin_inter;
$debut_inter= $fin_inter- 3;
// echo $debut_inter;

// affectation des variables
$date= $tab[$fin_inter- 3];
$utilisateur= $tab[$fin_inter- 2];
$sous_repertoire= $tab[$fin_inter- 1];

// affichage des variables que renvoie PHP a Flash
Parse("date_test", $date);
Parse("utilisateur_test", $utilisateur);
Parse("repertoire_test", $sous_repertoire);

// repertoire de destination des images
$uploaddir= "images/".$utilisateur."/".$sous_repertoire."/";
Parse("chemin", $uploaddir);
//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
// TRAITEMENT D'UPLOAD
//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
if($_FILES['Filedata']['name']) {
		// recupere l'extension du reste du nom des fichiers
		$extension_fichier= strtolower( array_pop( explode(".", $_FILES['Filedata']['name'])));
		
		// cree une variable date qui sera ajoutee au nom de chacun des fichiers
		$date= strtolower(date('dS_F_Y_h_i_s_A_'));
		
		// si cette extension ne se trouve pas dans notre tableau $type
		if(!in_array($extension_fichier, $type)) {
			// echo " extension non autorisee !!!";
			exit; // on stop le traitement
		}
			
		// $uploadfile= str_replace(" ", "_", $uploaddir.basename( $date.$_FILES['Filedata']['name']));
		$uploadfile= $uploaddir.basename( $date.$_FILES['Filedata']['name']);
		// Parse("cause", $nbrefichiers);
		// echo "Upload en cours...";
		
		if(move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile)) {
			// echo " les fichiers ont bien ete uploades !!!";
			// Parse("cause", " les fichiers ont bien ete uploades !!!");
			return true;
		}
		else {
			// Parse("cause", " un probleme est apparu !!!");
			//echo " Un probleme est apparu !!!";
			return false;
		}
	}
	
	else {
		// Parse("cause", " Autres raisons !!!");
		// echo " Vous devez choisir au moins un fichier !!!";
		return false;
	}
?>
Voilà, avant la partie TRAITEMENT D'UPLOAD, j'affecte des valeurs issues d'un fichier txt à des variables. Pas de problème, j'affiche pour vérifier les valeurs dans Flash (grâce à la fonction Parse)
et c'est nickel.
Je definis donc le chemin de destination des fichiers qui doivent être uploadés en fonction des variables au dessus ($utilisateur et $sous_repertoire).
Mais non ça veut pas télécharger dans ce dossier rien a faire.
ça télécharge dans le repertoire "images".
j'ai beau inclure les variables dans le chemin de destination mais le cript refuse de les prendre en compte.
les dossiers st en 0777, je suis en local, rien à faire.

Si quelqu'un pouvait me donner la solution, je crois que je vais craquer.

En vous remerciant.
a+
areuh

par Invité » 13 juin 2007, 19:32

re,

Ben, depuis la derniere fois, aucun problème.
Dc j'aimerais bien mettre le tag [Resolu] mais comme suis pas inscrit (sic), je ne peux pas.
Quelqu'un peut il le faire car etant "programmeur" (argh orgueil, orgueil) amateur tres ponctuel, je ne sais pas trop qd je reviendrai (peut-être tres prochainement si je decide d'être plus regulier).

En vous remerciant pour les réponses et aides diverses.
a+
areuh

par areuh » 12 juin 2007, 13:03

Salut,

je vais mettre un [resolu] d'ici 1 à 2 jours, en effet, je viens de m'apercevoir (apparemment) que PHP traitait deja le $_files en boucle. J'ai fait un renommage et au moment d'uploader mes fichiers, PHP les renomme tous, dc j'ai pas trop besoin (j'espere) de me prendre la tete.
Alors bon... enfin je trouve ce shmilblik assez étrange.

Je vous tiens au courant.
Merci pour les reponses qd meme.
a+
areuh

par Sékiltoyai » 11 juin 2007, 13:31

Si tu veux faire ce que tu cherches à faire, tu dois coder toi même le transfert entre le script php et l'applet flash.

par Invité » 11 juin 2007, 12:23

Salut zeus,

ok, je crois bien que tu m'as donné la réponse... parce que je n'ai pas de HTML, je passe par flash et ActionScript car je peux uploader autant de fichiers désires en 1 seule operation.

Dc apparement, pas possible... je vais voir encore un peu.

Merci bien pour la reponse.
a+
areuh

par zeus » 11 juin 2007, 08:17

A priori, rien ne me choque ...

La seule erreur que j'entrevois, c'est que j'aimerais être sûr que ton code HTML te permettant d'uploader les fichiers est une série de input donc l'attribut "name" est un chiffre :

Code : Tout sélectionner

<input type="file" name="1" /> <input type="file" name="2" /> <input type="file" name="3" /> ...

le tableau $_FILES

par areuh » 11 juin 2007, 03:23

Bonsoir,

Dans le cadre d'un multi upload flash-php je souhaite manipuler des fichiers images.

Pourriez vous me dire pourquoi ce code suivant ne fonctionne pas svp.
$nbrefichiers= $_POST['nbrefichiers'];

for($i= 0; $i< $nbrefichiers; $i++) {
	// si les fichiers existent...
	if (isset($_FILES)) {
		$nom[$i]= $_FILES['Filedata']['name'][$i];
	}
}
echo "&".$_FILES['Filedata']['name'][0];
Comme vous le voyez, j'essaye de recuperer les caracteristiques des differents fichiers que je vais uploader.

En vous remerciant bien pour votre aide.
a+
areuh