url = $url; $fv = file_get_contents (str_replace('&', '&', $url)); if (strpos ($fv, "")); } $this->content = $fv; } function GetCookies () { ob_start(); $ch = curl_init($this->url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); $ok = curl_exec($ch); curl_close($ch); $head = ob_get_contents(); ob_end_clean(); preg_match_all ("/Set-Cookie\:(.*?)\;/i", $head, $kukiji); for ($x = 0; $x <= sizeof ($kukiji[1]); $x++) { preg_match ("/\ (.*?)\=/i", $kukiji[1][$x], $ime); $this->cookies[sizeof($this->cookies)][0] = str_replace (" ", "", str_replace ("=", "", $ime[0])); $this->cookies[sizeof($this->cookies)-1][1] = str_replace ($ime[0], "", $kukiji[1][$x]); } } function GetTarget () { preg_match ("/\/i", $this->content, $forma); preg_match ("/method\=\"(.*?)\"/i", $forma[1], $method); $method = str_replace ('method="', '', $method[0]); $this->method = str_replace ('"', '', $method); preg_match ("/action\=\"(.*?)\"/i", $forma[1], $action); $action = str_replace ('action="', '', $action[0]); $this->action = str_replace ('"', '', $action); echo 'METHOD: '.$this->method.'
'; echo 'ACTION: '.$this->action.'
'; } function GetFields () { preg_match_all ("/\/i", $this->content, $this->inputs); echo "
KLican sem na getfields
"; // najprej parsajmo inpute for ($x = 0; $x <= sizeof ($this->inputs[1]); $x++) { unset ($value); unset ($type); unset ($name); preg_match ("/name\=\"(.*?)\"/i", $this->inputs[1][$x], $name); $name = str_replace ('name="', '', $name[0]); $name = str_replace ('"', '', $name); preg_match ("/value\=\"(.*?)\"/i", $this->inputs[1][$x], $value); $value = str_replace ('value="', '', $value[0]); $value = str_replace ('"', '', $value); preg_match ("/type\=\"(.*?)\"/i", $this->inputs[1][$x], $type); $type = str_replace ('type="', '', $type[0]); $type = str_replace ('"', '', $type); if (strtolower ($type) == "checkbox") { $this->checkboxes[sizeof($this->checkboxes)][0] = $name; $this->checkboxes[sizeof($this->checkboxes)-1][1] = $value; } if (strtolower ($type) == "radio") { $this->radio[sizeof($this->radio)][0] = $name; $this->radio[sizeof($this->radio)-1][1] = $value; } if (strtolower ($type) == "hidden") { $this->hidden[sizeof($this->hidden)][0] = $name; $this->hidden[sizeof($this->hidden)-1][1] = $value; } if (strtolower ($type) == "text") { $this->textbox[sizeof($this->textbox)][0] = $name; $this->textbox[sizeof($this->textbox)-1][1] = $value; } } } // Izpise na zaslon vsa polja function DumpFields () { for ($a=0; $a<=sizeof($this->checkboxes); $a++) { echo "Checkbox" .$this->checkboxes[$a][0] .", val: " .$this->checkboxes[$a][1] ."
"; } for ($a=0; $a<=sizeof($this->radio); $a++) { echo "Radio name=" .$this->radio[$a][0] .", val: " .$this->radio[$a][1] ."
"; } for ($a=0; $a<=sizeof($this->hidden); $a++) { echo "Radio name=" .$this->hidden[$a][0] .", val: " .$this->hidden[$a][1] ."
"; } } // Spravi elemente forme v array (arr[offset][0]--name, arr[offset][1..n]-- val) function FieldsToArrays () { $pre_name = ""; for ($a=0; $a<=sizeof($this->radio); $a++) { if ($this->radio[$a][0] != $pre_name) { $this->arr_radio[sizeof($this->arr_radio)][0] = $this->radio[$a][0]; $pre_name = $this->radio[$a][0]; } $this->arr_radio[sizeof($this->arr_radio)-1][sizeof($this->arr_radio[sizeof($this->arr_radio)-1])] = $this->radio[$a][1]; } for ($a=0; $a<=sizeof($this->hidden); $a++) { if ($this->hidden[$a][0] != $pre_name) { $this->arr_hidden[sizeof($this->arr_hidden)][0] = $this->hidden[$a][0]; $pre_name = $this->hidden[$a][0]; } $this->arr_hidden[sizeof($this->arr_hidden)-1][sizeof($this->arr_hidden[sizeof($this->arr_hidden)-1])] = $this->hidden[$a][1]; } for ($a=0; $a<=sizeof($this->checkboxes); $a++) { if ($this->checkboxes[$a][0] != $pre_name) { $this->arr_checkbox[sizeof($this->arr_checkbox)][0] = $this->checkboxes[$a][0]; $pre_name = $this->checkboxes[$a][0]; } $this->arr_checkbox[sizeof($this->arr_checkbox)-1][sizeof($this->arr_checkbox[sizeof($this->arr_checkbox)-1])] = $this->checkboxes[$a][1]; } } // nakljucno izpolni in submita formo. function RandomFill () { $radios = ""; $checks = ""; $data = ""; // Najprej random radio for ($a = 0; $a < sizeof($this->arr_radio); $a++) { $radios .= "&" .$this->arr_radio[$a][0] ."=" .$this->arr_radio[$a][rand(1, sizeof($this->arr_radio[$a])-1)]; $data[$this->arr_radio[$a][0]] = $this->arr_radio[$a][rand(1, sizeof($this->arr_radio[$a])-1)]; echo "Na ossfet " .$this->arr_radio[$a][0] ." nastavljam vrednost " .$this->arr_radio[$a][rand(1, sizeof($this->arr_radio[$a])-1)]; } // hidden ni random for ($a = 0; $a < sizeof($this->arr_hidden); $a++) { $hidden .= "&" .$this->arr_hidden[$a][0] ."=" .$this->arr_hidden[$a][sizeof($this->arr_hidden[$a])-1]; $data[$this->arr_hidden[$a][0]] = $this->arr_hidden[$a][sizeof($this->arr_hidden[$a])-1]; } // random checkbox for ($a = 0; $a < sizeof($this->arr_checkbox); $a++) { // Obkljukamo nakljucno kljukic $kljukic = rand (1, sizeof($this->arr_checkbox[$a])); for ($b = 0; $b < $kljukic; $b++) { $checks .= "&" .$this->arr_checkbox[$a][0] ."=" .$this->arr_checkbox[$a][rand(1, sizeof($this->arr_checkbox[$a])-1)]; $data[$this->arr_checkbox[$a][0]] = $this->arr_checkbox[$a][rand(1, sizeof($this->arr_checkbox[$a])-1)]; } } echo "data[vrednost_2901] je " .$data['vrednost_2901']; echo "

