begin process at 2012 05 27 22:19:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASSE D'UPLOAD DE FICHIER PHP

CLASSE D'UPLOAD DE FICHIER PHP


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :upload, classe php, fichiers Niveau :Initié Date de création :10/05/2010 Date de mise à jour :11/05/2010 14:43:49 Vu / téléchargé :2 948 / 328

Auteur : beejeridou

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

Je viens de refaire ma classe d'upload de fichiers et souhaite vous la faire partager.
Elle gère
-la création de l'arborescence de fichiers,
-control de l'extension,
-la gestion du nouveau nom de fichier (unique, avec préfixe ou non, etc),
-les erreurs d'upload et de configuration.
-detection automatique d'un fichier image et peut appliquer un control sur sa taille si setMaxDimensions est définie.
La source contient qu'un seul fichier, celui de la classe:
class.UploadFile.php

Le fichier contient l'exemple d'utilisation à la fin. Vous pouvez tout simplement executer ce fichier sur votre serveur pour tester.

Source

  • <?php
  • class UploadFile {
  • private $droits = 0755;
  • private $poidMax = 2;
  • private $postFile;
  • private $type = array();
  • private $path;
  • private $prefixeName;
  • private $name;
  • private $extension;
  • private $maxWidth;
  • private $maxHeight;
  • private $errorUpload;
  • //SET
  • public function setDroits($v) {
  • $this->droits = $v;
  • }
  • public function setPoidMax($v) {
  • $this->poidMax = $v;
  • }
  • public function setPostFile($v) {
  • $this->postFile = $v;
  • }
  • public function setType($v) {
  • $this->type = explode("/", $v);
  • }
  • public function setPath($v) {
  • $this->path = $v;
  • }
  • public function setPrefixeName($v) {
  • $this->prefixeName = $v;
  • }
  • public function setName($v) {
  • $this->name = preg_replace('`[^a-zA-Z0-9]+`i', "-", $v);
  • }
  • public function setMaxDimensions($v, $v2) {
  • $this->maxWidth = $v;
  • $this->maxHeight = $v2;
  • }
  • //GET
  • public function getPath() {
  • return $this->path;
  • }
  • public function getPrefixeName() {
  • return $this->prefixeName;
  • }
  • public function getName() {
  • return $this->name;
  • }
  • public function getExtension() {
  • return $this->extension;
  • }
  • public function getPathFileName() {
  • return $this->path."/".$this->prefixeName.$this->name.".".$this->extension;
  • }
  • public function getErrorUpload() {
  • return $this->errorUpload;
  • }
  • //METHOD
  • public function upload() {
  • if($this->postFile != "") {
  • if($this->controls()) {
  • if($this->createDir()) {
  • $this->uniqName();
  • if($this->moveFile()) {
  • $this->errorUpload = "<b class=''>SUCCES</b> : Le fichier a bien &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;";
  • return true;
  • }
  • }
  • }
  • }
  • else $this->errorUpload = "<b class=''>ERREUR</b> : La valeur du champs FILE n'a pas &eacute;t&eacute; parametr&eacute;e";
  • }
  • private function controls() {
  • if($this->setErrorUpload())
  • if($this->verifSize())
  • if($this->verifExtension())
  • if($this->verifImage())
  • return true;
  • }
  • private function createDir() {
  • if($this->path != "") {
  • if(preg_match('`\/`', $this->path)) {
  • $path = explode("/", $this->path);
  • $newDir = "";
  • foreach($path as $dir) {
  • if($dir == "..") {
  • $newDir .= "../";
  • continue;
  • }
  • if(!file_exists($newDir.$dir))
  • mkdir($newDir.$dir, $this->droits);
  • $newDir .= $dir."/";
  • }
  • }
  • else if(!file_exists($this->path))
  • mkdir($this->path, $this->droits);
  • return true;
  • }
  • else {
  • $this->errorUpload = "<b class=''>ERREUR</b> : Aucune destination n'a &eacute;t&eacute; sp&eacute;cifi&eacute;e";
  • return false;
  • }
  • }
  • private function setErrorUpload() {
  • switch ($_FILES[$this->postFile]['error']) {
  • case 1:
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux pour la configuration du serveur (upload_max_filesize).";
  • break;
  • case 2:
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux pour la configuration du serveur (max_file_size).";
  • break;
  • case 3:
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier n'a &eacute;t&eacute; que partiellement t&eacute;l&eacute;charg&eacute;.";
  • break;
  • case 4:
  • $this->errorUpload = "<b class=''>ERREUR</b> : Aucun fichier n'a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;.";
  • break;
  • case 6:
  • $this->errorUpload = "<b class=''>ERREUR</b> : Un dossier temporaire est manquant.";
  • break;
  • case 7:
  • $this->errorUpload = "<b class=''>ERREUR</b> : &Eacute;chec de l'&eacute;criture du fichier sur le disque.";
  • break;
  • }
  • if($this->errorUpload == "") return true;
  • }
  • private function verifSize() {
  • if(filesize($_FILES[$this->postFile]['tmp_name']) > ($this->poidMax*1024*1024) ) {
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux";
  • return false;
  • }
  • return true;
  • }
  • private function verifExtension() {
  • if(preg_match('`^(.+)\.(.+)+$`i', $_FILES[$this->postFile]['name'], $extension)) {
  • $this->extension = strtolower($extension[2]);
  • if(is_array($this->type) && !in_array($this->extension, $this->type) ) {
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier n'est pas au format demand&eacute;";
  • return false;
  • }
  • else {
  • if(!$this->verifMimeType($extension[2])) {
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le fichier semble &ecirc;tre corrompu";
  • return false;
  • }
  • }
  • return true;
  • }
  • return false;
  • }
  • private function verifMimeType($extension) {
  • $mimeType = $_FILES[$this->postFile]['type'];
  • switch($extension) {
  • //IMG
  • case "jpg": case "jpeg": case "jpe":
  • if($mimeType == "image/jpeg" || $mimeType == "image/pjpeg") return true; break;
  • case "gif": case "gif":
  • if($mimeType == "image/gif" || $mimeType == "image/pgif") return true; break;
  • case "doc": case "dot":
  • //DOC
  • if($mimeType == "application/msword") return true; break;
  • case "xls": case "xla":
  • if($mimeType == "application/msexcel" || $mimeType == "application/vnd.ms-excel") return true; break;
  • case "pdf":
  • if($mimeType == "application/pdf") return true; break;
  • case "csv":
  • if($mimeType == "text/comma-separated-values") return true; break;
  • case "txt":
  • if($mimeType == "text/plain") return true; break;
  • case "rft":
  • if($mimeType == "text/richtext") return true; break;
  • //ARCHIVE
  • case "gz":
  • if($mimeType == "application/gzip") return true; break;
  • case "zip":
  • if($mimeType == "application/zip") return true; break;
  • //AUDIO
  • case "mp2": case "mp3":
  • if($mimeType == "audio/x-mpeg") return true; break;
  • case "waw":
  • if($mimeType == "audio/x-waw") return true; break;
  • //VIDEO
  • case "mpeg": case "mpg": case "mpe":
  • if($mimeType == "video/mpeg") return true; break;
  • case "qt": case "ov":
  • if($mimeType == "video/quicktime") return true; break;
  • case "avi":
  • if($mimeType == "video/x-msvideo") return true; break;
  • case "movie":
  • if($mimeType == "video/x-sgi-movie") return true; break;
  • }
  • return false;
  • }
  • private function verifImage() {
  • if(preg_match('`^(jpg|jpeg|png|gif)$`', $this->extension)) {
  • $img = getimagesize($_FILES[$this->postFile]['tmp_name']);
  • if($this->maxWidth != "" || $this->maxHeight != "") {
  • if($img[0] > $this->maxWidth || $img[1] > $this->maxHeight) {
  • $this->errorUpload = "<b class=''>ERREUR</b> : L'image d&eacute;passe les dimensions autoris&eacute;es";
  • return false;
  • }
  • }
  • }
  • return true;
  • }
  • private function uniqName() {
  • if($this->name == "") {
  • $this->name = $this->prefixeName.uniqid("", true);
  • }
  • }
  • private function moveFile() {
  • if(!move_uploaded_file($_FILES[$this->postFile]['tmp_name'], $this->path."/".$this->prefixeName.$this->name.".".$this->extension)) {
  • $this->errorUpload = "<b class=''>ERREUR</b> : Le transfert du fichier a &eacute;chou&eacute;";
  • return false;
  • }
  • return true;
  • }
  • }
  • if(isset($_FILES['file'])) {
  • $upload = new UploadFile(); //Instanciation
  • $upload->setPostFile("file"); //Nom du INPUT FILE (name)
  • $upload->setType("jpg"); //Extension(s) autorisee(s) - string, separer par / les differentes extensions ex:"doc/gif/jpeg"
  • $upload->setPath("UPLOAD/1"); //Chemin d'upload - les retours avec "../" sont acceptes
  • $upload->upload();
  • echo $upload->getErrorUpload();
  • }
  • ?>
  • <form method="post" enctype="multipart/form-data">
  • <input type="file" name="file" />
  • <input type="submit" value="upload" />
  • </form>
