begin process at 2010 03 15 07:10:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

http post et receive


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

http post et receive

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ée 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales