_VIEWSTATE - PHP - Programmation
Marsh Posté le 09-05-2005 à 17:52:56
Et si tu nous donnais un morceau de ton script ? Ca nous aiderait à t'aider...
EDIT : As-tu bien envoyé ton cookies avec ton userid ?
Tu peux également aller directement sur htp://ww.wegolo.be, récupérer ton viewstate et ensuite emplir le formulaire avec cURL par exemple.
Sinon éspères pas générer ton viestate avec php car à la base c'est le moteur asp qui le génère et je pense pas que l'on va te filer l'algo...
Marsh Posté le 10-05-2005 à 00:36:31
Bien sur, voici plus de détail
En fait, jutilise pour effectuer mes POST (ou GET), une classe proposé par Tiago Serafim dans http://www.phpclasses.org/
http://www.phpclasses.org/browse/package/1119.html
Voici la partie de mon code
<?php
require('cHTTP.php');
//////////////////////////////// LANCEMENT DE LA REQUETE DE DISPO ////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$site="be";// choix du site
$FrLang="flag=3"; //choix de la langue
$http = new cHTTP();
$http->clearFields();
$url = "http://www.wegolo.$site";
$http->postPage($url);
$Response = $http->getContent();
$PosParam1=strpos($Response,"(" );
$PosParam2=strpos($Response," )" );
$Parametre1=substr($Response,$PosParam1+1,($PosParam2-$PosParam1)-1);// Parametre ID a passer dans chaque url
$http = new cHTTP();
$http->clearFields();
$url = "http://www.wegolo.$site/($Parametre1)/Step0.aspx?$FrLang";
$http->postPage($url);
$Response = $http->getContent();
$PosParam1=strpos($Response,"VIEWSTATE\" value=\"" );
$PosParam2=strpos($Response,"\" />" );
$ViewState=substr($Response,$PosParam1+18,($PosParam2-$PosParam1)-18);//
$http->addField("__VIEWSTATE",$ViewState);
$http->addField("usrLang","3" );
$http->addField("txDestination","A/CIT/10413/166" ); //BARCELONA
$http->addField("txDeparture","A/CIT/10413/10" ); //BRUXELS
$http->addField("cbDeparture","A/CIT/10413/10" ); //BRUXELS
$http->addField("cb_destination","A/CIT/10413/166" );//BARCELONA
$http->addField("cb_day","15" );
$http->addField("cb_month_year","05.2005" );
$http->addField("cb_day_return","25" );
$http->addField("cb_month_year_return","05.2005" );
$http->addField("cb_person","1" );
$http->addField("cb_child","0" );
$http->addField("cb_baby","0" );
$http->addField("pbSearch.x","30" );
$http->addField("pbSearch.y","15" );
$url = "http://www.wegolo.$site/($Parametre1)/Step0.aspx?$FrLang";
$http->postPage($url);
$Response = $http->getContent(); /// Response doit contenir la page d'attente
$PosParam1=strpos($Response,"VIEWSTATE\" value=\"" );
$PosParam2=strpos($Response,"\" />" );
$ViewState=substr($Response,$PosParam1+18,($PosParam2-$PosParam1)-18);// Je récupere le WiewState de la page d'attente
$PosParam1=strpos($Response,"action=\"" );
$PosParam2=strpos($Response,"id=\"Step0_1\"" );
$Parametre3= substr($Response,$PosParam1+8,($PosParam2-$PosParam1)-8);
$http->addField("__VIEWSTATE",$ViewState);
$url = "http://www.wegolo.$site/($Parametre1)/$Parametre3"; //<==> équivaut au JS reload ??
$http->getPage($url);
$Response = $http->getContent();
echo $Response; // Doit contenir la page de tarifs
?>
Le problème cest que dans la page dattente, je ne récupère pas le bon viewstate en retour
.
Marsh Posté le 09-05-2005 à 17:45:38
Bonjour,
Mon souci du jour est le suivant :
Jessai douvrir la page dun site en ASP, http://www.wegolo.be
Le problème est que ce site utilise un _VIEWSTATE.
Hors, lorsque je poste le formulaire que jai reproduit en en php, dans la page de réponse, je ne récupère pas la bonne valeur de _VIEWSTATE, jai une valeur différente de celle que je devrais avoir et en plus elle semble troqué car elle se termine par un /X.
Quelquun-t-il eut le problème ?
Y a t-il un moyen de généré directement depuis mon code php ce VIEWSTATE ?
Merci pour vos points de vu nombreux qui sûrement pourront maider.