Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : http post et receive [ Archives / AU SECOURS !!! ] (DevelMan)

jeudi 3 juin 2004 à 18:33:22 | http post et receive

DevelMan

Bonjour,
Je dois ecrire un prog pour recevoir des donnees via http.
tout fonctionne bien, sauf si les donnees contiennent des caracteres du genre ' (ce qui represente l'apostrophe en code UTF8.

Le premier prog est un prog d'envoie qui utilise curl
Le second (qui 'merde' !!) est le programme de réception.

Si quelqu'un avait l'idée de génie qui me decoincerait !!!!

Merci d'avance
==========================================
<?php
// sender.php
//1) PROGRAM USE TO SEND DATA TO THE SERVER (CLIENT)
$fic=$argv[1];
$fp = fopen($fic,"r");
$data="";
$data=fread($fp,filesize($fic));
fclose($fp);
$postvars="AUTH_USER=username&AUTH_PASS=password&AUTH_XML=".$data;
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://myurl/receive");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
?>
==========================================

2) THE DATA (passed as argv[1] to sender.php)
<?xml version="1.0"?>
<ImportantRemarks>
<Line1>L'ASSURANCE DE TRANSPORT N'EST PAS A COUVRIR </Line1>
</ImportantRemarks>
==========================================

3) PROGRAM USE TO RECEIVE DATA
<?php
// index.php
// is username ok ?
if (!isset($HTTP_POST_VARS['AUTH_USER']))
{
$buffaux="*NOK* USER ABSENT <br>\n";
print $buffaux;
exit(1);
}
else
{
$zuser = $HTTP_POST_VARS['AUTH_USER'];
if ($zuser <> "userrname")
{
$buffaux="*NOK* USER INVALIDE ".$zuser."<br>\n";
print $buffaux;
exit(1);
}
}
// is password ok ?
if (!isset($HTTP_POST_VARS['AUTH_PASS']))
{
$buffaux="*NOK* PASSWORD ABSENT <br>\n";
print $buffaux;
exit(1);
}
else
{
$zpass = $HTTP_POST_VARS['AUTH_PASS'];
if ($zpass <> "password")
{
$buffaux="*NOK* PASSWORD INVALIDE ".$zpass."<br>\n";
print $buffaux;
exit(1);
}
}
// Controle si presence du fichier xml
if (!isset($HTTP_POST_VARS['AUTH_XML']))
{
$buffaux="*NOK* FICHIER ABSENT <br>\n";
print $buffaux;
exit(1);
}
else
{
$zfic = $HTTP_POST_VARS['AUTH_XML'];
$zfic = str_replace('\"', '"', $zfic);
}

$today=date("YmdHis");
$file = "xml.".$today.".tmp";

// All is ok, now we can parse the file
$fp = fopen($file, "w");
fputs($fp, $zfic);
fclose($fp);

// call the parser (when the data is received, the parser work fine)
// but if the data contain characters like ', the data is not received correctly
?>

jeudi 3 juin 2004 à 18:36:57 | Re : http post et receive

DevelMan


les caracteres dont je parle sont la sequence & # 3 9 ;
(tout collé sans les blancs)

samedi 5 juin 2004 à 14:30:22 | Re : http post et receive

perig

J'ai pas bien pigé, si tu envois:
"allée d'enfer"
Ça marche?
et avec
"allée d& # 3 9enfer" (tout collé sans les blancs)
Ça te donne quoi et tu veux quoi?

---Perig---
Pour vous servir
Et parfois en galère
Souvent même

samedi 5 juin 2004 à 14:38:57 | Re : http post et receive

DevelMan


mon pb est le suivant :

"allée d'enfer", çà marche
mais
"allée d& # 3 9;enfer" (tout collé sans les blancs)"
çà marche pas.

