Php Upload

Résolu/Fermé
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 18 juin 2010 à 12:19
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 21 juin 2010 à 10:00
Bonjour,

J'aimerais savoir quel problème d'upload ne renvoie pas de message d'erreurs quand on fait echo $_FILES['file']['error'];

et ne renvoi que Array(0) { } quand on fait un var_dump($_FILES).

J'ai eu beau chercher je reste toujours bloqué.

Merci de votre contribution à la préservation de ma santé mentale... ;)

Configuration: Windows XP / Firefox 3.6.3
A voir également:

9 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
18 juin 2010 à 12:44
Tu n'aurais pas oublié de mettre « enctype="multipart/form-data" » ?
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 13:25
Non justement j'ai vérifié 100 fois, pas d'espace en trop, pas de problème de ce côté, je comprend pas ce qui cloche
0
Laugarhraun Messages postés 14 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 10 septembre 2010 44
18 juin 2010 à 13:52
Vérifie ces paramètres dans ton php.ini :
file_uploads = On
upload_tmp_dir="C:\Windows\Temp"   (Ou autre valeur, bien sûr)
upload_max_filesize = 11M  (Ou autre. Mais il faut que le fichier soit plus petit. De base c'est à 2M je crois)
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 14:32
J'ai réussi à vérifier ces valeur grâce à ini_get()...

file_uploads me renvoie 1
upload_tmp_dir me renvoie D:\Program Files\OCS Inventory NG\xampp\tmp
upload_max_filesize me renvoie 16 M


Donc je me trompe peut-être mais je n'ai pas l'impression qu'il y ait de problème de ce côté là...
0
Laugarhraun Messages postés 14 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 10 septembre 2010 44
18 juin 2010 à 14:39
Ouaip en effet. Bah j'ai aucune idée. On peut avoir le code HTML de la page du formulaire ?
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 13:56
Oui j'ai voulu toucher au php.ini mais malheureusement je ne sais pas comment y accéder car mon wamp est sur un serveur distant...Le phpinfo() me donne le répertoire du php.ini qui est sur le serveur mais dont l'accès m'est restreint... Y a-t-il un moyen de mettre son propre php.ini pour un projet donné??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
18 juin 2010 à 14:04
Quel est ton hébergeur ?
On peut modifier les valeurs du php.ini grâce à un .htaccess ou avec ini_set() (ou avec son propre php.ini chez 1&1).
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 14:06
Je suis sur le réseau intranet d'une entreprise pour laquelle je suis en stage. Je vais chercher plus de détails sur ini_set(). Merci
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
Modifié par Breub62 le 18/06/2010 à 15:50
Voilà mon form :


echo "<center><form enctype='multipart/form-data'  method=post action='index.php?action=ModifierMachine' name='FormAjoutMachine' onSubmit='return check();'><table width = 60%>"; 
  echo "<input type=hidden name=MAX_FILE_SIZE  value=2048>"; 
  echo "<input type=hidden name='FormAjoutMachine' value='FormAjoutMachine' />"; 
  echo "<input type=hidden name='numMachine' value='".$dataTrouverMachine['NumMachine']."' />"; 
  echo "<tr ><td width =50%>Nom de machine : </td><td><input type=text name='NomMachine' value='$NomMachine' onKeyUp='couleur(this);' /></td></tr>"; 
  echo "<tr ><td>Date d'achat :</td><td>"; 
  include("calendar.html"); 
  echo "<input onfocus='ds_sh(this);' name='date' readonly='readonly' style='cursor: text' onFocus='couleur(this);' value='".$dataTrouverMachine['DateAchat']."' />"; 
  echo "</td></tr>"; 
  echo "<tr ><td>URL Photo : <em>".$dataTrouverMachine['UrlPhoto']."</em></td><td><input type=file name='URLPhoto' /></td></tr>"; 
  echo "<tr ><td>Modèle : </td><td><input type=text name='ModeleMachine' onKeyUp='couleur(this);' value='".$dataTrouverMachine['Modele']."' /></td></tr>"; 
  echo "<tr ><td>N° de série : </td><td><input type=text name='NumSerie' onKeyUp='couleur(this);' value='".$dataTrouverMachine['NumSerie']."' /></td></tr>"; 
  echo "<tr ><td>N° immo : </td><td><input type=text name='numImmo' onKeyUp='couleur(this);' value='".$dataTrouverMachine['NumImmo']."' /></td></tr>"; 
echo "</table></form>"; 









Puis le traitement :



$UrlPhoto = "Images/".date('Ymd').$_SESSION['URLPhoto']['tmp_name']; 


if(move_uploaded_file($_FILES["URLPhoto"]["tmp_name"], $UrlPhoto)) 
  { 
   $queryModifMachine = "UPDATE machine SET NomMachine='".mysql_real_escape_string($_SESSION['NomMachine'])."', UrlPhoto='".mysql_real_escape_string($UrlPhoto)."',  
   Modele='".mysql_real_escape_string($_SESSION['ModeleMachine'])."', NumSerie='".mysql_real_escape_string($_SESSION['NumSerie'])."', DateAchat='".mysql_real_escape_string($_SESSION['date'])."', 
   DureeGarantie='".mysql_real_escape_string($_SESSION['DureeGarantie'])."', PUHT='".mysql_real_escape_string($_SESSION['PUHT'])."', Processeur='".mysql_real_escape_string($_SESSION['Processeur'])."', 
   RAM='".mysql_real_escape_string($_SESSION['RAM'])."', CarteGraphique='".mysql_real_escape_string($_SESSION['CarteGraphique'])."', DisqueDur='".mysql_real_escape_string($_SESSION['DisqueDur'])."',  
   TechniqueImpression='".mysql_real_escape_string($_SESSION['TechImpr'])."', CouleurNB='".mysql_real_escape_string($_SESSION['CouleurNB'])."', TailleEcran='".mysql_real_escape_string($_SESSION['TailleEcran'])."', 
   NumImmo='".mysql_real_escape_string($_SESSION['numImmo'])."', NumAffectation='".mysql_real_escape_string($_SESSION['NumAffectation'])."', CodeConstructeur='".mysql_real_escape_string($CodeConstructeur)."', 
   CodeFournisseur='".mysql_real_escape_string($_SESSION['CodeFournisseur'])."' WHERE NumMachine='".mysql_real_escape_string($_SESSION['numMachine'])."'"; 
  } 
  else 
  { 
   $queryModifMachine = "UPDATE machine SET NomMachine='".mysql_real_escape_string($_SESSION['NomMachine'])."', Modele='".mysql_real_escape_string($_SESSION['ModeleMachine'])."', 
   NumSerie='".mysql_real_escape_string($_SESSION['NumSerie'])."', DateAchat='".mysql_real_escape_string($_SESSION['date'])."', DureeGarantie='".mysql_real_escape_string($_SESSION['DureeGarantie'])."', 
   PUHT='".mysql_real_escape_string($_SESSION['PUHT'])."', Processeur='".mysql_real_escape_string($_SESSION['Processeur'])."', RAM='".mysql_real_escape_string($_SESSION['RAM'])."', 
   CarteGraphique='".mysql_real_escape_string($_SESSION['CarteGraphique'])."', DisqueDur='".mysql_real_escape_string($_SESSION['DisqueDur'])."',  
   TechniqueImpression='".mysql_real_escape_string($_SESSION['TechImpr'])."', CouleurNB='".mysql_real_escape_string($_SESSION['CouleurNB'])."', TailleEcran='".mysql_real_escape_string($_SESSION['TailleEcran'])."', 
   NumImmo='".mysql_real_escape_string($_SESSION['numImmo'])."', NumAffectation='".mysql_real_escape_string($_SESSION['NumAffectation'])."', CodeConstructeur='".mysql_real_escape_string($CodeConstructeur)."', 
   CodeFournisseur='".mysql_real_escape_string($_SESSION['CodeFournisseur'])."' WHERE NumMachine='".mysql_real_escape_string($_SESSION['numMachine'])."'"; 
  } 
    
  mysql_query($queryModifMachine) or die(mysql_error()); 




Si vous voyez quelque chose qui bloque... Merci de votre aide
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 14:58
Salut !

Commente mysql_query et fait un echo de $queryModifMachine pour voir déjà la tête de ta requête.
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 15:02
En fait c'est un formulaire de modif de machine(pc, imprimante,etc...). Dans le cas où mon fichier s'est bien uploadé, je stocke le nom de fichier, sinon non. Le problème ne venant pas de la requête mais de l'upload qui ne s'éxécutant pas me renvoie dans le else...
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 15:18
bon, d'apres : https://www.php.net/manual/fr/function.move-uploaded-file.php

Si ça fonctionne pas mais que t as pas d'erreur c est le filename qui est invalide (ici ton $_files).

Fais un echo de $UrlPhoto et de $_FILES["URLPhoto"]["tmp_name"] pour voir ce que ça marque.
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 15:22
La réponse est rien. J'ai bien pensé à ça aussi mais le nom de $_FILES['nom'] est bien le même que le <input name='nom' /> ....
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
Modifié par fxtaa le 18/06/2010 à 15:30
Si ca marque rien ca veut dire que dans ta fonction tu ne passes rien, c'est sur que ca peut pas fonctionner :).

Je sais pas trop ce qu'il te faut dans tes 2 urls de destinations mais pour récupérer une variable envoyé par post pour reprendre ton exemple de nom, ce sera $_POST['nom']

En plus la il manque vachement d'info que tu nous as pas donné, tmp name viens d'où ?
et $_SESSION = quoi ?

ps : et l'echo de $UrlPhoto devrait au moin t'écrire "Images/" non ?
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 16:19
Tiens je t'ai fait un code qui fonctionne pour l'upload de fichier :

<html>
	<body>
		<center>
		<form ENCTYPE="multipart/form-data" method='POST' action=''>
		URL de l'image:<br>
		<input type='file' name='pix'><br>
		<br>
		<input type='submit' value='go!'><br>
		<br>
		</form>
		<?php
		
		import_request_variables("P","V_");
		if(isset($V_pix))
		{
		
			$tmp = $_FILES['pix']['tmp_name'];
			$name = 'images/'.$_FILES['pix']['name'];
			echo "//".$_FILES['pix']['name']."<br>//".$_FILES['pix']['tmp_name']."<br>";
			if(move_uploaded_file($tmp, $name ) == 1) {
				echo "OK !";
			}
			else {echo "KO!";} 
		}
		?>
		</center>
	</body>
</html>


A toi de l'adapter ^^
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
18 juin 2010 à 16:23
Merci beaucoup! Est-ce que tu peux me préciser ce que fait
 import_request_variables("P","V_");

Encore merci
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
18 juin 2010 à 16:30
Ca sert a importer les variables dans l'environnement globale, en fait je sais pas trop, mais si tu le met pas, ca marche pas ^^, donc vaut mieux le laisser XD
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
21 juin 2010 à 09:16
Rien à faire en remplaçant dans mon cas j'entre toujours pas dans le if(isset($V_pix))...
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
21 juin 2010 à 10:00
Problème résolu...enfin... il venait de là :

session_start();
	
	if(!empty($_POST))
	{
		foreach($_POST as $cle => $val)
		{ 
			if($cle != 'URLPhoto') // test des post à ne pas convertir en session
			{
				$_SESSION[$cle] = $val; 
				unset($_POST[$cle]);
			}
		}
		echo "<script language='javascript'>history.go(-1);</script>";		
		exit();
	}	
	if(!empty($_FILES))
	{
		foreach($_FILES as $cle => $val)
		{
			$_SESSION[$cle] = $val;
		}
		echo "<script language='javascript'>history.go(-1);</script>";		
		exit();
	}






remplacé par :


session_start();
	
	if(!empty($_POST) || !empty($_FILES))
	{
		foreach($_POST as $cle => $val)
		{ 
			if($cle != 'URLPhoto') // test des post à ne pas convertir en session
			{
				$_SESSION[$cle] = $val; 
				unset($_POST[$cle]);
			}
		}
		
		foreach($_FILES as $cle2 => $val2)
		{
			$_SESSION[$cle2] = $val2;
		}
		
		echo "<script language='javascript'>history.go(-1);</script>";		
		exit();
	}	



Ainsi mes variables FILES sont converties en SESSION en même temps que mes POST et je ne perds plus mes infos... Merci pour votre aide
0