Envoyé par : candreolli
Date : 16/03/2006 04:38
Voila j'ai un petit probleme. J'ai besoin de récupérer des données sur un site. J'utilise Greasmonkey pour cela. Le truc c'est que je veux envoyer mes données a une page php sur mon serveur.
Je comprends pas ce qui ne amrche pas.
Je poste ici mon code en esperant que quelqu'un me dira ce qui ne va pas.
voila le javascript present dans le userscript
GM_xmlhttpRequest({ method: 'GET', url: 'http://monsite.club.fr/update.php', headers: { 'User-agent': 'EX strategic database integrator', 'Content-Type': 'application/x-www-form-urlencoded', }, data: reper=document.body.innerHTML, })
Voila ma page php
<?php mysql_connect("localhost", "root", ""); mysql_select_db("test"); $text=$_POST['reper']; mysql_query("INSERT INTO ref (ID, txt) VALUES ('', '$text')"); mysql_close(); ?>
Merci d'avance
Envoyé par : Piou2fois
Date : 16/03/2006 07:57
Hello
Ta méthode d'envoi est en "GET" et tu fais un $_POST pour récupérer la valeur, ça ne peut pas fonctionner.
Remplacer $_POST par $_GET et ça devrait rouler.
Par contre, c'est quoi l'intérêt de préciser une valeur vide pour ID ? Il suffit de mettre cette requète là :
INSERT INTO ref(txt) VALUES ('$text')
Envoyé par : laurentj
Date : 16/03/2006 10:50
trou de sécurité. attention au sql injection.
$text = mysql_escape_string($_POST['reper']);
Envoyé par : Piou2fois
Date : 16/03/2006 11:00
Tiens oui je connaissais pas, je vais mettre ça dans mes scripts php.
En passant, après quelques recherches j'ai lu ça :
Cette fonction devient dépréciée, ne l'utilisez pas. À la place, utilisez la fonction mysql_real_escape_string()
Que faut-il faire alors ?
Envoyé par : candreolli
Date : 16/03/2006 11:13
oula ^^ Alors la je connais pas du tout ^^
D'ailleur j'ai toujours un probleme, cette fois, un champ est créé dans ma base de donnée mais il est mlaheureusement vide. Ce qui fait que les données sont effectivement envoyées mais de cette facon text=''
Personne aurai une idée pour qu'a la plave il écrive le code dans ma table ?
Le java script
mysql_connect("localhost", "root", "");
mysql_select_db("test"); $text=$_POST['text']; mysql_query("INSERT INTO ref (text) VALUES ('$text')"); mysql_close();
le javascript
GM_xmlhttpRequest({
method: 'POST', url: 'http://monsite.club.fr/update.php', headers: { 'User-agent': 'EX strategic database integrator', 'Content-Type': 'application/x-www-form-urlencoded', }, data: text=document.body.innerHTML, })
Envoyé par : Piou2fois
Date : 16/03/2006 11:24
Avant de tout envoyer à ton script php, vérifie déjà que tu récupères bien du code avec document.body.innerHTML (balance cette valeur dans un simple champ texte de ton appli)
Ensuite essaie de transmettre un texte test comme ceci:
data: text='pouet'
et vérifie que dans ta base tu récupères bien 'pouet'
Envoyé par : candreolli
Date : 16/03/2006 11:52
J'essaye de faire un alert(text), ca marche il me sort le code mais rien sur la base de donnée (enfin si, il créé un champ vide.
Ensuite j'ai essayer avec
method: 'POST',
url: 'http://monsite.club.fr/update.php', headers: { 'User-agent': 'EX strategic database integrator', 'Content-Type': 'application/x-www-form-urlencoded', }, data: 'toto', })
Et la pareil, un champ est créé dans la base de donnée, mais vide.
Envoyé par : Piou2fois
Date : 16/03/2006 11:54
Selon la logique du code précédent, j'aurai mis
data: text='toto',
Mais je n'ai jamais utilisé cela auparavant
Envoyé par : Piou2fois
Date : 16/03/2006 11:56
et pour être encore plus logique je mettrai :
data: 'text=toto',
et donc data: 'text=' + document.body.innerHTML,
Envoyé par : candreolli
Date : 16/03/2006 12:12
Ca marche effectivement pour 'text=toto' (on se rapproche du but ^^ Je le recupere bien sur la base de donnée, mais pour
'text=' + document.body.innerHTM, je recupere un champ vide.
Envoyé par : Piou2fois
Date : 16/03/2006 12:46
'text=' + document.body.innerHTML
ca ira mieux comme ça :)
Envoyé par : laurentj
Date : 16/03/2006 12:55
arretez les gars avec innerHTML : c'est crade et pas conforme..
Envoyé par : candreolli
Date : 16/03/2006 12:56
bah c'est ce que j'avais essayé avant et malheureusement toujours rien. C'est étrange tout de même. si je met juste
'text=toto',
Ca marche super
si je lui demande le code de la page
'text=' + document.body.innerHTML,
ca marche pas :'
Envoyé par : Piou2fois
Date : 16/03/2006 13:18
Laurentj -> tu préconises quoi pour palier à la saleté et la non conformité ? :)
Envoyé par : candreolli
Date : 16/03/2006 13:48
tu n'as pas d'autres idée pour l'envoit sinon ^^
Je sens que ce n'est vraiment pa loins mais....
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.