Rechercher : dans
Par :

[PHP] Générer une requète POST

Dernière réponse le 12 jun 2008 à 11:11:53 smellems, le 21 aoû 2006 à 16:26:40 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un problème (c'est souvent un bonne raison pour poser une question), je veux recevoir une requète POST faire du traitement et envoyer un autre requète POST à une autre page.

ex.

page.html (boutton) envoi requète à chkqte.php

chkqte reçoi la requète fait du traitement, construit une nouvelle requète (qui pourrait être la même que la première) et l'envoi automatiquement à page.php

c'est parce que je n'ai pas le controle de la dernière page et que je veux vérifier que les donnée sont correct avant de les soumettre.

je ne trouve pas de façon simple de le faire en PHP

en PERL j'ai trouvé... mais j'hésite à me lancer dans le PERL que je connais que très peu...

merci de votre aide

Meilleures réponses pour « [PHP] Générer une requète POST » dans :
PHP - Génération d'images Voir Prérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...
Télécharger ATnotes VoirLes accros de post-it seront ravis de cette version électronique. ATnotes et un programme gratuit générant des post-it sur votre bureau. Il se place dans la barre de lancement du système ne nécessite que très peu de ressources. Avec ATnotes, vous ne...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
ASP - L'objet Request VoirPrésentation de l'objet Request Le rôle de l'objet Request est de permettre de récupérer la requête HTTP envoyée par le client au serveur, c'est-à-dire qu'il permet en réalité de manipuler l'ensemble des informations envoyées par le navigateur du...

1

Darshu, le 21 aoû 2006 à 16:36:17

Ben, avec ce que tu me dis la, je te dis que PHP le fait très bien ... La façon simple il n'y en a pas sans savoir quel traitement tu veux effectuer ! Quelles sont les données reçues, de quelle requête tu parles ...

T'as pensé à regarder sur Google avant de poser ta question ­? 

Répondre à Darshu

2

poof65, le 21 aoû 2006 à 16:40:30
  • +1

Non il n'y a pas de solution simple je pense.
La seule que je connais utilise fsockopen()
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!

Répondre à poof65

3

smellems, le 21 aoû 2006 à 16:57:55

Je commence à penser aussi qu'il n'y a pas de solution façile...

sur: http://www.php.net/manual/en/http.httprequest.php

il utiliese la classe httprequest et ça semble être ce que je veux, mais je ne suis pas certain. je n'ai pas trouver d'exemples complet...

merci de vous pencher sur mon problème

je vien de regarder fsockopen() et on dirait aussi que ça pourrait fonctionner..

je vais chercher encore

en perl c'est simple

POST 'http://www.perl.org/survey.cgi',
[ name => 'Gisle Aas',
email => 'gisle@aas.no',
gender => 'M',
born => '1964',
perc => '3%',
];

mais lire les données reçu, c'est moins simple...?

Répondre à smellems

4

smellems, le 21 aoû 2006 à 19:16:31
  • +6

Mise à jour...

après beaucoup de recherche j'ai trouvé cURL qui permet de faire une requète post... mais il y a un problème...

<?php
$post_data = "userid=";
$post_data .= $_POST['userid'];

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "http://ww7.aitsafe.com/cf/addmulti.cfm");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($curl);
curl_close($curl);

print($page);
?>

$page contient le résultat en HTML de la requète post

le problème c'est que je voudrais que cette page soit ouverte pour vrai et pas seulement avoir le code. parce que si j'affiche la $page les liens ne fonctionne pas parce que dans ce code la base n'est pas spécifiée.

est-ce que ce que je veux faire est possible?

Répondre à smellems

5

Darshu, le 22 aoû 2006 à 09:06:48

Si les liens sont en relatifs (dossier/page.php) et non pas en absolu (www.site.com/dossier/page.php) tu ne peux rien y faire ... Le seul moyen est de remplacer, dans $page, chaque occurence de <A HREF="xx"...> par <A HREF="www.site.com/xx"...>. Essaie avec preg_match_all() ça peut marcher, mais dans ce cas la si il y a des liens externes (relatifs ou absolus), ça ne marchera pas ...

T'as pensé à regarder sur Google avant de poser ta question ? 

Répondre à Darshu

6

smellems, le 22 aoû 2006 à 16:29:50

Merci Darshu,
mais j'ai trouvé mieux (ou au moins, plus facile...) j'ai rajouté ces ligne à mon code

$fin = stristr($page, "<title>");

print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n");
print("<HTML>\n<HEAD>\n");
print("<base href=\"http://ww7.aitsafe.com/cf/\"></base>");
print($fin);

et ça fonctionne très bien...

mais ce n'est pas ce que je voulais à la base.

je voulais juste une page de transition...

qui fait du traitement et ensuite un genre de...:

header("location: http://www.blablabla.com/x.cgi");

mais qui fait un post

en tous cas je vais le laisser comme ça pour l'instant, mais je trouve ça bizzare que ce n'est pas possible en php

je l'ai vu fait en asp, en perl et même en javascript...

mais je n'aime pas le javascript (parce qu'il peut être désactivé par l'usager)

Répondre à smellems

7

WITCZAK, le 16 nov 2006 à 12:35:01

T'as déjà vu une solution équivalente en ASP ???

Elle m'intéresse : peux-tu me la décrire ? Merci.

Répondre à WITCZAK

8

poke, le 18 jan 2007 à 14:53:49

Je vois deux solutions "simples" à ton problème:
Version je passe tout par le serveur:
<?php
// test des données passées dans ton formulaire
if(ko) {
// c'est pas bon!
header("location: http://www.monsite.fr/page.php");
}
// On ajoute des paramètres si nécessaire:
$_POST["data1"]=0;

// c'est bon! Il suffit d'inclure la page qui utilise le formulaire!
inclure("page2.php");
?>

Version "pourquoi faire simple quand on peut faire complique?":
<?php
// test des données passées dans ton formulaire
if(ko) {
// c'est pas bon!
header("location: http://www.monsite.fr/page.php");
}
// on crée une page avec le formulaire tel qu'il est attendu
// avec comme action onLoad="form.sumbmit()"
?>
<html>
<head>
</head>
<body onLoad="document.form.submit();">
<form ...
...
</form>
</body>

PS: j'ai rien pour tester, mais c'est toujours une piste...

Répondre à poke

9

poke, le 18 jan 2007 à 19:53:11

Apres quelques tests, ca semble marcher...
Petites précisions: la version 1 ne marche que si ce qui est fait en début de page (les tests) ne génèrent pas d'entête ou autre chose qui soit incompatible avec la page2.php...
la version 2 n'est pas exempte de ce problème mais est peut être plus souple...

Corrections sur la version 2:
onLoad="document.forms.monform.submit();"
Ajouter name="monform" dans le tag <FORM>

Petit problème: si une des entrées du formulaire est un passwd, avec la gestion des mots de passe, il demande deux fois s'il doit s'en souvenir...

Répondre à poke

10

 Dos, le 12 jun 2008 à 11:11:53

Comme ton formulaire va re directement soumis, il ne s'affichera logiquement même pas... Donc ça devrait pas poser de problème de passer ton champ password en text field...

Mais ce genre de methode ne me rassure pas des masses :)

Répondre à Dos