Bonjour à tous,

Voilà je suis un peu dans le pétrin par ce que j' ai un formulaire d'upload qu on m avait gentiment donner sur le net qui ne fonctionne plus.

Depuis que mon serveur est par défaut en PHP 5 celui ci ne fonctionne plus.
Si je regle mon serveur sur PHP 4 , tout baigne...

Maintenant je n'ai plus que des serveurs qui gèrent le PHP 5, je suis blousé ...

Y 'a t' il un moyen simple de le faire fonctionner avec PHP 5 ?

voilà le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * Upload - floptwo :
 *   Il s'agit d'un script qui permet d'uploader des
 *   fichiers sur son serveur via un formulaire.
 *   Sous la forme d'une simple fonction, il permet
 *   d'envoyer le fichier selectionné dans un dossier
 *   spécifique, de limiter le poids des fichiers à 
 *   envoyer, si l'option est activée, renommer le 
 *   fichier envoyer s'il en existe déjà un du même nom
 *   mais de poids différent. 
 *   (si "fichier.ext" existe il sera renommer : "fichier(1).ext")
 *
 *   Script réalisépar floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
function upload ($http_post_file, $file_folder, $file_maxSize, $file_autoRename)
{
	// Ici on déclare queleque variables qui nous serons utiles
 
	/* $upload : Après tous les tests nous permettra de savoir
	 * si on upload ou pas. Par défaut il est faux (false) pour
	 * éviter un : ...else {$upload = false;} et éviter un eventuel 
	 * "error  Variable undefinded...". */
	$upload = false; 
 
	/* $_result : Variable qui contient un numero qui sert de 
	 * code d'erreur. Elle nous permettra d'afficher des
	 * messages précis définissant les erreurs.
	 * Par défaut 2 pour éviter un : ...else {$_result = 2;}
	 * et éviter un eventuel "error  Variable undefinded...".*/
	$_result = 2;
 
	/* $file_newName : On initialise la variable qui
	 * contiendra le nouveau nom du fichier s'il à dû
	 * être renommé et éviter un eventuel 
	 * "error  Variable undefinded...".*/
	$file_newName = '';
 
	// Si l'adresse d'un fichier a bien été saisie
	if (!empty($http_post_file) && !empty($http_post_file['name']))
	{
		/* $http_post_file correspond à $HTTP_POST_FILES['fichier']
		 * qui est un tableau contenant les information sur le fichier posté. */
		$file_name = 	$http_post_file['name']; // nom du fichier
		// $file_type = 		$http_post_file['type']; // type du fichier pourrai servir a un filtre pour n'envoeyr qu'un certain type de fichier
		$file_size = 		$http_post_file['size']; // poids du fichier
		$file_tmp = 		$http_post_file['tmp_name']; // adresse qu fichier temporaie sur le serveur
 
		$file_adresse = $file_folder.'/'.$file_name; // location du fichier
 
		// Si le poids du fichier est inférieur ou égal au poids autorisé
		if ($file_size <= $file_maxSize) 
		{	
			// Si un fichier du meme nom n'existe pas deja
			if (!file_exists ($file_adresse)) 
			{
				$file_newName = $file_name; // il gardera alors le nom de départ
				$upload = true; // tout est ok on peut uploader
				$_result = 0; // Code pour un envoie simple et effectuer
			}
			// Sinon Si le fichier existe et qu'on autorise le renommage automatique
			elseif (file_exists ($file_adresse) && $file_autoRename)
			{
				// A l'aide d'expressions régulières on extrait :
				$expR = eregi("^(.*)[.](.*)$" , $file_name , $expRa); // le nom et l'extension
				$expR = eregi("^(.*)[(]([0-9]*)[)]$" , $expRa[1] , $expRb); //verifie si le fichier ne se termine pas déja par (x)
				$file_num = $expRb[2]; // le numero deja affecté. Le  x dans ficiher(x).ext
 
				$exist_file_info = stat ($adress_file); //relève des information sur le fichier déja existant
				$exist_file_size = $file_info[7]; // relève le poids en octets
				// Si le fichier à envoyer n'a pas le même poids que le fichier déjà présent et du même nom
				if ($exist_file_size != $file_size)
				{
					// si le fichier a deja un compteur x  >>> fichier(x).ext
					if (!empty($expRb[2]))
					{	
						$file_num++; // On incremente le compteur
						$file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
						// Tant qu'il y a un fichier du nouveau nom choisi on incrémente
						while (file_exists($file_folder.'/'.$file_newName))
						{
							$file_num++;
							$file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
						}		
					}
					// si le fichier n'a pas encor de compteur on lui en creer un
					else
					{
						$file_newName = $expRa[1].'(1).'.$expRa[2];
						// Tant qu'il existera un fichier avec le compteur qu'on souhaite lui attribuer on incrémente le compteur
						while (file_exists($file_folder.'/'.$file_newName))
						{
							$file_num++;
							$file_newName = $expRa[1].'('.$file_num .').'.$expRa[2];
						}
 
					}
					$upload = true; // tout est ok on peut uploader
					$_result = 1; // Code pour un envoie dans le cas d'un fichier déja existant et renommer
				}
				// Sinon, si le fichier à envoyer a le même poids que le fichier déjà présent et du même nom
				else
				{
					// Pas de $upload = true; le fichier existe déjà
					$file_newName = $file_name; // il gardera alors le nom de départ
					$_result = 5;  // Code pour un fichier existant déjà
				}
 
			}
			// Sinon, si le fichier existe déjà mais que l'on n'autorise pas le renommage automatique
			else
			{
				$_result = 4; // Code erreur d'un fichier déjà  existant
			}
 
		}
		// Sinon, si le poids du fichier est supérieur au poids autorisé
		else
		{
			$_result = 3; // Code erreur d'un poids fichier supérieur au poids autorisé
		}
 
	}
 
	// Si tout est ok et que le $upload = true
	if ($upload)
	{
		// Si la copie échoue quand meme
		if (!copy($file_tmp , $file_folder.'/'.$file_newName)) 
		{
			$_result = 6; // Code erreur 
		}
	}	
 
	// Dans un tableau on met le code obtenu et le nouveau nom du fichier
	$upload_result = array($_result , $file_newName);
	return $upload_result; //on retourne le tableau
}
?>
<html>
	<head>
		<title>upload - floptwo</title>
	</head>
 
	<body>
 
		<form enctype="multipart/form-data" action="" method="post">
			<input type="hidden" name="MAX_FILE_SIZE" value="500000000">
			Fichier : <input name="fichier" type="file"> <input type="submit" value="Envoyer">
		</form>
		<br/>