<?php
class UploadFile  {
    
    private $droits = 0755;
    private $poidMax = 2;
    private $postFile;
    private $type = array();
    private $path;
    private $prefixeName;
    private $name;
	private $extension;
	
	private $maxWidth;
	private $maxHeight;
	
	private $errorUpload;
    
    //SET
	public function setDroits($v) {
		$this->droits = $v;
	}
	public function setPoidMax($v) {
		$this->poidMax = $v;
	}
    public function setPostFile($v) {
        $this->postFile = $v;
    }
    public function setType($v) {
        $this->type = explode("/", $v);
    }
    public function setPath($v) {
        $this->path = $v;
    }
	public function setPrefixeName($v) {
		$this->prefixeName = $v;
	}
    public function setName($v) {
        $this->name = preg_replace('`[^a-zA-Z0-9]+`i', "-", $v);
    }
	public function setMaxDimensions($v, $v2) {
		$this->maxWidth = $v;
		$this->maxHeight = $v2;
	}
    
    //GET
	public function getPath() {
        return $this->path;
    }
	public function getPrefixeName() {
        return $this->prefixeName;
    }
    public function getName() {
        return $this->name;
    }
	public function getExtension() {
		return $this->extension;
	}
	public function getPathFileName() {
		return $this->path."/".$this->prefixeName.$this->name.".".$this->extension;
	}
	public function getErrorUpload() {
		return $this->errorUpload;
	}
    
