Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/03/2007, 18h42   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Par défaut [FTP] Addslashes et chaine de caractères

Bonjour,

Je voulais savoir d'où pourrait venir mon erreure. Il se trouve que quand je clique sur le bouton ajouter donnée sur mon site php j'ai une erreure de string dans mon addslashes et la donnée qui s'insère dans ma base est : Array.

Voici le message d'erreur sur la page :
Citation:
Notice: Array to string conversion
Et la ligne fausse est :
Code :
$Image=addslashes($Image);
L'image est au fait un lien sur mon FTP.
J'ai cherché sur google de l'aide et j'en ai trouvé, mais le problème c'est que plus je modifie cette partie, plus j'ai des erreurs, au fait je comprends pas trop le système.

Merci d'avance de l'aide et des informations que vous pourrez me donner.
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2007, 19h39   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
si tu fais un simple "echo" du $Image sa t'affiche quoi ?
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2007, 20h14   #3
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
à mon avis, un simple "echo" de $Image va afficher "Array"...

il faudrait que tu fasses un

et faire ton addslashes sur l'index que tu veux dans ce tableau...
__________________
Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 09h23   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Il y a deux problèmes :
  • Tu essaies d'utiliser un tableau comme si c'était une variable scalaire ;
  • Tu utilsies addslashes().
La solution au premier point t'est donnée plus haut, celle sur le deuxième est dans la FAQ PHP
Comment se protéger des failles d'injection ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h29   #5
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
hello,

Merci pour les réponses qui m'ont appris quelques détails

Mais je me disais, peut-être je peux contourner mon soucis différemment, car le but est juste de reprendre une donnée qui se met dans un "input" de type "file". Moi tout ce que je veux c'est prendre le chemin que je met dans le input et le mettre dans ma base.
Le seul soucis étant donné que c'est un type "file" j'utilise :
$image=$_FILES["identifiant_formulaire"]

Et c'est justement cette variable qui me pose un soucis, si je met $_POST au lieu de $_FILES il me dit qu'il trouve pas l'identifiant ( si l'input est un type "text" ca pose pas de soucis ), alors que quand je met FILES la il le trouve, mais me met les bug Array in string :I

Sinon ayant testé les différente méthode ce trouvant sur la page "Comment se protéger des failles d'injection ?" j'ai souvent des fatal error

Si aucune solution autre que les changements en string s'offre à moi je vous mettrais tous les messages d'erreur, mais le soucis c'est que il y'a tellement de messages différents que je ne sais le quel mettre en fonction de la commande que je met ahah.


Bonne journée et POUR LES NULS !!
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 11h41   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ok

Il ne faut pas utiliser une fonction mssql_* si tu utilises MySQL par exemple. Utilise la fonction qui correspond à ta base de données, il n'y a toujours qu'un seul choix.

Sinon pour $_FILES, j'ai écrit un tutoriel sur les formulaires (cf. ma signature), tu y trouveras quelques exemples. Attention il s'agit d'un cours, pas de code prémâché, l'objectif est que tu comprennes comment faire.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h42   #7
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Je désespère clairement.

Donc quand on veut mettre un bouton parcourir le seul choix est de mettre un "type = file" et donc par la même occasion obligé de chercher un fichier spécifique sur le disque dure
La je trifouille partout et je trouve pas le moyen de mettre un bouton parcourir avec le quel je puisse tout simplement prendre le lien qu'il me donnera une fois que j'aurais cliqué sur "ouvrir".

page1.php

Code :
1
2
<td>chemin de l'image</font></td>
<td><input name="chemin" type="file"</td>
page2.php
Code :
$Image=$_FILES['chemin'];
Vu que c'est un type=file je suis obligé de mettre $_FILES d'après ce que je constate.

Et la variable m'affiche juste le nom de fichier Pas moyen qu'elle m'affiche le chemin qui est dans l'input tout simplement ?
En lisant le tutoriel, je constate que c'est pratiquement pareil que mon code, pour upload une image ca va. Mais quand on veut juste prendre le chemin affiché bah la c'est une autre paire de manche. Aller j'retourne à mes recherches
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h34   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ah, je n'avais pas compris ce que tu cherches à faire. Là je l'ai compris mais je n'ai pas saisi pourquoi tu veux le faire...

Bref.
Ce n'est pas prévu par les formulaires car cela n'a pas grand intérêt. Tu es dans un cas très particulier si tu veux envoyer au site Web un chemin d'accès spécifique à ton ordinateur.
Pourquoi ne pas simplement mettre un <input type="text" /> et laisser l'utilisateur copier/coller à partir de l'explorateur ?

En effet, <input type="file" /> est le seul moyen d'obtenir facilement une boîte de sélection de fichier avec un navigateur Web. Peut-être JavaScript peut-il offrir une solution, mais j'en doute.

Une solution alternative est de placer un <input type="file" /> dans ta page et, en utilisant son évènement onchange, utiliser une méthode JavaScript pour copier la valeur dans un <input type="text" />...
C'est une solution impropre mais cela peut éviter à ton internaute de faire le copier/coller à la main (ce qui serait pourtant, je pense, la meilleure solution).


