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:
Dans proc.php, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="../proc.php" target="_blank">Lien</td>
Dans prod.php, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]; }
Le problème que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Partager