[php] fsockopen
Fermé
lefou4
Messages postés
73
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
5 mai 2010
-
28 févr. 2007 à 10:04
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 - 1 mars 2007 à 13:44
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 - 1 mars 2007 à 13:44
Bonjour.
J'ai testé l'envoi de variables POST sans formulaire via la fonction PHP fsockopen. Apparemment aucune erreur particulière. Le problème est que je demeure sur la page lançant le script d'envoi alors que je souhaiterais ouvrir une autre page pour la visualisation des données passées en POST.
J'espère avoir été suffisamment clair dans la description de mon problème et merci d'avance pour votre aide.
J'ai testé l'envoi de variables POST sans formulaire via la fonction PHP fsockopen. Apparemment aucune erreur particulière. Le problème est que je demeure sur la page lançant le script d'envoi alors que je souhaiterais ouvrir une autre page pour la visualisation des données passées en POST.
J'espère avoir été suffisamment clair dans la description de mon problème et merci d'avance pour votre aide.
A voir également:
- [php] fsockopen
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Retour a la ligne avec Echo comment faire ? - Forum Webmastering
- Php?id=1 - Forum PHP
7 réponses
jlfond
Messages postés
230
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
19 juin 2020
28
28 févr. 2007 à 11:15
28 févr. 2007 à 11:15
Bonjour,
je crois comprendre q'une fois que tu as fait le put des données http tu veux faire le get de la réponse.
C'est çà ?
Si c'est ça il faudrait donner le code du 'post' pour voir ce que tu as mis dans la réquête et si tout est OK ..
je crois comprendre q'une fois que tu as fait le put des données http tu veux faire le get de la réponse.
C'est çà ?
Si c'est ça il faudrait donner le code du 'post' pour voir ce que tu as mis dans la réquête et si tout est OK ..
jlfond
Messages postés
230
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
19 juin 2020
28
28 févr. 2007 à 14:37
28 févr. 2007 à 14:37
OK, j'avais fait à peu près les mêmes essais que toi et il me manquait la fermeture de la connexion qui est à l'initiative du client. (Il y a déjà un moment que j'ai fait ca et je me souviens pas précisément)
Je pense qu'il manque cette en-tête dans ta séquence.
$POST .= "Connection: close\r\n";
Ma séquence qui marchait était celle là
// Entete du POST
$POST = "POST /$the_path HTTP/1.1\r\n";
$POST .= "Host: $the_host\r\n";
$POST .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.5.1.0)\r\n";
$POST .= "Accept: */*\r\n";
$POST .= "Connection: close\r\n";
$POST .= "Content-Type: application/x-www-form-urlencoded\r\n";
$POST .= "Content-Length: ".strlen($arg)."\r\n\r\n";
$POST .= "$arg\r\n";
Au cas ou cherches chez 'nexen' il y a des scripts chez eux.
Il me semble aussi que tu fais une requête en http1.0 et faut faire du http1.1 maintenant.
Je pense qu'il manque cette en-tête dans ta séquence.
$POST .= "Connection: close\r\n";
Ma séquence qui marchait était celle là
// Entete du POST
$POST = "POST /$the_path HTTP/1.1\r\n";
$POST .= "Host: $the_host\r\n";
$POST .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.5.1.0)\r\n";
$POST .= "Accept: */*\r\n";
$POST .= "Connection: close\r\n";
$POST .= "Content-Type: application/x-www-form-urlencoded\r\n";
$POST .= "Content-Length: ".strlen($arg)."\r\n\r\n";
$POST .= "$arg\r\n";
Au cas ou cherches chez 'nexen' il y a des scripts chez eux.
Il me semble aussi que tu fais une requête en http1.0 et faut faire du http1.1 maintenant.
lefou4
Messages postés
73
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
5 mai 2010
44
28 févr. 2007 à 15:11
28 févr. 2007 à 15:11
Bon voici le code avec modifications suite aux remarques de jlfond :
Je ne suis toujours pas redirigé vers ma page ma-page-pour-affichage.php.
Quelqu'un aurait-il la solution ou cette redirection serait-elle impossible ???
$data = "data1=blablabla1&data2=blablabla2"; $message = "POST /ma-page-pour-affichage.php HTTP/1.1\r\n"; $message .= "Accept: */*\r\n"; $message .= "Connection: close\r\n"; $message .= "Content-type: application/x-www-form-urlencoded\r\n"; $message .= "Content-length: ".strlen( $data )."\r\n"; $message .= $data."\r\n"; $fd = fsockopen( "mon_serveur", 80 ); fputs($fd,$message); fclose($fd);
Je ne suis toujours pas redirigé vers ma page ma-page-pour-affichage.php.
Quelqu'un aurait-il la solution ou cette redirection serait-elle impossible ???
jlfond
Messages postés
230
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
19 juin 2020
28
28 févr. 2007 à 15:24
28 févr. 2007 à 15:24
J'espère que j'ai compris ce que tu veux faire et que je te fais pas faire n'importe quoi.
Avec ce code tu fais une requête vers le serveur et tu lui envoie des argument en 'POST'.
Normalement te devrais maintenant lire la réponse avec un fgets
ca donne un truc de ce style
fputs($socket, $POST);
$buf="";
while (!feof($socket)) {
$buf = fgets($socket, 102400);
}
fclose($socket);
return $buf;
C'est bien ca que tu veux faire ??
Parce que te vois parler de redirection et je suis plus sûr du coup.
Avec ce code tu fais une requête vers le serveur et tu lui envoie des argument en 'POST'.
Normalement te devrais maintenant lire la réponse avec un fgets
ca donne un truc de ce style
fputs($socket, $POST);
$buf="";
while (!feof($socket)) {
$buf = fgets($socket, 102400);
}
fclose($socket);
return $buf;
C'est bien ca que tu veux faire ??
Parce que te vois parler de redirection et je suis plus sûr du coup.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 févr. 2007 à 17:59
28 févr. 2007 à 17:59
Non en fait ce que tu décrit là jlfond c'est ce que font les objets XHR javascript en gros.
Ce qui est demandé c'est plutot de faire appel à une page en lui passant des paramètres en POST et non en GET. (Et donc non de récupérer les résultats de la page appellée).
Perso je ne me suis jamais posé la question donc je ne sais pas.
Ce qui est demandé c'est plutot de faire appel à une page en lui passant des paramètres en POST et non en GET. (Et donc non de récupérer les résultats de la page appellée).
Perso je ne me suis jamais posé la question donc je ne sais pas.
lefou4
Messages postés
73
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
5 mai 2010
44
1 mars 2007 à 12:01
1 mars 2007 à 12:01
Je veux en effet récupérer les résultats mais pas sur la page appelant le script. Je désire les récupérer sur une autre page.
En schématisant, d'une page j'envoie mes données POST au serveur et au retour c'est une autre page qui m'affiche les données.
En schématisant, d'une page j'envoie mes données POST au serveur et au retour c'est une autre page qui m'affiche les données.
jlfond
Messages postés
230
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
19 juin 2020
28
1 mars 2007 à 13:44
1 mars 2007 à 13:44
Le fgets dont j'ai parlé c'est la lecture sur la socket c'est tout. Après avoir envoyé la requête en POST.
Je pensais que tu voulais relire la réponse du serveur sur la socket.
Je ne vois pas ce que l'on peut faire d'autre.
Je pensais que tu voulais relire la réponse du serveur sur la socket.
Je ne vois pas ce que l'on peut faire d'autre.
28 févr. 2007 à 14:14
Pour l'instant je ne fais que des tests, voici un script "bateau" :
Ce script se trouve dans un fichier nommé par exemple fsockopen.php. Je souhaite qu'à son exécution la page ma-page-pour-affichage.php s'affiche à la place de la page ayant fait appel à fsockopen.php et que les données data1 et data2 s'affiche sur cette page (via un simple echo).
En fait je souhaite que tout se passe un peu comme si j'avais un formulaire sur ma page appelant fsockopen.php et, qu'en le soumettant, les données soient affichées sur ma page ma-page-pour-affichage.php comme pour un <form action='ma-page-pour-affichage.php' method='post'>.
Mais tout cela sans formulaire !!!
Bref pour l'instant c'est ma page appelant le script qui reste affichée.