	//METHOD
    public function upload() {
		if($this->postFile != "") {
			if($this->controls()) {
				if($this->createDir()) {
					$this->uniqName();
					if($this->moveFile()) {
						$this->errorUpload = "<b class=''>SUCCES</b> : Le fichier a bien &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;";
						return true;
					}
				}
			}
		}
		else $this->errorUpload = "<b class=''>ERREUR</b> : La valeur du champs FILE n'a pas &eacute;t&eacute; parametr&eacute;e";
    }
	private function controls() {
		if($this->setErrorUpload())
			if($this->verifSize())
				if($this->verifExtension())
					if($this->verifImage())
						return true;
	}
    private function createDir() {
		if($this->path != "") {
			if(preg_match('`\/`', $this->path)) {
				$path = explode("/", $this->path);
				$newDir = "";
				foreach($path as $dir) {
					if($dir == "..") {
						$newDir .= "../";
						continue;
					}
					if(!file_exists($newDir.$dir))
						mkdir($newDir.$dir, $this->droits); 
						
					$newDir .= $dir."/";
				}
			}
			else if(!file_exists($this->path))
				mkdir($this->path, $this->droits);
				
			return true;
		}
		else {
			$this->errorUpload = "<b class=''>ERREUR</b> : Aucune destination n'a &eacute;t&eacute; sp&eacute;cifi&eacute;e";
			return false;
		}
    }
	private function setErrorUpload() {
		switch ($_FILES[$this->postFile]['error']) {
			case 1:
				$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux pour la configuration du serveur (upload_max_filesize).";
				break;
			case 2:
				$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux pour la configuration du serveur (max_file_size).";
				break;
			case 3:
				$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier n'a &eacute;t&eacute; que partiellement t&eacute;l&eacute;charg&eacute;.";
				break;
			case 4:
				$this->errorUpload = "<b class=''>ERREUR</b> : Aucun fichier n'a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;.";
				break;
			case 6:
				$this->errorUpload = "<b class=''>ERREUR</b> : Un dossier temporaire est manquant.";
				break;
			case 7:
				$this->errorUpload = "<b class=''>ERREUR</b> : &Eacute;chec de l'&eacute;criture du fichier sur le disque.";
				break;
		}
		if($this->errorUpload == "") return true;
	}
	private function verifSize() {
		if(filesize($_FILES[$this->postFile]['tmp_name']) > ($this->poidMax*1024*1024) ) {
			$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier est trop volumineux";
			return false;
		}
		return true;
	}
	private function verifExtension() {
		if(preg_match('`^(.+)\.(.+)+$`i', $_FILES[$this->postFile]['name'], $extension)) {
			$this->extension = strtolower($extension[2]);
			if(is_array($this->type) && !in_array($this->extension, $this->type) ) {
				$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier n'est pas au format demand&eacute;";
				return false;
			}
			else {
				if(!$this->verifMimeType($extension[2])) {
					$this->errorUpload = "<b class=''>ERREUR</b> : Le fichier semble &ecirc;tre corrompu";
					return false;
				}
			}
			return true;
		}
		return false;
	}
	private function verifMimeType($extension) {
		$mimeType = $_FILES[$this->postFile]['type'];
		switch($extension) {
			//IMG
			case "jpg": case "jpeg": case "jpe":
				if($mimeType == "image/jpeg" || $mimeType == "image/pjpeg") return true; break;
			case "gif": case "gif":
				if($mimeType == "image/gif" || $mimeType == "image/pgif") return true; break;
			case "doc": case "dot":
			//DOC
				if($mimeType == "application/msword") return true; break;
			case "xls": case "xla":
				if($mimeType == "application/msexcel" || $mimeType == "application/vnd.ms-excel") return true; break;
			case "pdf": 
				if($mimeType == "application/pdf") return true; break;
			case "csv": 
				if($mimeType == "text/comma-separated-values") return true; break;
			case "txt": 
				if($mimeType == "text/plain") return true; break;
			case "rft": 
				if($mimeType == "text/richtext") return true; break;
			//ARCHIVE
			case "gz": 
				if($mimeType == "application/gzip") return true; break;
			case "zip": 
				if($mimeType == "application/zip") return true; break;
			//AUDIO
			case "mp2": case "mp3":
				if($mimeType == "audio/x-mpeg") return true; break;
			case "waw":
				if($mimeType == "audio/x-waw") return true; break;
			//VIDEO
			case "mpeg": case "mpg": case "mpe":
				if($mimeType == "video/mpeg") return true; break;
			case "qt": case "ov":
				if($mimeType == "video/quicktime") return true; break;
			case "avi":
				if($mimeType == "video/x-msvideo") return true; break;
			case "movie":
				if($mimeType == "video/x-sgi-movie") return true; break;
		}
		return false;
	}
	private function verifImage() {
		if(preg_match('`^(jpg|jpeg|png|gif)$`', $this->extension)) {
			$img = getimagesize($_FILES[$this->postFile]['tmp_name']);
			if($this->maxWidth != "" || $this->maxHeight != "") {
				if($img[0] > $this->maxWidth || $img[1] > $this->maxHeight) {
					$this->errorUpload = "<b class=''>ERREUR</b> : L'image d&eacute;passe les dimensions autoris&eacute;es";
					return false;
				}
			}
		}
		return true;
	}
	private function uniqName() {
		if($this->name == "") {
			$this->name = $this->prefixeName.uniqid("", true);
		}
	}
	private function moveFile() {
		if(!move_uploaded_file($_FILES[$this->postFile]['tmp_name'], $this->path."/".$this->prefixeName.$this->name.".".$this->extension)) {
			$this->errorUpload = "<b class=''>ERREUR</b> : Le transfert du fichier a &eacute;chou&eacute;";
			return false;
		}
		return true;
	}
}
if(isset($_FILES['file'])) {
    $upload = new UploadFile();               //Instanciation
    $upload->setPostFile("file");             //Nom du INPUT FILE (name)
    $upload->setType("jpg");                  //Extension(s) autorisee(s) - string, separer par / les differentes extensions ex:"doc/gif/jpeg"
    $upload->setPath("UPLOAD/1");             //Chemin d'upload - les retours avec "../" sont acceptes
    $upload->upload();
	echo $upload->getErrorUpload();
}
?>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="upload" />
</form>

 Conclusion

