J'ai le script php suivant pour permettre l'upload de fichiers sur mon site, avec des chmods 733.
CODE-BOX
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg' '.xls');
$extension = strrchr($_FILES['avatar']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, xls';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
Ce script est "alimenté" par le formulaire ci-dessous, placé sur une page hmtl:
CODE
<form name="upload" enctype="multipart/form-data" method="post" action="upload.php">
<!-- On limite le fichier à 100Ko --><input type="hidden" name="MAX_FILE_SIZE" value="102400">
Fichier : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
<!-- On limite le fichier à 100Ko --><input type="hidden" name="MAX_FILE_SIZE" value="102400">
Fichier : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
Cela fonctionne parfaitement. Mais je voudrais qu'après que l'upload du fichier soit fait, ou s'il y a erreur, un retour vers la page de formulaire soit possible.
J'ai utilisé le code suivant :
CODE
// Récupération de l'url de retour
$return_link = $_SERVER['HTTP_REFERER'];
$return_link = $_SERVER['HTTP_REFERER'];
Puis ai créé la fonction de retour automatique :
CODE
function createReturnLink(){
global $return_link;
echo "<a href='".$return_link."'>Retour</a><br>";
}
global $return_link;
echo "<a href='".$return_link."'>Retour</a><br>";
}
et placé
CODE
echo(createReturnLink());
après echo 'Upload effectué avec succès !'; et echo 'Echec de l\'upload !';
Et là, rien ne va plus et je me retrouve avec le message d'alerte :
"Warning: move_uploaded_file(upload/Image-1.png) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/admiplus/domains/admiplus.fr/public_html/upload.php on line ... [celle qui correspond dans mon script à : if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))]
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpenWX3O' to 'upload/Image-1.png' in /home/admiplus/domains/admiplus.fr/public_html/upload.php on line ... [idem ci-dessus]
Echec de l'upload !"
J'ai supposé qu'il me fallait changer mes chmods, mais même avec les 777, j'obtiens le même résultat.
Où fais-je erreur à votre avis ?
Merci par avance de votre aide...