[PHP] recupérer le contenu d'une page dans une session

recupérer le contenu d'une page dans une session [PHP] - PHP - Programmation

Marsh Posté le 05-03-2005 à 12:18:23    

Bonjour,
je cherche à récupérer le contenu d'une page, qui n'est accessible qu'apres avoir ouvert préalablement une session.
 
voila comment ca marche
1) page d'identification, si identification ok ouverture d'une session  
2) page A = page sur laquelle je suis redirigé après avoir ouvert ma session
3) page B = page sur laquelle se trouve les infos qui m'interessent, ne peut pas être accédée directement (si on a pas ouvert une session)
 
je pense qu'il faut que j'utilise les sockets pour faire communiquer mon script php avec le serv distant mais à part ça je vois pas trop par ou commencer... analyser ce qui passe entre le client et le serveur avec ethereal et essayer de reproduire la communication avec php ??
 
si vous avez des idées ou des tutaux là dessus ça m'interesse
Merci

Reply

Marsh Posté le 05-03-2005 à 12:18:23   

Reply

Marsh Posté le 05-03-2005 à 13:52:33    

En effet je pense que la meilleure solution serais l'utilisation d'un socket afin "d'imiter" un browser.
 
Donc tu fais un fsockopen sur l'adresse du server et sur le port 80.
Ensuite sur le handle ainsi obtenu tu ecris dedans pour envoyer des requetes, puis tu lis pour savoir ce qui reviens.
 
Il faut que tu te doccumente sur le protocole http ou si tu es plus feignasse, alors analyse les headers envoyes par le navigateur.
 
Je ne sais pas si Ethereal te sera utile. En effet ce dernier examine les packets. Mais dans ton cas tu n'as pas besoin de descendre aussi "bas".  
Le protocole http n'est pas complique, il te suffit juste de savoir qu'elle string envoyer au serveur pour obtenir la page que tu veux.

Reply

Marsh Posté le 05-03-2005 à 13:58:00    

tu peux egalement utiliser curl...
www.php.net/curl


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 05-03-2005 à 14:45:12    

ok je vais voir tout ça merci

Reply

Marsh Posté le 07-03-2005 à 14:43:04    

j'arrive à avoir la page d'identification, mais lorsque je cherche a envoyer les données de mon form avec post j'obtiens une belle erreur 500 ...
voici mon script, est ce qu'il vous parait ok ?


<?php
$fp = fsockopen("aru", 9090, $errno, $errstr);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET /ARU/index.jsp?application=ARU HTTP/1.1\r\n";
   $out .= "Host: aru\r\n";
   $out.="\r\n";
   
   //envoie des données du form
   $out.="POST /ARU/portals/std/login/exec-login.jsp?login=monlogin&password=monpassword&application=ARU \r\n";
   $out .= "Host: aru\r\n";
   $out.="\r\n";
   
   $out .= "Connection: Close\r\n\r\n";
 
   fwrite($fp, $out);
   while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
}
?>  


a l'execution j'obtiens :
HTTP/1.1 200 OK Content-Type: text/html;charset=ISO-8859-1 Set-Cookie: JSESSIONID=DA998EE9D49E86DECCD9DB79DE31FC45; Path=/ Set-Cookie: language=fr; Expires=Thu, 01-Feb-2063 21:11:28 GMT; Path=/ Transfer-Encoding: chunked Date: Mon, 07 Mar 2005 13:34:56 GMT Server: Apache Coyote/1.0 1d6a  
 
 
 
puis  
0  
HTTP Status 500 -  
 
--------------------------------------------------------------------------------
 
type Exception report
 
message  
 
description The server encountered an internal error () that prevented it from fulfilling this request.
 
 
 
Merci encore


Message édité par kayasax le 07-03-2005 à 14:51:51
Reply

Marsh Posté le 07-03-2005 à 15:47:56    

J'ai quand meme utiliser ethereal pour voir ce qui passait et recoder ma requete de cette façon :
 


   $out="POST /ARU/portals/std/login/exec-login.jsp HTTP/1.1 \r\n";
   
   $out.="Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n";
$out.="Referer: http://aru:9090/ARU/index.jsp?application=ARU\r\n";
$out.="Accept-Language: fr\r\n";
$out.="Content-Type: application/x-www-form-urlencoded\r\n";
$out.="Accept-Encoding: gzip, deflate\r\n";
$out.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)\r\n";
$out.="Host: aru:9090\r\n";
$out.="Content-Length: 44\r\n";
$out.="Connection: Keep-Alive\r\n";
$out.="Cache-Control: no-cache\r\n";
$out.="Cookie: language=fr; navigation=rubrics; application=ARU;\r\n"; $out.="JSESSIONID=9270FB3C6B26316E5F963625D2F3D091\r\n";
$out.="\r\n";
$out.="login=monlogin&password=monpassword&application=ARU";
$out .= "Connection: Close\r\n\r\n";


 
mais c'est encore pire j'obtiens : HTTP/1.1 505 Version HTTP Non Supportée  : ???
 

Reply

Marsh Posté le 14-03-2005 à 14:15:32    

bon y a pas foule....
la création de la requête vous parait elle correcte au moins ? (n'y a t'il pas de taille limite ou autre à respecter ?)  
Merci

Reply

Marsh Posté le 14-03-2005 à 15:38:43    

j'ai peut-être pas compris, mais un simple test à la suite de l'identification et un header(location..) pour la redirection, ça le ferait pas? Et pour la apge accessible seulement si identification ok, ben en début de page, on teste si la session existe...

Reply

Marsh Posté le 14-03-2005 à 15:52:42    

rufo a écrit :

j'ai peut-être pas compris


je crois aussi  ;)  
 
sinon pour kayasax : j'y connais pas grand chose en protocole http mais t'as testé avec HTTP/1.0 ?

Reply

Marsh Posté le 14-03-2005 à 16:44:19    

sinon ca marche bien avec wget, en triturant les options

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed