Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/02/2007, 15h32   #1
Invité de passage
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 10
Points : 3
Points : 3
Par défaut Redirection php avec données POST et fsockopen

Bonjour,

Voilà j'ai un fichier prod.php qui doit rediriger vers un autre serveur totalement indépendant du notre.
Cette redirection doit sortir de nos frames (je sais, pas top, mais ca a été fait comme ca, et je reprends le code).
Elle doit amener des données vers l'autre serveur. Nous ne voulons pas que cela se voit dans l'URL, nous avons décidés donc d'opter pour des données POST.

J'utilise la fonction fsockopen de PHP.

Petite explication :
- menu.php : frame de gauche, comporte les liens amenants aux fichiers qui traitent les données.
- proc.php : est le fichier pointé par un des liens. C'est lui qui créée mon objet et qui appelle les méthodes de mon objet.
- prod.php : c'est ma classe avec le constructeur, et ses méthodes.


Dans menu.php, j'ai mon lien:
Code :
<a href="../proc.php" target="_blank">Lien</td>
Dans proc.php, j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$monObjet=new monObjet();
$result = $monObjet->renvoi();
if (isset($result["errno"])) 
{
	$errno = $result["errno"];
	$errstr = $result["errstr"];
	echo "<B>Error $errno</B> $errstr";
	exit;
} 
else 
{
	for($i=0;$i< count($result); $i++) 
		echo $result[$i];
}
Dans prod.php, j'ai :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
function renvoi()
{
    $_POST['1']='10';
	$_POST['2']='M';
 
	//Initialisations
	$req="";
	$poststring="";
 
	foreach ($_POST as $key => $value) 
	{
		$poststring .= urlencode($key) . "=" . urlencode($value);
	}
 
	$req.=$poststring ;
	$url="/ChezEux/servletEntree";
 
	$host="partenaire.com";
 
	$reqheader = "POST $url HTTP/1.1\r\n"
			."Host: $host\n"
			."User-Agent: PostIt\r\n" 
			."Content-Type: application/x-www-form-urlencoded\r\n"
			."Content-Length: ".strlen($req)."\r\n\r\n"
			."$req\r\n";
 
	$socket=fsockopen($host,80, $errno, $errstr);
 
	//si retourne faux, il y a une erreur
	if ($socket===false) 
	{
		$result["errno"] = $errno;
		$result["errstr"] = $errstr;
		return $result;
	}
 
	//Ecrit dans le fichier $socket la valeur de $reqheader
	fputs($socket, $reqheader); 
 
	//Tant qu'on est pas à la fin du fichier, on intègre les données dans un tableau
	while (!feof($socket)) 
	{
		//On récupère la ligne courante
		$result[] = fgets($socket, 4096);					
	}
 
	fclose($socket);
 
	return $result;
}
Le problème que j'ai :
J'arrive bien à sortir de mes frames mais dans mon URL, j'ai toujours l'adresse de chez nous et non l'adresse de notre partenaire.
du coup, j'ai une nouvelle fenêtre avec le formulaire de notre partenaire (donc ses données) mais avec notre adresse URL.

Je n'arrive pas à savoir ce qui pose problème.
J'espère avoir été assez claire.

Merci à toute personne qui se penchera sur mon problème.
Cylie34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 17h10   #2
Invité de passage
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 10
Points : 3
Points : 3
Eh bien, en fait, la socket ne peut être utilisée comme dans mon code pour une redirection.
Elle ne permet que de récupérer des données, c'est pour cela que je récupéré dans ma page.

Voilà pourquoi cela ne fonctionne pas.

Bonne fin de journée
Cylie34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h38.


 
 
 
 
Partenaires

Hébergement Web