Bonjour,
J'ai un formulaire d'upload sur plusieurs de mes sites, car je n'aime pas trop les services genre Imageshack ... Et je préfere rendre se service gratuit d'hébergement des images de mes visiteurs moi même...
Voici le code du formulaire que j'utilise:
<HTML><BODY><CENTER>
<?
// Taille max des fichiers (octets)
$MFS=1024;
// Répertoire de stockage
$rep="upload/";
if(isset($_FILES['userfile'])) {
if($_FILES['userfile']['size']>0) {
$savefile= $rep.$_FILES['userfile']['name'];
$temp = $_FILES['userfile']['tmp_name'];
if (move_uploaded_file($temp, $savefile)) { ?>
<b>Votre fichier a bien été enregistré !</b>
<BR>Nom : <?echo $_FILES['userfile']['name'];?>
<BR>Taille : <?echo $_FILES['userfile']['size'];?> o
<? } else { ?>
<b>Erreur d'enregistrement !</b>
<? }
} else { ?>
<b>Trop gros fichier !</b>
<i>( <? echo $MFS;?> octets max.)</i>
<? }
} ?>
<FORM METHOD="POST"
ENCTYPE="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE
VALUE=<? echo $MFS;?>>
<INPUT TYPE=FILE NAME="userfile"><BR>
<INPUT TYPE=SUBMIT value="Enregistrer le fichier">
</FORM>
LISTE DES FICHIERS TELECHARGES
<BR><TABLE border>
<? $dir = opendir($rep);
while ($f = readdir($dir))
if(is_file($rep.$f)) { ?>
<TR>
<TH>
<A href="<? echo $rep.$f; ?>"
target="_blank"><? echo $f; ?></A>
</TH>
<TD align=right><? echo filesize($rep.$f); ?></TD>
<TD>
<? echo date("d/m/Y H:i:s",filectime($rep.$f)); ?>
</TD></TR>
<? }
closedir($dir); ?>
</TABLE>
</CENTER></BODY></HTML>
Mais dans se formulaire, le problème c'est qu'il accepte tout les types de fichiers, pas que les images... L'insertion d'autres pages par exemple et je sais qu'un petit lamerz aurait vite fait "d'hacker" ce petit service gratuit que je propose volontier à mes visiteurs ...
j'ai vu qu'il y avait un post similaire sur ce forum,
Et j'ai peut-être trouvé ce qu'il me faut!
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') &&
!strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
mais je ne sais pas exactement où le placer dans mon fichier actuel, j'ai essayé de la placer en dessous de cete ligne si par exemple, mais mes divers essais n'ont pas été fructueux..
<BR>Type : <?echo $_FILES['userfile']['type'];?>
Pouvez vous m'indiquer que faire pour que les seules fomats de fichiers acceptés soit jpg jpeg gif bmp
Désolé, je fais de mon mieux... Pour vous je vais peut-être passer pour le roi des boulets ou des imbéciles...Mais je débute dans le PHP...
EDIT:je pense qu'avec cette partie de code cela devrait marcher,
Je vous dit quoi

$allowed_mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png');
EDIT 2: Mon essais n'a pas marché pourtant je sens que je suis proche du but, peut être un problème venant de $allowed_mimetypes qui n'est pas pris en compte...Je suis perplexe, désolé si je note mon avancement pas à pas, mais sinon je n'y arriverai jamais et je vais tourner en rond..
EDIT3: Et bien finalement j'ai utilisé le code suivant
<html>
<head>
<title>Upload d'une image sur le serveur !</title>
</head>
<body>
<?php
if(!empty($_POST['posted'])) {
// On vérifie si le champ est rempli
if(!empty($_FILES['fichier']['name'])) {
// On vérifie l'extension du fichier
if(substr($nom_file, -3) == $extension) {
// On récupère les dimensions du fichier
$infos_img = getimagesize($_FILES['fichier']['tmp_name']);
// On vérifie les dimensions et taille de l'image
if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fichier']['size'] <= $max_size)) {
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$_FILES['fichier']['name'])) {
// Si upload OK alors on affiche le message de réussite
echo '<b>Image uploadée avec succès !</b>';
echo '<hr />';
echo '<b>Fichier :</b> ', $_FILES['fichier']['name'], '<br />';
echo '<b>Taille :</b> ', $_FILES['fichier']['size'], ' Octets<br />';
echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
echo '<hr />';
echo '<br /><br />';
} else {
// Sinon on affiche une erreur système
echo '<b>Problème lors de l\'upload !</b><br /><br /><b>', $_FILES['fichier']['error'], '</b><br /><br />';
}
} else {
// Sinon on affiche une erreur pour les dimensions et taille de l'image
echo '<b>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
} else {
// Sinon on affiche une erreur pour l'extension
echo '<b>Votre image ne comporte pas l\'extension .jpg !</b><br /><br />';
}
} else {
// Sinon on affiche une erreur pour le champ vide
echo '<b>Le champ du formulaire est vide !</b><br /><br />';
}
}
?> <form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">
<b>Envoyer le fichier :</b><br /><br />
<input type="hidden" name="posted" value="1" />
<input name="fichier" type="file" />
<input type="submit" value="Uploader" />
</form>
</body
</CENTER></BODY></HTML>
Par contre je n'ai pas de liste de tout les fichiers uploader... je vais essayer de fusionner le nouveau et l'ancien script...
Je le ferais demain, deux nuits que je ne dors plus..
Cordialement oake, ^^ En esperant que vous me répondrez positivement ,