8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

J'ai toujours "Extension pas autorisée !" qui s'affiche en permanence,
même si 'file01' = "asterix photo.jpg"...

J'ai pourtant lu et relu,
réfléchi et reréfléchi aux 3 bouts de code...
Mais cela ne marche pas...
Pire $extensionFichier, $name, $nom_fichier sont tous les 3 vides !!!

Pourquoi ?
Pouvez-vous m'aider ???
D'avance merci.


<script type="text/javascript">
<!--
function date_heure() {
    var infos = new Date();
    //Heure
    document.getElementById('heure').innerHTML = compZero(infos.getHours()) + ':' + compZero(infos.getMinutes()) + ':' + compZero(infos.getSeconds());
    //Date
    var mois = new Array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
    var jours = new Array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
    document.getElementById('journee').innerHTML = 'Nous sommes le ' + jours[infos.getDay()] + ' ' + infos.getDate() + ' ' + mois[infos.getMonth()] + ' ' + infos.getFullYear() + ' à';
   setInterval("date_heure()", 850); //Actualisation de l'heure
}
function getfile01() {
	document.getElementById('filevisible01').value=document.getElementById('file01').value;
}
function getfile02() {
	document.getElementById('filevisible02').value=document.getElementById('file02').value;
}
function getfile03() {
	document.getElementById('filevisible03').value=document.getElementById('file03').value;
}
function getfile04() {
	document.getElementById('filevisible04').value=document.getElementById('file04').value;
}
function getfile05() {
	document.getElementById('filevisible05').value=document.getElementById('file05').value;
}
function getfile06() {
	document.getElementById('filevisible06').value=document.getElementById('file06').value;
}
function getfile07() {
	document.getElementById('filevisible07').value=document.getElementById('file07').value;
}
function getfile08() {
	document.getElementById('filevisible08').value=document.getElementById('file08').value;
}
function getfile09() {
	document.getElementById('filevisible09').value=document.getElementById('file09').value;
}
function getfile10() {
	document.getElementById('filevisible10').value=document.getElementById('file10').value;
}
//-->
</script>



      <form name="form1" method="post" action="php/upload.php" enctype="multipart/form-data">
        <table width="845" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="85" height="27">Fichier 01</td>
            <td width="635" height="27">
        <div class="fileinputs">
            <input type="file" id="file01" class="file" onchange="getfile01();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible01" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir01_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 02</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file02" class="file" onchange="getfile02();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible02" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir02_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 03</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file03" class="file" onchange="getfile03();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible03" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir03_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 04</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file04" class="file" onchange="getfile04();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible04" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir04_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 05</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file05" class="file" onchange="getfile05();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible05" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir05_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 06</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file06" class="file" onchange="getfile06();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible06" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir06_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 07</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file07" class="file" onchange="getfile07();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible07" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir07_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 08</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file08" class="file" onchange="getfile08();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible08" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir08_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 09</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file09" class="file" onchange="getfile09();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible09" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir09_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">Fichier 10</td>
            <td width="635"  height="27">
        <div class="fileinputs">
            <input type="file" id="file10" class="file" onchange="getfile10();" > 
            <div class="fakefile"> 
            <input type="text" id="filevisible10" class="filevisible" size="75" style="vertical-align: middle">
            <img src="images/parcourir10_on.gif" width="127" height="20" style="vertical-align: middle"/></div>            </div></td>
            <td width="125"  height="27"></td>
          </tr>
          <tr>
            <td width="85" height="27">&nbsp;</td>
			<td width="635"><input type="submit" name="envoi" id="envoi" value="Envoyer"></td>
            <td width="125"  height="27"></td>
          </tr>
        </table>
      </form>



