Probleme de syntaxe

Petit nouveau ! | 2 Messages

24 juin 2011, 15:29

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.

ViPHP
ViPHP | 2577 Messages

24 juin 2011, 15:51

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.

Petit nouveau ! | 2 Messages

24 juin 2011, 16:12

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.

ViPHP
ViPHP | 2577 Messages

24 juin 2011, 16:20

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.