Cette classe a également été réalisée en vue d'etre couplée avec ma future classe de redimentionnement d'images (crop divers etc...), a bon entendeur!^^

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

10 mai 2010 13:14:23 :
Modification du champ source
10 mai 2010 13:44:49 :
Ajout de commentaires sur l'exemple d'utilisation
11 mai 2010 14:43:49 :
Ajout de la methode verifMimeType() appellée par verifExtension() getFileName() devient getPathFileName()

 Sources du même auteur

Source avec Zip Source avec une capture GÉNÉRATION DE FORMULAIRES HTML PERSONNALISÉS.
Source avec Zip CLASSE DE REDIMENSIONNEMENT D'IMAGES PHP

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

Source avec Zip CLASS PHP :: REQUÊTES MYSQL par devgoneti
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
Source avec Zip Source avec une capture CLASS UPLOAD DE FICHIER EN PHP par devgoneti
Source avec Zip CLASSE DE REDIMENSIONNEMENT D'IMAGES PHP par beejeridou

Commentaires et avis

Commentaire de inwebo le 10/05/2010 14:35:54

Bonjour,

Après un rapide survol de cette class, il y a un point qui pourrait être amélioré le test sur l'extension du fichier. Un test sur le mime-type plutôt que sur l'extension du fichier serait plus approprié, voir $_FILES['userfile']['type'].