<?php
	date_default_timezone_set('Europe/Brussels');
	
	$extensionsAutorisees = array("ai", "ind", "png", "psd", "eps", "bmp", "gif", "jpg", "jpeg", "tif", "tiff", "txt", "tmp", "swf", "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "xml", "rar", "zip");
	$repertoireDestination = "../telechargements/flotest/";
	
	$srcfichier[] = $_FILES['file01'];
	$srcfichier[] = $_FILES['file02'];
	$srcfichier[] = $_FILES['file03'];
	$srcfichier[] = $_FILES['file04'];
	$srcfichier[] = $_FILES['file05'];
	$srcfichier[] = $_FILES['file06'];
	$srcfichier[] = $_FILES['file07'];
	$srcfichier[] = $_FILES['file08'];
	$srcfichier[] = $_FILES['file09'];
	$srcfichier[] = $_FILES['file10'];

	for ($i=0; $i < 10; $i++) {
		if ($_FILES['srcfichier']['name'][$i]) continue;
		$name = $_FILES['srcfichier']['name'][$i];
		$extensionFichier = substr($name, strrpos($name, ".") + 1);
		$nom_fichier = basename($name,".".$extensionFichier);
		if (!(in_array($extensionFichier, $extensionsAutorisees))) {
			$etat[$i] = "Extension pas autorisée !";
		} else {
			$etat[$i] = "En cours";
			$nomDestination = $nom_fichier.date("YmdHis").".".$extensionFichier;
			if (move_uploaded_file($_FILES['srcfichier']['tmp_name'][$i],$repertoireDestination.$nomDestination)) {
				@chmod("$repertoireDestination.$nomDestination",0777);
			}
			if ($_FILES['srcfichier']['error'][$i]) {
				switch($_FILES['srcfichier']['error'][$i]) {
					case UPLOAD_ERR_OK:
						$etat[$i] = "Terminé avec succès !"; break;
					// dépassement de upload_max_filesize dans php.ini
					case UPLOAD_ERR_INI_SIZE:
						$etat[$i] = "Trop volumineux ! (1)"; break;
					// dépassement de MAX_FILE_SIZE dans le formulaire
					case UPLOAD_ERR_FORM_SIZE:
						$etat[$i] = "Trop volumineux ! (2)"; break;
					// autres erreurs
					default:
						$etat[$i] = "Erreur générale !";
				}
			}
		}
		echo "$etat[$i]";
	}
?>

Modifié par jytest (16 Oct 2010 - 16:08)
Salut,

pour récupérer des variables de formulaires (en GET, POST ou FILES) les champs de saisie (INPUT, TEXTAREA ou SELECT) doivent obligatoirement posséder un attribut name : id ne suffit pas.

Par exemple :
<input type="file" id="file01" name="file01" class="file" />  
J'ai essayé d'appliquer tes conseils.
Mais j'ai toujours le même message :
"Estension pas autorisée !"...

A mon avis le problème n'est pas là.
Ne serait-il pas dans les passages de variables suivants
du code php :

$srcfichier[] = $_FILES['file01'];
$srcfichier[] = $_FILES['file02'];
...
$srcfichier[] = $_FILES['file09'];
$srcfichier[] = $_FILES['file10'];

Mais comment résoudre cela ???
Qu'est-ce que je ne fais pas correctement ???

A l'aide, svp.



<?php 
    date_default_timezone_set('Europe/Brussels'); 
     
    $extensionsAutorisees = array("ai", "ind", "png", "psd", "eps", "bmp", "gif", "jpg", "jpeg", "tif", "tiff", "txt", "tmp", "swf", "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "xml", "rar", "zip"); 
    $repertoireDestination = "../telechargements/flotest/"; 
     
    $srcfichier[] = $_FILES['file01']; 
    $srcfichier[] = $_FILES['file02']; 
    $srcfichier[] = $_FILES['file03']; 
    $srcfichier[] = $_FILES['file04']; 
    $srcfichier[] = $_FILES['file05']; 
    $srcfichier[] = $_FILES['file06']; 
    $srcfichier[] = $_FILES['file07']; 
    $srcfichier[] = $_FILES['file08']; 
    $srcfichier[] = $_FILES['file09']; 
    $srcfichier[] = $_FILES['file10']; 
 
    for ($i=0; $i < 10; $i++) { 
        if ($_FILES['srcfichier']['name'][$i]) continue; 
        $name = $_FILES['srcfichier']['name'][$i]; 
        $extensionFichier = substr($name, strrpos($name, ".") + 1); 
        $nom_fichier = basename($name,".".$extensionFichier); 
        if (!(in_array($extensionFichier, $extensionsAutorisees))) { 
            $etat[$i] = "Extension pas autorisée !"; 
        } else { 
            $etat[$i] = "En cours"; 
            $nomDestination = $nom_fichier.date("YmdHis").".".$extensionFichier; 
            if (move_uploaded_file($_FILES['srcfichier']['tmp_name'][$i],$repertoireDestination.$nomDestination)) { 
                @chmod("$repertoireDestination.$nomDestination",0777); 
            } 
            if ($_FILES['srcfichier']['error'][$i]) { 
                switch($_FILES['srcfichier']['error'][$i]) { 
                    case UPLOAD_ERR_OK: 
                        $etat[$i] = "Terminé avec succès !"; break; 
                    // dépassement de upload_max_filesize dans php.ini 
                    case UPLOAD_ERR_INI_SIZE: 
                        $etat[$i] = "Trop volumineux ! (1)"; break; 
                    // dépassement de MAX_FILE_SIZE dans le formulaire 
                    case UPLOAD_ERR_FORM_SIZE: 
                        $etat[$i] = "Trop volumineux ! (2)"; break; 
                    // autres erreurs 
                    default: 
                        $etat[$i] = "Erreur générale !"; 
                } 
            } 
        } 
        echo "$etat[$i]"; 
    } 
?>
J'ai même retiré toute la boucle des srcfichier,
et remplacer directement par file01...
Rien n'y fait.

J'ai même modifié les chmod des dossiers
par filezila.
Rien n'y fait.

Auriez-vous une idée, une piste, une solution pour m'aider ???
Modérateur
Pour trouver où ça bloque, je te suggère d'afficher à l'écran chacune des variables pour voir ce qu'elles contiennent, spécialement $extensionFichier et $extensionsAutorisees.

Voir peut-être aussi les paramètres de in_array.
Modérateur
Je ne connais pas parfaitement la syntaxe de PHP, mais il me semble que cette partie de code est étrange :


$srcfichier[] = $_FILES['file01'];  
$srcfichier[] = $_FILES['file02'];  
$srcfichier[] = $_FILES['file03'];  
$srcfichier[] = $_FILES['file04'];  
$srcfichier[] = $_FILES['file05'];  
$srcfichier[] = $_FILES['file06'];  
$srcfichier[] = $_FILES['file07'];  
$srcfichier[] = $_FILES['file08'];  
$srcfichier[] = $_FILES['file09'];  
$srcfichier[] = $_FILES['file10'];  


Mon interprétation de ce code est que tu attribues à la variable $srcfichier[] la valeur de $_FILES['file01'], ensuite tu écrases à nouveau la variable $srcfichier[] par la valeur de $_FILES['file02']. Au final, c'est la valeur de $_FILES['file10'] qui est attribuée à $srcfichier[]. Ce serait une bonne idée de lire des tutoriaux sur l'utilisation des arrays.

Fais une sortie à l'écran de $srcfichier[] après chaque instruction, et tu verras probablement le problème.

Avant ta boucle, essaye aussi de faire un dump de $_FILES['srcfichier'] pour voir ce qu'elle contient.
Modifié par Tony Monast (14 Oct 2010 - 15:42)
Effectivement, il y a là un problème.
Mais quand le code php est remplacé par
celui ci-dessous...
cela ne fonctionne pas non plus...


<?php
	date_default_timezone_set('Europe/Brussels');
	
	$extensionsAutorisees = array("ai", "ind", "png", "psd", "eps", "bmp", "gif", "jpg", "jpeg", "tif", "tiff", "txt", "tmp", "swf", "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "xml", "rar", "zip");
	$repertoireDestination = "../telechargements/flotest/";


		if ($_FILES['file01']['name']) continue;
		$name = $_FILES['file01']['name'];
		$extensionFichier = substr($name, strrpos($name, ".") + 1);
		$nom_fichier = basename($name,".".$extensionFichier);
		if (!(in_array($extensionFichier, $extensionsAutorisees))) {
			$etat = $name."  /  ".$extensionFichier."  /  ".$nom_fichier."  /  "."Extension pas autorisée !";
		} else {
			$etat = "En cours";
			$nomDestination = $nom_fichier.date("YmdHis").".".$extensionFichier;
			move_uploaded_file($_FILES['file01']['tmp_name'],$repertoireDestination.$nomDestination);
			@chmod("$repertoireDestination.$nomDestination",0777);
			}
			if ($_FILES['file01']['error']) {
				switch($_FILES['file01']['error']) {
					case UPLOAD_ERR_OK:
						$etat = "Terminé avec succès !"; break;
					// dépassement de upload_max_filesize dans php.ini
					case UPLOAD_ERR_INI_SIZE:
						$etat = "Trop volumineux ! (1)"; break;
					// dépassement de MAX_FILE_SIZE dans le formulaire
					case UPLOAD_ERR_FORM_SIZE:
						$etat = "Trop volumineux ! (2)"; break;
					// autres erreurs
					default:
						$etat = "Erreur générale !";
				}
			}
	}
?>
scrfichier[]
le tableau se remplit automatiquement élément par élément...
mais dans le doute, j'ai donc changé le code php par ce qui est ci-dessus.
mais cela ne va pas non plus...
jamais le file01 ne se retrouve dans la racine du site,
dans le dossier "telechargements/flotest"...
Je déprime
Modérateur
As-tu ajouté l'attribut HTML name tel que proposé?

Je crois que le mieux serait de lire quelques tutoriaux sur l'upload des fichiers pour voir comment les variables sont structurées. Ensuite, si ça ne fonctionne pas, faire un dump de chacune des variables, étape par étape. Il vaut mieux aussi commencer par l'upload d'un seul fichier avant d'y ajouter une boucle. Bref, y aller au plus simple au départ.

Je vais laisser les autres t'aider parce que bien franchement, j'aime autant le PHP qu'un coup de pelle à la figure. Smiley biggrin
C'est ce que j'ai fait, avec le seul 'file01'.
J'ai vérifié le code sur plein de sites...
Je travaille avec filezila en parralèle...
Modérateur
Tu as bien ajouté l'attribut HTML name pour ton champ d'upload? Je n'ai pas vu une réponse claire là-dessus.

Le mieux serait que tu nous montre ton code avec un seul fichier d'upload (HTML et PHP)

Merci
Oui, les name ont été rajouté sans succès
dans les input file...

Au risque d'être lourd,
peux-tu me préciser exactement ce que tu veux dire ???
Pages :