Le probleme c'est que ce n'est pas moi qui écrit le prog d'envoie, c'est un client et je dois faire comme il veut !! grrrr !
c'est vraie que & # 39; çà correspond à l'apostrophe en codage UTF8, mais je ne reçois pas (le & est interpreté comme un séparateur, le # est interpreté comme un indice de $_POST) bref .... je ne m'en sort pas !!!!


samedi 5 juin 2004 à 17:15:28 | Re : http post et receive

perig

J'ai trouvé une solution qui n'est sûrement pas la plus propre
avant d'envoyer ta data tu fais


$data=str_replace("@","@",$data);
$data=str_replace("$","$",$data);
/*On a passé tous les @ en équivalent UTF8 idem pour les $. Ces deux symboles sont alors libres*/

$data=str_replace("&","@",$data);
$data=str_replace("#","$",$data);
/*On remplace tout les & par des @ et tous les # par des $.*/

$postvars="AUTH_USER=username&AUTH_PASS=password&AUTH_XML=".$data;
//et tu continu le prog normalement.



A la réception on fait l'inverse pour récupérer le message d'origine


$data=$HTTP_POST_VARS['AUTH_XML'];
$data=str_replace("$","#",$data);
$data=str_replace("@","&",$data);
$data=str_replace("$","$",$data);
$data=str_replace("@","@",$data);
//et tu continu ton prog



J'ai cherché à le faire avec des fonctions php comme addslashes ou htmlentities ou encore
htmlspecialchars mais ca ne marche pas j'ai trouvé que ca c'est pas le top mais ca tourne
Reste à vérifier que ça ne pose pas d'autres problèmes par la suite


---Perig---
Pour vous servir
Et parfois en galère
Souvent même

samedi 5 juin 2004 à 17:30:34 | Re : http post et receive

perig

Rectification, c'est pas bon car l'utilisateur poura utiliser tous les codes du style & # X X
sauf & # 6 4 =code de @
et
& # 3 6=code de $
le prob est donc plus limité mais pas mieux!!!
---Perig---
Pour vous servir
Et parfois en galère
Souvent même

samedi 5 juin 2004 à 17:44:28 | Re : http post et receive

perig

sauf si ca te géne pas
de recevoir $
alors qu'il a envoyé & # 3 6
idem pour le @ et & # 6 4
---Perig---
Pour vous servir
Et parfois en galère
Souvent même

dimanche 6 juin 2004 à 00:03:59 | Re : http post et receive

DevelMan

Oui, çà aurait pu être une solution .. hélas, je n'ai pas la main sur le programme d'envoie .... donc je me retrouve devant le fait accompli ! .. et l'émetteur ne veut pas modifier son prog !

Quelle galère ! merci pour ton aide.

dimanche 6 juin 2004 à 10:37:43 | Re : http post et receive

perig

Je viens de trouver qu'avec les fonctions urlencode et urldecode tu pouvais résoudre ce prob en 2 lignes mais il faut avoir accès au prog d'envoie

je continu de chercher.

ps: j'ai bien une solution pour reconstituer la chaîne malgré les & mais les # foutent leurs merde

---Perig---
Pour vous servir
Et parfois en galère
Souvent même

dimanche 6 juin 2004 à 17:16:54 | Re : http post et receive

DevelMan


Super sympa de m'aider .. j'ai aussi essayé de reconstituer la chaine avec ce genre de truc :
while(list($indice,$valeur) = each($_POST))
{
print "VALEUR=".$valeur."\n";
if (substr($indice,0,1)=="#")
{
$v=$indice;
}
else
{
$v=$valeur;
}

Les # foutent la merde, car ils se retrouvent dans $indice.
Dons je voulais prendre dans $indice si le premier car était #, mais il me manque une partie de la chaine !

@++
et encore merci


1 2

Cette discussion est classé dans : data, http, post, print, buffaux


Répondre à ce message

Sujets en rapport avec ce message

données post data et http_referrer [ par crazykamel ] Bonjour !Comment faire pour valider un mini formulaire que j'appelle par un include sur toutes les pages (recommander un site) sans recharger les donn Utiliser la fonction http_post_data [ par rich25200 ] Bonjour,je cherche le moyen d'utiliser la fonction " http_post_data" de php et qui utlise une bibliotheque PECL..Est ce quelqu'un a une idée pour util Aide please ! [ par vinz78 ] Voila je souhaite envoyer les données d'un formulaire vers un fichier texte déja existant j'ai trouvé un code pour envoyer les champs de mon formulair j'aimerais un update d'une colonne mais pas de toutes mes lignes [ par kifouillou ] bonjour,j'ai un petit problème avec un update.En fait je voudrais juste mettre à jour une colonne dans ma base mais sa me met toutes mes lignes de ma insertion failed [ par vinz78 ] $nomlabo=$HTTP_POST_VARS['Nomlab'];$idlabo=$HTTP_POST_VARS['id_labo'];$nomcont=$HTTP_POST_VARS['nom_cont'];$telephonecont=$HTTP_POST_VARS['telephone'] Effectuer une inscription à une heure qui ne soit pas prise en PHP [ par morpheus22170 ] Bonjour à tous, le problème que j'ai aujourd'hui est une histoire d'inscription.une personne veut réserver à une heure et à une date, une salle.j'ai c Probleme de code Php dans ma page lors de visualisation [ par brute ] Bonjour,J'ai un probleme sur une page, le code php apparait en dur lors de la visualisation de la page.Le texte suivant apparait :Votre email doit com Mettre sur 3 colonnes [ par chris81 ] bonjour comment faire pour que le resultat de ma requete se mette sur 3 colonnes <? require ("config.php"); $db1 = mysql_connect("$host"," Probleme UPLOAD [ par prince4878 ] salut, quelqu'un peut me dire pourquoi ce CODE UPLOAD ne fonctione pas chez moi, en sachant que je l'ai testé sur une autre machine et ça a fonctionné Vider un tableau [ par bibo06 ] Bonjour, J'ai fais une commande express sur un site de vente en ligne.Pour cette partie du site, je me sert d'un tableau construit de la sorte pour ga


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.