PRVIC JE DATA "; echo var_dump($data); echo "

"; $content = str_replace ("&=", "", str_replace ("&=", "", substr ($radios . $checks .$hidden, 1))); echo "Izpolnil: $content"; if (strpos ($this->action, "http://")===false) { if (strpos ($this->action, "/")===false) { $url = substr ($this->url, 0, strrpos($this->url, "/")) ."/" .$this->action; } elseif (strpos ($this->action, "/") > 1) { $url = substr ($this->url, 0, strrpos($this->url, "/")) .$this->action; } else { $url = substr ($this->url, 0, strpos($this->url, "/")) .$this->action; } } echo "
DRUGIC JE DATA: "; echo var_dump($data); echo "
"; $url = 'dest.php'; if (strtolower ($this->method) == "post") { $this->do_post_request ($url, $data); } else { // ponavljaj skripto. } } function do_post_request ($url, $data) { echo '

'; echo "VSEBINA STRANI KI JO POSILJAM JE " .$this->content ."
"; echo "POSTATI HOCEM PODATAKE "; echo var_dump($data); echo "
"; echo "POSTATI HOCEM NA $url"; foreach($data as $key => $param) { if (empty($param)) { unset($data[$key]); } } // Create data $data = http_build_query($data); // Headers $headers = "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= "Content-Length: " . strlen($data) . "\r\n"; for ($x = 0; $x < sizeof ($this->cookies); $x++) { if ($this->cookies[$x][0]!="") { $kukis .= "; " .$this->cookies[$x][0] ."=" .$this->cookies[$x][1]; } } if (strlen ($kukis) > 1) $headers .= "Cookie: " .substr ($kukis, 2, strlen($kukis)) ."\r\n"; echo "
header: $headers
"; // Create stream $options = array( 'http' => array( 'method' => 'POST', 'header' => $headers, 'content' => $data ) ); echo "tu poslal naprej ---_" ; echo var_dump($data); echo '_-----'; $context = stream_context_create($options); // Get the result $result = file_get_contents($url, false, $context); echo "


KAR DOBIM NAZAJ: $result"; /* // Lahko bi malo izpopolnil!!! if (strpos ($result, 'ParseNextPage ($result); } */ } function ParseNextPage ($content) { if (strpos ($content, "")); } $this->inputs = ""; $this->selects= ""; $this->hidden= ""; $this->checkboxes= ""; $this->radio= ""; $this->textbox= ""; // Kam kaze forma $this->method= ""; $this->action= ""; // urejeno $this->arr_checkbox= ""; $this->arr_radio= ""; $this->arr_hidden= ""; $this->content = $content; echo "Sem na parsenextpage, grem klicat getfields"; // kukijev na naslednjih straneh ne preverjam vec. $this->GetTarget(); $this->GetFields(); $this->FieldsToArrays(); $this->RandomFill(); } } ?>