Upload chez free qui marche!!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 499 fois - Téléchargée 28 fois

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

Ajouter un commentaire

Commentaires

Messages postés
52
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
6 décembre 2009

Bonjour, comment le faire fonctionner avec XWebDesignor? J'ai déjà essayer différente façon et ça me toujours du texte un peu partout. Pouvez-vous m'aider, please?
Voici mon site si vous voulez y faire un tour : http://kev077.free.fr/

+++
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
Merci pour cette source elle m'a beaucoup aider même si j'ai du modifier quelque truc car sa uploader que un seul fichier vu qu'il ont le meme nom
pour celui ki a des pb la perso moi g enlever le spath()
j'ai mis :
echo "<form enctype=multipart/form-data action='load_fic.php' method=POST>";
et pour ke les fichier uploader ont leur nom correcte j'ai mis une variable :
$file_name=$_FILES['userfile']['name'];
et j'ai changer sa :
$nom_fic="/img/members/".$_SESSION['user']."_img.".$ext;

en sa :
$nom_fic="/img/members/".$_SESSION['user']."$file_name";

voila et surtout n'oublier pa de creer le repertoire /img/members

Encore merci pour cette source have fun !! 8/10
Messages postés
14
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
3 août 2005

Parse error: parse error, unexpected T_DEC, expecting T_VARIABLE or '$' in /var/www/free.fr/2/6/bichri/upload.php on line 2
Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006

MAXFILESIZE() et spath() sont des fonctions que tu écris toi meme: exemple pour maxfilesize:

function MAXFILESIZE() {
$max = 1024592; //taille en octet que tu definis toi meme
return $max;
}

function spath() {
return $_SERVER['DOCUMENTROOT']; //faut vérifier la syntaxe de cette variable globale
}
Messages postés
3
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
28 juin 2006

je n'arrive pas à faire marcher ton script sur free.La fonction .MAX_FILE_SIZE() n'existe pas ainsi que .spath(). Si tu as réussi à le faire marcher sur free j'aimerais bien que tu m'envoie ton fichier php ou que tu le poste sur le site.
Afficher les 7 commentaires

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.