J'ai également fait une petite class qui réponds au même besoin, mais j'ai rajouté un test pour comparer les poids (en o) du fichier à envoyé et du fichier reçu.

Voilà bonne continuation.

++

Commentaire de beejeridou le 10/05/2010 14:52:37

Oui, tu as tout à fait raison sur l'utilisation du type mime. J'ai hésité à l'employer mais je sais qu'il ne prend pas toutes les extensions(ex: CSV - XLS ??) et pour les images, IE prend le type pjpeg et pgif (ajout du "p" devant).
C'est pour moi trop bizarre donc je n'ai pas utilisé ca. 8)

Commentaire de inwebo le 10/05/2010 15:07:49

'je sais qu'il ne prend pas toutes les extensions(ex: CSV - XLS ??) ' ?

Les mime-types sont normés.
C'est peut être prendre le problème à l'envers que de développer pour l'exception et ensuite de fixer les problèmes.

En ce qui concerne le pjpeg, qui est un mime-type inconnu à part chez microsoft, je te conseil la lecture (en anglais) de : http://www.evolve.co.nz/how-to-fix-a-pjpeg-image-upload-error.html , le 'p' serait pour 'protected'jpeg et non pas progressive, noté le conditionnel, si vous avez d'autre infos je suis à l'écoute.

Commentaire de beejeridou le 10/05/2010 15:29:47

Penses-tu alors que la vérification de l'extension du fichier faite comme je l'ai fais peut avoir une faille de sécurité?

Je peux rajouter dans l'expression régulière des fichiers strictements interdits par exemple? (lol le flemmard)
Sinon je modifie tout ca ce soir et fournirai une vérif sur le type/mime.

Merci pour tes infos.

Commentaire de inwebo le 11/05/2010 10:31:45

La vérification du type de fichier ne devrait fait PAS se faire sur son extension ! Même le type-mime n'est pas sûr à 100%, mais c'est une meilleur solution que l'extension.

Commentaire de xstyled le 11/05/2010 12:47:16

Si il n'y a que le traitement de l'extension, on peut facilement injecter du code dans le commentaire de l'image, et l'exécuter sur le serveur du genre image.gif%00 (dans le path bien sur), donc après, il faut protéger l'url ...
Autant faire en sorte que le script d'upload soit le plus sécurisé possible pour simplifiez le code dans son utilisation.

Commentaire de beejeridou le 11/05/2010 14:03:12

Merci, je planche dessus, y a pas de soucis, je fais la modif de la classe dans l'aprem.

Commentaire de beejeridou le 11/05/2010 14:53:16

Voilà, j'ai fait la vérification également sur le type-mime.

Cependant, effectivement, comme le disait si bien inwebo, le type-mine n'est pas fiable.

