Page 1 sur 1

Probleme de syntaxe

Posté : 24 juin 2011, 15:29
par j-binou
Bonjour à tous,
J'ai créé un page pour uploader des fichier par formulaire mais elle ne fonctionne pas et j'ai le message d'erreur suivant : Parse error: syntax error, unexpected T_ELSEIF
J'ai cherché pendant un certain temps en supprimant des parties et en vérifiant la syntaxe.
Voici le code de la page :
<form method="post" action="upload.php" enctype="multipart/form-data">
     <label for="fichier">Fichier (Tous formats | max. 10Mo):</label><br />
     <input type="file" name="fichier" id="fichier" /><br />
     <label for="titre">Titre du fichier (max 50 caractères):</label><br />
     <input type="text" name="titre" value="Titre du fichier" id="titre" /><br />
     <label for="description">Description de votre fichier (max 255 caractères):</label><br />
     <textarea name="description" id="description"></textarea><br />
     <input type="submit" name="submit" value="Envoyer" />
</form>



<?php
if ( isset($_FILES['fichier'])){

	$name_file = $_FILES['fichier']['name'];

	if ($_FILES['fichier']['error'] > 0){
		echo "Erreur lors du transfert" ;
	}
	elseif ($_FILES['fichier']['size'] > 10485760){
		echo "Le fichier est trop gros" ;
	}
	
	elseif ( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) ){
		echo "Nom de fichier non valide" ;
	}
	
	$extensions_invalides = array( 'php', 'inc', 'htm', 'html', 'phtml', 'shtml', 'wml', 'pwml', 'js', 'jsp', 'asp', 'pl', 'py', 'pyc', 'cgi', 'htaccess', 'htpasswd' ) ;
	$extension_upload = strtolower(substr(strrchr($name_file, '.') ,1)) ;
	elseif ( in_array($extension_upload, $extensions_invalides) ){
		echo "Extension incorrecte" ;
	}
	
	$resultat = move_uploaded_file($_FILES['fichier']['tmp_name'],"upload/ " . $name_file . " ");
	elseif ($resultat){
		echo "Transfert réussi" ;
	}
	
	else{
		echo "Impossible d'uploader le fichier" ;
	}
}
?>
Merci d'avance.

Re: Probleme de syntaxe

Posté : 24 juin 2011, 15:51
par Mazarini
Bonjour,

La partie :
      $extensions_invalides = array( 'php', 'inc', 'htm', 'html', 'phtml', 'shtml', 'wml', 'pwml', 'js', 'jsp', 'asp', 'pl', 'py', 'pyc', 'cgi', 'htaccess', 'htpasswd' ) ;
        $extension_upload = strtolower(substr(strrchr($name_file, '.') ,1)) ;
doit être mis avant le if correspondant au elsif suivant.

Le mieux est quand même d'indiquer la ligne en erreur dans le code, sinon pas sur que quelqu'un ait le courage de lire tout le code.

Re: Probleme de syntaxe

Posté : 24 juin 2011, 16:12
par j-binou
Super merci beaucoup :D je me prenais la tête depuis plus d'une demi heure, il fallait juste faire les déclarations de variable avant toutes les conditions.

Re: Probleme de syntaxe

Posté : 24 juin 2011, 16:20
par Mazarini
Bonjour,

Ce n'est pas un problème de déclaration, mais de syntaxe.
if (condition) {instruction} elseif (condition) {instruction} else  {instruction}
Autrement, par sécurité, il vaut mieux indiquer les extensions autorisées plutôt que les interdites. Le risque est d'oublier une extension interdite.