[Edit] Nous sommes bien loin du problème initial (addslashes())
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h51   #9
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Oui en effet nous sommes sorti un peu du contexte ^^

Mais le soucis est que j'ai besoin du input type=file, car il se trouve que je dois laisser a l'utilisateur le choix après ( grâce à des boutons radio ) soit d'upload l'image dans un dossier ( CA ca marche ) soit, et c'est la le problème, faire qu'il puisse upload juste le lien ou se situe l'image.

Le système de radio bouton me parrait bien, en tout cas mon petit code "if" fonctionne Par contre dès que je met le radio bouton sur "l'upload de lien", bah la vu que c'est un type=file bah ca pose quelques soucis dans la variable qui prend l'identifiant du formulaire

Je suis ouvert à toutes propositions donc ^^ même si je pense être vraiment proche du bute.

Si ca ne tenait qu'a moi, il y'aurait longtemps que j'aurais pas fais ce foutu bouton parcourir ^^
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 16h09   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ah, ok, tout d'un coup une solution correcte s'ouvre à toi ^^

Évènement onchange de chaque bouton radio : si le bouton est désactivé, alors fais une action. S'il est activé, fais l'autre action.

Actions :
Lire la valeur de l'input file dans une variable, supprimer (manipulation DOM) l'input file, créer un input text et lui donner la valeur de la variable.
ou
Lire la valeur de l'input text dans une variable, supprimer (manip DOM) l'input text, créer un input file et lu donner la valeur e la variable.

Qu'en dis-tu ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 16h48   #11
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Okay ! donc je dois jouer avec mes radio sur la première page afin de modifier le formulaire avant qu'il aille sur la page de traitement si j'ai compris. Moi ca me va comme idée, c'est plutôt logique en plus
Mais bon je dois aller lire des trucs sur les manipulations DOM et le onchange ( car connais rien ). J'espère pas que c'est trop complexe ^^ Car je dois aller vite.
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 16h56   #12
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
C'est 100% JavaScript
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 17h51   #13
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Ca m'embête un peu, car je dois absolument trouver une méthode 100% php moi
C'est vraiment bizarre que dès qu'on met un type=file ce soit si pourri à vouloir en quelque sorte faire juste un copié collé de ce qui s'affiche suite à la recherche du bouton parcourir ( le chemin ) :I
Bon j'ai déjà compris le principe du onchange qui est pas très compliqué, mais bon, je stagne un peu.
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 11h26   #14
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Une question me trotte dans la tête. Est-ce possible de faire une variable qui prenne juste le chemin du champ de l'input de type=file ???

page1.php
Code HTML :
1
2
3
4
5
6
7
<table><form enctype="multipart/form-data" name="nomform" method="post" action="page2.php">
 
	  <tr>
	  <td><font color="#FFFFFF"> Lien de la photo </font></td>
	  <td><input name="cheminImage" type="file" align="left"></td>
 
...


Et dans cette page2.php quand je met la variable
Code :
$image=$_FILES["cheminImage"]["name"];
Il m'affiche le nom du fichier, donc il doit bien avoir un moyen de prendre le chemin !!! JE VAIS MOURIR !! Y'a pas de logique, en type=text on prend le chemin dans l'input facilement en prenant l'identifiant, et dès que c'est un type=file voila qu'on peut plus ?
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 12h23   #15
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
En mettant type="file" tu veux envoyer un fichier. Envoyer le chemin local du fichier n'a aucun intérêt, au contraire c'est un problème de sécurité : le serveur n'a jamais besoin de savoir où se trouvent les fichiers sur l'ordinateur de l'internaute.
Si tu veux y parvenir, il faut mettre un champ type="text" et laisser le soin à l'internaute de copier/coller le chemin de son fichier. Peut-être y a-til une solution JS pour y arriver, mais PHP seul ne te le permettra jamais (puisqu'il est exécuté côté serveur).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 12h39   #16
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
okay

Je vais donc partir sur 2 champs différents, mais j'aurais une dernière question oui dsl dsl !!!
Est-il possible d'interdire l'accès au champ du "type=file" histoire que l'on puisse pas coller de lien dedans, mais forcer la recherche avec le bouton parcourir ?

Merci en tout cas d'avoir essayé de m'aider et surtout d'avoir essayé de comprendre mes soucis héhé
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 12h54   #17
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Dès que tu cherches à obtenir un fonctionnement non standard, tu t'exposes à des problèmes et à des arrachements de cheveux (j'en suis la première victime ). Pourquoi ne pas simplement faire fonctionner comme cela et penser ensuite aux éventuelles améliorations ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 13h26   #18
Candidat au titre de Membre du Club
 
Inscription : septembre 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 57
Points : 12
Points : 12
Ouais je pense je vais rester sur cela, mais !!! Maintenant que j'ai 2 champs je trouve que ca fait moyen moyen et je voudrais faire que 1 des 2 champs disparaisse en fonction du radio bouton que je clique ^^
On vient de me dire que c'est assez facile ( javascript encore ), faut juste savoir de quel côté chercher

Par contre je pense que je vais ouvrir un autre topic ailleurs si j'ai encore de la peine la dessus, car la on change souvent de sujet
chicho est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h36.


 
 
 
 
Partenaires

Hébergement Web