Upload Image impossible

Résolu/Fermé
leblogueur Messages postés 199 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 23 novembre 2012 - 22 déc. 2011 à 22:37
leblogueur Messages postés 199 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 23 novembre 2012 - 24 déc. 2011 à 02:23
Bonjour,
j'ai un site nuked-klan, mais ça on sen fous XD ^^
Alors pour accédez a mes page les lien se présente sous la forme suivant : site.com/index.php?=News par exemple et j'ai un script d'upload d'image dans une page comme celle la, alors seul donc en affichant directement le index.php des News le script fonctionne parfaitement, mais pas dans les lien, comme citez plus haut. Il recharge la page site.com/index.php
alors comment faire pour que l'upload se fasse correctement
page PHP :

<?php



// Constantes
define('TARGET', 'upload/'); // Repertoire cible
define('MAX_SIZE', 100000); // Taille max en octets du fichier
define('WIDTH_MAX', 800); // Largeur max de l'image en pixels
define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels

// Tableaux de donnees
$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
$infosImg = array();

// Variables
$extension = '';
$message = '';
$nomImage = '';


// Creation du repertoire cible si inexistant

if( !is_dir(TARGET) ) {
if( !mkdir(TARGET, 0755) ) {
exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
}
}

// Script d'upload

if(!empty($_POST))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);

// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier']['tmp_name']);

// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier']['error'])
&& UPLOAD_ERR_OK === $_FILES['fichier']['error'])
{
// On renomme le fichier
$nomImage = 'skingara-serveur.'. $extension;

// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
{
$message = 'Upload réussi !';
}
else
{
// Sinon on affiche une erreur systeme
$message = 'Problème lors de l\'upload !';
}
}
else
{
$message = 'Une erreur interne a empêché l\'uplaod de l\'image';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message = 'Erreur dans les dimensions de l\'image !';
}
}
else
{
// Sinon erreur sur le type de l'image
$message = 'Le fichier à uploader n\'est pas une image !';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = 'L\'extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = 'Veuillez remplir le formulaire svp !';
}
}



//////

if( !empty($message) )
{
echo '<p>',"\n";
echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>\n";
echo "\t</p>\n\n";
}
?>
<!-- Debut du formulaire -->
<form enctype="index.php?file=Team" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Formulaire</legend>
<p>
<label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
<input name="fichier" type="file" id="fichier_a_uploader" />
<input type="submit" name="submit" value="Uploader" />
</p>
</fieldset>
</form>
<!-- Fin du formulaire -->
</body>
</html>


A voir également:

2 réponses

salut,
si ton upload se passe correctement sans variables dans l'url alors ce n'est pas l'upload de l'image qui pose problème mais l'url.
l'attribut action du formulaire <?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> donc lors de l'upload le code est envoyé vers cette page , mais $_SERVER['PHP_SELF'] ne donne pas l'url en entier, il ignore les variables de requête (..=news). avec un tel code tu iras toujours vers la page site.com/index.php et si celle ci ne contient pas le code pour l'upload alors ça ne marchera pas.
Il faut donc mettre l'url en entier, bon en utilisant ton code,il faudra plutôt
action=<?php echo htmlspecialchars($_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); ?> 

$_SERVER['QUERY_STRING']) permet de récupérer ces variables dans l'url (..=news)
mais tu vois très bien que c'est pourri comme code, le mieux c'est de faire
action=""  

voilà je crois que ça résout tout le problème de l'url.
1
leblogueur Messages postés 199 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 23 novembre 2012 12
24 déc. 2011 à 02:23
Merci ça fonctionne nickel :p
0