[PHP] Générer une requète POST
Fermé
smellems
Messages postés
135
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
4 mai 2012
-
21 août 2006 à 16:26
Dos - 12 juin 2008 à 11:11
Dos - 12 juin 2008 à 11:11
A voir également:
- Requete post php
- Easy php - Télécharger - Divers Web & Internet
- Post it windows - Télécharger - Agendas & Calendriers
- Brouillon post instagram - Guide
- Code post - Télécharger - Vie quotidienne
- Post instagram 3 photos - Guide
7 réponses
smellems
Messages postés
135
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
4 mai 2012
46
21 août 2006 à 19:16
21 août 2006 à 19:16
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?
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?
Utilisateur anonyme
21 août 2006 à 16:40
21 août 2006 à 16:40
Non il n'y a pas de solution simple je pense.
La seule que je connais utilise fsockopen()
La seule que je connais utilise fsockopen()
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: https://www.pagesjaunes.fr/");
}
// 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: https://www.pagesjaunes.fr/");
}
// 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...
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: https://www.pagesjaunes.fr/");
}
// 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: https://www.pagesjaunes.fr/");
}
// 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...
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...
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...
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
21 août 2006 à 16:36
21 août 2006 à 16:36
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 ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
smellems
Messages postés
135
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
4 mai 2012
46
21 août 2006 à 16:57
21 août 2006 à 16:57
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...?
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...?
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
22 août 2006 à 09:06
22 août 2006 à 09:06
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 ...
smellems
Messages postés
135
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
4 mai 2012
46
22 août 2006 à 16:29
22 août 2006 à 16:29
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)
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)