Php Upload

Résolu
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   -  
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   -
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Tu n'aurais pas oublié de mettre « enctype="multipart/form-data" » ?
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   44
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   44
 
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   Statut Membre Dernière intervention   369
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   74
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   74
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   74
 
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   Statut Membre Dernière intervention   74
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   74
 
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   Statut Membre Dernière intervention   369
 
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   Statut Membre Dernière intervention   369
 
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