Het doel is om met mijn php class in een keer bij mijn rooster te komen, momenteel gaat dit als volgt:
-Je komt op de eerste pagina: default.aspx hier voer je de eerste 4 letter van je achternaam in en drukt op zoek
-Je komt op de tweede pagina: LogInWebForm.aspx hier kies je uit de lijst je naam en klikt op 'rooster'
-Je komt op de derde pagina: hier zie je je rooster
Het lastige is, dat je niet simpelweg een formuliertje kan doen en direct naar de roosterpagina, maar dat je je door de pagina's heen moet loodsen, en elke keer de _VIEWSTATE variable moet ophalen (waarbij de eerste "static" is).
Hieronder mij class, die in theorie zou moeten werkenin theorie zou moeten werken.
<?php
include "Snoopy.class.php";
$snoopy = new Snoopy;
$submit_url = "http://walterbosch.cupweb6.nl";
$submit_vars["_nameTextBox"] = "jac";
$submit_vars["_zoekButton"] = "Zoek";
$submit_vars["numberOfLettersField"] = "3";
$submit_vars["__VIEWSTATE"] = "/wEPDwULLTE3NDM5MzMwMzRkZA==";
$snoopy->submit($submit_url,$submit_vars);
while(list($key,$val) = each($snoopy->headers)){
if(stripos($val, "SessionId")!==false)
{
$v = explode("ASP.NET_SessionId=",$val);
$w = explode(";",$v[1]);
$sessionId = $w[0];
}
}
$url = "http://walterbosch.cupweb6.nl/LogInWebForm.aspx";
$x = explode("__VIEWSTATE\" value=\"", $snoopy->results);
$y = explode("\"", $x[1]);
$viewstate = $y[0];
$name = "Berg van den Nick (3H1)[150033]";
$vars["__VIEWSTATE"] = $viewstate;
$vars["_nameDropDownList"] =$name;
$vars["_pincodeTextBox"] = "";
$vars["_roosterbutton"] = "Rooster";
$snoopy->cookies["ASP.NET_SessionId"] = $sessionId;
$snoopy->submit($url,$vars);
print $snoopy->results;
?>
Echter, krijg ik bij het uitvoeren hiervan de volgende print terug:
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
Waaruit blijkt dat zij een bepaalde instelling hebben gezet "to verify that arguments to postback or callback events originate from the server that originally rendered them".
Ik denk als volgt, als je het met je browser kan doen, moet het met PHP ook mogelijk zijn. Is er een mogelijkheid om mijn script hierop aan te passen, of is het wellicht beter om een geheel andere weg in te slaan?