<?php
if (isset($HTTP_POST_FILES['fichier']))
{ 
	$file_folder ='test';
	$file_name = $HTTP_POST_FILES['fichier']['name'];
 
	// On récupère le tableau contenant le resultat de l'upload
	$upload_result = upload ($HTTP_POST_FILES['fichier'], $file_folder , $_POST["MAX_FILE_SIZE"], true);
 
	// Affichage des erreur corespondantes au code obtenu
	switch($upload_result [0])
	{
		case '0' : 
			echo 'Le fichier "' , $upload_result [1] , '" a bien été envoyé.'; break;
 
		case '1' : 
			echo 'Un fichier nommé "' , $file_name , '" existait déjà. Le fichier a été renommé "' , $upload_result [1] , '" puis envoyé.'; break;
 
		case '2' : 
			echo 'Aucun fichier n\'a été soumis.'; break;
 
		case '3' : 
			echo 'Le fichier supérieur à la taille limite autorisée.'; break;
 
		case '4' : 
			echo 'Un fichier nommé "' , $upload_result [1]  , '" existe déjà.'; break;
 
		case '5' : 
			echo 'Un fichier identique nommé "' , $upload_result [1]  , '" existe déjà.'; break;
 
		case '6' : 
			echo 'Une erreur inconnue est survenue.'; break;
	}
 
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * script réalisé par floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
?>
	</body>
 
</html>
Merci pour le coup de main les gars, je suis débutant ....