Exemple: j'ai renommé un fichier xls en .jpg, et le type-mime retourné était bien "application/vnd.ms-excel"... Le fichier a été uploadé (meme invalide mais uploadé quand meme).

J'ai fais des recherches sur le net et je ne vois pas de solutions fiable à adapter de manière native.

Si vous avez une solution à donner je suis preneur.

Commentaire de beejeridou le 11/05/2010 14:55:46

Au fait, je file un lien pour gérer des extensions moins courantes pour ce fameux type-mime:

http://fr.selfhtml.org/divers/typesmime.htm

Commentaire de inwebo le 12/05/2010 10:53:06

Bonjour,

Je n'aurais pas fait la vérification du type-mime comme cela. Tout est codé en dur dans votre classe, admettons que je veuille envoyé un .rar et que je ne veux pas ajouter de ligne de code dans la class. Comment faire ?

Je mettrais en paramètre lors de l'instanciation de la class un tableau de type-mime autorisés puis de boucler sur ce tableau pour vérifier si le fichier est autorisé. C'est un peu plus souple et évolutif je pense que tout en "dur".

Deuxième chose, il faudrait commenter également votre code : j'utilise pour référence la documentation du zendframwork  http://framework.zend.com/manual/fr/coding-standard.html

Cordialement

Commentaire de beejeridou le 12/05/2010 12:10:32

J'ai mis dans ma classe les type-mime les plus courants, à chacun d'adapter cette liste selon ses besoins et c'est d'ailleurs pour cela que j'ai également fourni une liste de type-mime. Une fois que cela est fait, la déclaration se fait en une seule ligne, pour chaque upload.

$upload->setType("jpg/doc/xls");

Pour ce qui est des commentaires, j'ai commenté l'exemple d'utilisation. Les gens qui veulent utiliser cette classe peuvent me poser toutes les questions qu'ils veulent au besoin.

Commentaire de inwebo le 12/05/2010 13:48:58

Pour les commentaires je pensais plus aux personnes qui utilisent un I.D.E. pour avoir l'autocompletion d'active. Mais aussi pour le dev', lorsque on laisse de côté un code pendant quelques temps de pouvoir le modifié sans trop se casser la tête.

++

Commentaire de GillesWebmaster le 16/05/2010 17:11:08 10/10

joli boulot :-D

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Upload de fichiers avec Dreamweaver MX [ par hasselblad ] Bonjour,Etant newbie en PHP, je travaille actuellement sous Dreamweaver MX et Easy PHP.Grâce à divers exos sur le web, j'arrive maintenant à creer des Compresser les fichiers pour Upload [ par Hpic ] Bonjour ,Quelqu'un aurait-il l'amabilité de m'expliquer comment compresser un fichier en *.*.zip lors de l'upload du fichier sur un serveur ( apache Upload de fichiers [ par Tomcube ] C'est pas un problème technique mais plutôt une question pratique.Quelle est la meilleure façon d'uploader, et pouquoi ?- move_uploaded_file() ?- les Upload de fichiers [ par dklice ] Bonjour, Comme je suis débutant et que je ne comprend pas vraiment ce language j'aimerais que quelqu'un pour passer le temp me fabrique un petit scrip linux upload taille des fichiers envoyés [ par TRASH52 ] TRASH52Le serveur tourne sous la red hat 9.0 Bon apres de multiples tests: upload de fichiers [ par cakekiller ] Salut,voilà mon pb:Je cherche à uploader un fichier sur un serveur. Ma page de sélection de fichier est la suivante:&lt;form name="form1" method="post UpLoad de gros fichiers : HELP !!!!! [ par ben01n ] Voila la situation : j'aimerai faire une page permettant l'upload de fichiers sur mon site. Or j'utilise actuellement les fonction is_uploaded_file() Upload fichier php [ par alanbraxe31 ] Bonjour à tous!voila j'ai un gros soucis avec la fonction mail en php.je souhaites joindre un fichier à mon mail. A la réception du mail, les fichiers Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ] Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je fonction upload [ par Zebra1928 ] salut à tous,j'ai un site en php hebergé sur un serveur Linux, mon problème est que j'utilise la fonction upload, elle fonctionne à merveille pour tou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales