<?php
/* chargement des fichiers de langue */
function get_traducs($lang_fichier) {
if (file_exists($lang_fichier)) {
$lignes = file($lang_fichier);
while (list(,$ligne) = each($lignes)) {
list($cle, $val)= explode("=",$ligne);
$phrases[$cle] = $val;
}
return $phrases;
} else {
return false;
}
}
/* traduire une chaine */
function traduire($chaine,$vals="") {
global $phrases;
if ($phrases) {
$p_chaine = $phrases[$chaine];
if ($p_chaine == "") {
$p_chaine = $chaine;
}
} else {
$p_chaine = $chaine;
}
if (gettype($vals)=="array") {
$p_chaine = sprintf($p_chaine, $vals[0], $vals[1], $vals[2], $vals[3], $vals[4], $vals[5], $vals[6]);
}
return (trim($p_chaine));
}
$taille_max_fichier = "102400"; # en bytes
$longueur_max_image = "800";
$largeur_max_image = "800";
$chemin = "image/";
$types_enregistres = array(
"application/x-gzip-compressed" => ".tar.gz, .tgz",
"application/x-zip-compressed" => ".zip",
"application/x-tar" => ".tar",
"text/plain" => ".html, .php, .txt, .inc (etc)",
"image/bmp" => ".bmp, .ico",
"image/gif" => ".gif",
"image/pjpeg" => ".jpg, .jpeg",
"image/jpeg" => ".jpg, .jpeg",
"application/x-shockwave-flash" => ".swf",
"application/msword" => ".doc",
"application/vnd.ms-excel" => ".xls",
"application/octet-stream" => ".exe, .fla (etc)"
);
$types_autorises = array("image/bmp","image/gif","image/pjpeg","image/jpeg");
# --
function form($erreur=false) {
global $PHP_SELF,$taille_max_fichier,$lang;
if ($erreur) print $erreur . "<br><br>";
print "\n<form ENCTYPE=\"multipart/form-data\" action=\"upload.php3\" method=\"post\">";
print "\n<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $taille_max_fichier . "\">";
print "\n<INPUT TYPE=\"hidden\" name=\"tache\" value=\"upload\">";
print "\n<P>" . traduire("Uploader images")."";
print "\n<BR>NOTE: " . traduire("Taille maximum du fichier")." " . ($taille_max_fichier / 1024) . "KB";
print "\n<br><INPUT NAME=\"fichier\" TYPE=\"file\" SIZE=\"35\"><br>";
print "\n<input type=\"submit\" Value=\"Upload\">";
print "\n</form>";
} # FIN de form
# --
if (!ereg("^4",phpversion())) {
function in_array($needle,$haystack) { # cette fonction existe en PHP 4, donc pour ceux qui utilise PHP 3
for ($i=0; $i < count($haystack); $i++) {
if ($haystack[$i] == $needle) {
return true;
}
}
}
}
# --
function valider_upload($fichier) {
global $taille_max_fichier, $longueur_max_image, $largeur_max_image, $types_autorises, $fichier_type, $types_enregistres;
$start_erreur = "\n<b>Erreur :</b>\n<ul>";
if ($fichier == "none") { # le fichier a-t-il été spécifié ?
$erreur .= "\n<li>Vous n'avez rien uploadé!</li>";
} else { # verifie si on a le droit d'uploader ce type de fichier
if (!in_array($fichier_type, $types_autorises)) {
$erreur .= "\n<li>Le fichier que vous avez uploadé est d'un type non autorisé, vous pouver uploader uniquement ce(s) type(s) de fichiers:\n<ul>";
while ($type = current($types_autorises)) {
$erreur .= "\n<li>" . $types_enregistres[$type] . " (" . $type . ")</li>";
next($types_autorises);
}
$erreur .= "\n</ul>";
}
if (ereg("image", $fichier_type) && (in_array($fichier_type, $types_autorises))) {
$taille = GetImageSize($fichier);
list($foo, $longueur, $bar, $largeur) = explode("\"", $taille[3]);
if ($longueur > $longueur_max_image) {
$erreur .= "\n<li>Votre image ne doit pas être plus longue que " . $longueur_max_image . " Pixels</li>";
}
if ($largeur > $largeur_max_image) {
$erreur .= "\n<li>Votre image ne doit pas être plus large que " . $largeur_max_image . " Pixels</li>";
}
}
if ($erreur) {
$erreur = $start_erreur . $erreur . "\n</ul>";
return $erreur;
} else {
return false;
}
}
} # FIN valider_upload
# --
function liste_fichiers() {
global $chemin;
$handle = dir($chemin);
print "\n<b>Fichiers uploadés</b><br>";
while ($fichier = $handle->read()) {
if (($fichier != ".") && ($fichier != "..")) {
print "\n" . $fichier . "<br>";
}
}
print "<hr>";
}
# --
function upload($fichier) {
global $chemin, $fichier_nom;
$erreur = valider_upload($fichier);
if ($erreur) {
form($erreur);
} else { # cool, on peut continuer
if (!@copy($fichier, $chemin . "/" . $fichier_nom)) {
form("\n<b>Une erreur est survenue, vérifiez le chemin d'accès et les permissions pour le dossier d'upload</b>");
} else {
liste_fichiers();
form();
}
}
} # FIN upload
# --
############ Début de la page
print "<html>\n<head>\n<title>Exemple d'upload</title>\n</head>\n<body>";
echo("<table width=\"0%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
<tr align=\"left\">
<td><font face=verdana size=2>");
switch($tache) {
case 'upload':
upload($fichier);
break;
default:
form();
}
echo("</font></td>
</tr>
</table>");
print "\n</body>\n</html>";
?>
J'ai pas tout vérifié mais normalement il ne devrait y avoir d'erreurs (quand je parle d'erreurs, c'est pas d'erreurs de traduction (enfin j'espère ^^), mais par exemple si j'ai oublié de traduire une variable).