OVH Community, votre nouvel espace communautaire.

problème lors de l'upload d'une image


Gaston_Phone
19/10/2015, 05h05
Citation Envoyé par Rizz
pour de l'upload d'image j'aurai quand meme utilisé GD apres avoir vérifier les extensions et avant de l'enregistrer directement...
Si jamais vous redonnez le lien ou se trouve "l'image" c'est des risques de hack tout simplement. idem si celle si est visible par d'autre ( l'admin le premier. )
On peut aussi bien upload un fichier Js ou autre...
Tout à fait d'accord.

Rizz
19/10/2015, 01h35
pour de l'upload d'image j'aurai quand meme utilisé GD apres avoir vérifier les extensions et avant de l'enregistrer directement...
Si jamais vous redonnez le lien ou se trouve "l'image" c'est des risques de hack tout simplement. idem si celle si est visible par d'autre ( l'admin le premier. )
On peut aussi bien upload un fichier Js ou autre...

Gaston_Phone
17/10/2015, 20h49
Citation Envoyé par jerem480
merci bcp pour vos conseils. J'ai pu enfin régler mon problème.
Effectivement, mon chemin absolu était incomplet. et en utilisant, home/nomUser/www/..., regle le probleme
Tu devrais quand même chercher le lien relatif qui te permettra de récupérer tes fichiers image.
Ce n'est pas si compliqué : Tu essaies avec ../ et puis ../ ../ et puis ../ ../ ../ et ainsi de suite.

Tu aura alors un codage propre.

ovniz
17/10/2015, 20h34
En isolant les problèmes c'est plus simple de les résoudre un par un.

Bonne nouvelle que vous ayez réussi.

jerem480
17/10/2015, 15h24
merci bcp pour vos conseils. J'ai pu enfin régler mon problème.
Effectivement, mon chemin absolu était incomplet. et en utilisant, home/nomUser/www/..., regle le probleme

jerem480
17/10/2015, 14h41
Code PHP:

$chemin 
realpath(connectbdd.php);
echo 
"---------|".$chemin."|--------";

    if (
$error == UPLOAD_ERR_OK) {

        
$tmp_name $_FILES["photo"]["tmp_name"];

        
$name $_FILES["photo"]["name"];

        
$size $_FILES["photo"]["size"];

        
//if(move_uploaded_file($tmp_name, "\www\images\article\".$name)){

        
echo "tmp_name:".$tmp_name."
"
;

        echo 
"name:".$name."
"
;

        echo 
"size:".$size."
"
;

    
//}
}

include_once(
"module\tab\article.php");

?>

En suivant vos conseils, j'ai tout repris a zéro et j'ai mis que l'essentiel.
et voilà le résultat que j'obtien:

"---------||--------
tmp_name:/tmp/php0agWk9
name:tableauBord.png
size:15911"

janus57
17/10/2015, 13h18
Bonjour,

si c'est un mutualisé OVH jamais de la vie ceci "/www/image/appartement/" va fonctionné car chez OVH cela commence par /home (Cf : https://www.ovh.com/fr/g1463.mutuali...tif_du_serveur).

Comme l'a dit @ovniz il faut en premier lieu vérifier le chemin absolu d'upload de l'image.

Cordialement, janus57

ovniz
17/10/2015, 08h57
Quand on arrive pas à faire marcher qq chose, il faut mettre ses certitudes de côtés.
Je ne sais pas ce qu'est votre premier else

SVP, au début de votre script, faites :
Code:
$chemin_reel = realpath(connectbdd.php);
echo $chemin;
et donnez le résultat.

Avez-vous essayé de faire un upload d'image avec un script hyper basique, en enlevant tout ce qui n'est pas concerné par l'upload ?
Ensuite vous ajouter progressivement ce dont vous avez besoin.
Mais partez d'un simple formulaire pour poster 1 image. Supprimez tous les contrôles, renommages... et regardez juste si l'image arrive là où c'est prévu. Tant que vous n'arrivez pas à ça, inutile d'ajouter le reste du code.

jerem480
17/10/2015, 08h45
J'ai déjà essayé ce type de chemin mais mon script me renvoi a mon premier "else".

oui car ce fichier ce trouve dans le même dossier que mon script d'uploard

ovniz
17/10/2015, 08h15
Pouvez-vous enlever toutes les lignes vides inutiles ? Car là, c'est un peu pénible à lire.
On n'a aucune vision globale du code.

Au début :
// Constantes
define('TARGET', '\www\image\appartement\\'); // Repertoire cible
Vous avez marqué que c'est un serveur Linux, donc :
Code:
// Constantes
define('TARGET', '/www/image/appartement/');    // Repertoire cible
Etes-vous bien sûr de ce chemin ?
Vous pouvez faire

Code:
$chemin_reel = realpath(connectbdd.php);
echo $chemin;

jerem480
17/10/2015, 08h11
Code PHP:

include_once("connectbdd.php");

// Constantes

define('TARGET''\www\image\appartement\\');    // Repertoire cible

// Tableaux de donnees

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

$infosImg = array();

// Variables

$extension '';



$nomImage '';

$arrayPhoto= array();

$nomPhoto= array();

$arrayPhoto = [

                
'0' => $_FILES['photo'],

                
'1' => $_FILES['photoB'],

                
'2' => $_FILES['photoC'] ];


/************************************************************

 * Script d'upload

 *************************************************************/

    
foreach ($arrayPhoto as $photo) {

    
// On verifie si le champ est rempli

    
if( !empty($photo['name']) )

    {

      
// Recuperation de l'extension du fichier

      
$extension  pathinfo($photo['name'], PATHINFO_EXTENSION);

      
// On verifie l'extension du fichier

      
if(in_array(strtolower($extension),$tabExt))

      {

        
// On recupere les dimensions du fichier

        
$infosImg getimagesize($photo['tmp_name']);

   

        
// On verifie le type de l'image

        
if($infosImg[2] >= && $infosImg[2] <= 14)

        {

            
// Parcours du tableau d'erreurs

            
if(isset($photo['error']) 

              && 
UPLOAD_ERR_OK === $photo['error'])

            {

              
// On renomme le fichier

              
$nomImage md5(uniqid()) .'.'$extension;

              
// Si c'est OK, on teste l'upload

              
if(move_uploaded_file($photo['tmp_name'], TARGET.$nomImage))

              {

                
$nomPhoto[] = $nomImage;

                    echo 
"Téléchargement reussi

                    ×


                    

"
;


              }

              else

              {

                
// Sinon on affiche une erreur systeme

                
echo "Erreur de téléchargement du fichier

                    ×


                    

";

              }

            }

            else

            {

                echo 
"Une erreur interne a empêché l'uplaod de l'image

                    ×


                    

";

            }

        }

        else

        {

          
// Sinon erreur sur le type de l'image

            
echo "Le fichier Ã* télécharger n'est pas une image !

                    ×


                    

";

        }

      }

      else

      {

        
// Sinon on affiche une erreur pour l'extension

        
echo "L'extension du fichier est incorrecte

                    ×


                    

"
      }

    }

  }

$photo $nomPhoto[0];

$photoB $nomPhoto[1];

$photoC $nomPhoto[2];

 
$req $bdd->prepare('INSERT INTO appartement(nb_piece, superficie, localisation, ville, dispo, prix, description, photo, photoB, photoC) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($_POST['nb_piece'], $_POST['superficie'], $_POST['localisation'], $_POST['ville'],  $_POST['dispo'], $_POST['prix'], $_POST['description'], $photo$photoB$photoC));

include_once(
"module/tab/appart.php");

?>

c'est le script que j'utilise.

janus57
16/10/2015, 16h37
Bonjour,

serveur OVH ou serveur VPS ou vous avez installé LAMP dessus ?

Possible de donner votre script (ce sera 10x plus simple pour trouver le problème) ?

Cordialement, janus57

jerem480
16/10/2015, 07h13
bonjour,

Mon serveur est bien sous Linux, d'où m'a plus grande interrogation, pourquoi quand j'utilise les "/" mon script ne fonctionne pas (mon image ne peut être uploader) mais quand j'utilise les "" la tout est ok.

Tout est ok pas vraiment parce que une fois mon image uploader sur mon serveur, mes ennuyeux commencent, car je peut rien faire avec l'image et en plus de ca il ne se trouve pas dans le bon répertoire.

Le lien que vous m'avez donné, c'est exactement le même script que j'utilise, avec des vérifications supplémentaires et renommage différent "md5(uniquid())".

C'est pourquoi aujourd'hui, je suis dans le flou total et que je ne voit pas du tout d'où provient le problème. Car toute les solutions que j'ai pu trouver et que vous m'avez donné, ne fonctionne pas et me ramène toujours au même point.

buddy
15/10/2015, 21h46
as-tu essayé
../images/

Jikoo
15/10/2015, 17h00
Vous utilisez "\"
Donc votre serveur est sous Windows ?

Sur cette partie du forum, nous parlons de serveur sous Linux. Donc les chemins doivent utiliser "/".

Voici un script qui marche très bien... et qui est un bon point de départ:
http://www.phpfacile.com/creer_un_si...fichier_1.php5

Essayez le pour voir s'il fonctionne sur votre serveur.

Je ne sais plus trop quoi vous dire.
Bonne chance

jerem480
15/10/2015, 05h51
Oui, mon script est bien écrit en php. Mon soucis ne vient pas du chemin car quelque soit le chemin que je lui donne il me retourne toujours même chose.
C'est à dire, cette arborescence:
www
dossier1
dossier2
mesImagesImporter1
mesImagesImporter2
mesImagesImporter3
sous-dossier1
sous-dossier2
script1
monScriptUpload
dossierImageImporter

A titre de précision, les test de chemin qu j'ai déjà essayé:
-"\www"
-"\www\dossierImageImporter"
-"\www\dossierImageImporter\sousDossierImageImporte r"
-"..\..\dossierImageImporter"
-"..\..\dossierImageImporter\sousDossierImageImport er"

L'utilisation des "" est volontaire car avec "/" mon script ne fonctionne pas.
Aussi, dans mon script php j'utilise la fonction "move_upload_file" pour pouvoir uploader mon fichier.

Jikoo
14/10/2015, 21h17
Hello,

Pour le souci de répertoire, c'est une erreur dans votre script. Il faut bien définir le bon chemin. Si c'est écrit en PHP, il faut remonter dans l'arborescence avec par exemple: ../../ (chemin relatif)

Concernant le FTP, assurez vous que votre client FTP permet:
- d'afficher les fichiers cachés
- d'utiliser le mode passif
-de gérer automatiquement le type de transfert (binaire ou pas).
Bref, j'utilise FileZilla et FireFTP. Tout fonctionne convenablement avec eux.

jerem480
14/10/2015, 07h40
bonjour,
J'utilise une script php pour uploader des image sur mon serveur. L'envoie se passe sans aucun soucis mais il ne s'enregistre pas dans le bon répertoire:
-repertoire voulu: /www/images/
-repertoire dans lequel ils est enregistrer: /www/backoffice/
A savoir que mon script se trouve dans un sous-repertoire de /backoffice/

deuxième soucis, je n'arrive pas afficher les images sur mon site.

Enfin, aucune action n'est possible depuis mon serveur en ftp, suppression, affichage, deplacement. Et j'ai ce message d'erreur qui s'affiche:
affichage : "Can't open 0fcf739acb802d690a11e2690351e864.png: No such file or directory"
suppression : "/www/backoffice/0fcf739acb802d690a11e2690351e864.png: No such file or directory"
deplacement : "Sorry, but that file doesn't exist"