1

http://cbseresults.nic.in/class1211/cbse122012.htmのページから試験結果を取得する必要があります 。Sampleroll 番号は 4623447 です。フォーム データを投稿するために http ポストを使用しています。データを投稿するために次のコードを書きました。必要な結果を提供していません.必要なCookieと投稿変数を投稿していますが、それでも出力が得られません.send_post関数にどのような変更を加える必要がありますか.これが私のコードです

echo cbse12_data_extractor(4623447);
function cbse12_data_extractor($regNo) {
    $source_url = 'http://cbseresults.nic.in/class1211/cbse122012.asp';
    $post_vars = array('regno'=>$regNo);
    $cookies = array('_tb_pingSent'=>1);
   // $extraHeaders = array('Host'=>'http://cbseresults.nic.in');
    return send_post($source_url,$post_vars,$cookies);
}

function send_post( $url, $data ,$cookies='',$extraHeaders = '') //sends data     array(param=>val,...) to the page $url in post method and returns the reply string
{
    $post    = http_build_query( $data );
    $header =  "Accept-language: en\r\n".
            "Content-Type: application/x-www-form-urlencoded\r\n" . 
            "Content-Length: " . strlen( $post ) . 
            "\r\nUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";

    if($extraHeaders) {
        foreach($extraHeaders as  $headerN  => $val) {
            $header = $header.$headerN.': '.$val."\r\n";
        }

    } 
    if($cookies) {
        $cookieArr = array();
        foreach($cookies as  $cookie  => $value) {
            array_push($cookieArr,$cookie.'='.$value);
        }
        $cookieStr = "Cookie: ".implode('; ',$cookieArr)."\r\n";
        $header = $header.$cookieStr;
    }
    $context = stream_context_create( array(
         "http" => array(
             "method" => "POST",
            "header" => $header,
            "content" => $post 
        ) 
    ) );
    //echo $header;
    $page    = file_get_contents( $url, false, $context );
    return $page;
    }
4

1 に答える 1

2

POSTを使用してデータを送信できますfile_get_contentsCURLこのタスクに使用

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,your_parameters);       
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
于 2013-05-02T07:59:51.767 に答える