Upload chez free qui marche!!

Contenu du snippet

Je me suis inspiré d'une fonction BCOPY créer par BeB3RePHPLover:
http://www.phpcs.com/code.aspx?ID=13332
Voilà un script qui permet d'uploader chez free ou n'importe ou ailleurs avec les contraintes:
-fonctionne avec php4 donc avec les sessions
-controle le type du fichier uploadé et non pas l'extension de ce dernier!!(sécurité)
-permet de renommer le fichier uploadé

Source / Exemple :


------------------Le formulaire--------------------------------------------
echo "<form enctype='multipart/form-data' action='load_fic.php' method='POST'>";
	echo "<div class=bouton align=left>Envoyez ce fichier :";
	echo "<input name=userfile type=file class=bouton size=50>";
	echo "<input type=submit value=\"Envoyer le fichier\" class=bouton></div>";
	echo "</form>";

----------------load_fic.php----le script--------------------------------------
function MAXFILESIZE() {
     $max = 1024592; //taille en octet que tu definis toi meme
     return $max;
}
//on controle si la taille du fichier n'est pas supérieur à celle autorisée par le serveur
if($_FILES['userfile']['error']==1)
{
	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé excède la taille autorisée par le serveur(>2Mb)</div>"; 
}
//on controle si la taille du fichier n'est pas supérieur à celle autorisée par le vous
//MAX_FILE_SIZE() est une fonction qui renvoie la taille max autorisée des fichiers
elseif($_FILES['userfile']['size']>MAX_FILE_SIZE())
{
	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé excède la taille autorisée:<br>Vous ne pouvez télécharger qu'un fichier dont la taille est inférieur à ".MAX_FILE_SIZE()." octets</div>"; 
}
//on gère si le fichier a été mal téléchargé
elseif($_FILES['userfile']['error']==3)
{
	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier n'a été que partiellement téléchargé.</div>"; 
}
//on controle si y a un fichier a uploadé
elseif($_FILES['userfile']['error']==4)
{
	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Aucun fichier n'a été téléchargé</div>"; 
}
//on controle le type du fichier, ici il fo que des *.JPG ou *.GIF
elseif($_FILES['userfile']['type']!="image/gif" && $_FILES['userfile']['type']!="image/pjpeg")
{
	echo "<h1 class=txt>Erreur:</h1><div align=center class=bouton>Le fichier téléchargé n'est pas du type autorisé:<br>Vous ne pouvez télécharger qu'un fichier du type GIF(image/gif) ou JPEG(image/pjpeg)</div>";
}
//sinon c OK on commence la copie du fichier
else
{
	// on récupère le type de l'image
	if($_FILES['userfile']['type']=="image/pjpeg")
	{
		$_FILES['userfile']['type']="image/jpg";
	}
	$type=explode("/", $_FILES['userfile']['type']);
                // on récupère l'extension appropriée
	$ext=$type[1];
	//on entre le chemin d'écriture du fichier
                //on donne le nom voulue au fichier, ici avec le nom d'utilisateur de la session.
	$nom_fic="/img/members/".$_SESSION['user']."_img.".$ext;
               // on ouvre le fichier temporaire uploadé dans le répertoir temporaire du serveur
	if($OpenLocal= fopen($_FILES['userfile']['tmp_name'], "rb"))
	{
	// lecture entière du fichier temporaire
		$LocalFileContent = fread($OpenLocal, $_FILES['userfile']['size']);
	}
	else
	{
		fclose($OpenLocal);
		die("<b>Erreur : </b>impossible d'ouvrir le fichier local '".$_POST['userfile'].".");
	}
	// Fermeture du fichier local
	fclose($OpenLocal);
	// Ouverture du fichier distant, si ce fichier existe, il sera écrasé   
	if($OpenRemote = fopen(".".$nom_fic, "wb"))
	{
		// Ecriture du fichier temporaire dans le fichier distant 
	        if(fwrite($OpenRemote, $LocalFileContent))
	        {
	        	fclose($OpenRemote);
                        }
	}
	else
	{
		fclose($OpenRemote);
		die("<b>Erreur : </b>impossible d'ouvrir le fichier distant '".$nom_fic.".");
	}
}

Conclusion :


Si vous avez des question->commentaires!!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.