如何在curl数组中传递get方法

时间:2016-09-20 08:45:57

标签: php curl

我正在使用网址将行数据从一个页面传递到另一个页面

echo "<td >
    <a href='sessiondetails.php?docname={$key['DocName']}& HosName={$key['HosName']}& HosCode={$key['HosCode']}............}'>
       More>>
    </a></font>
    </td>
</tr>";

在我的第二页中,我使用$_GET将值分配给变量,回显效果很好 但是,当我将变量指定为数组值时,它不会传递该值,我无法理解为什么。

这是我的第二页代码:

<html>
    <head>
        <link href='style1.css' rel='stylesheet' type='text/css'>
    <?php
        $SpecializationId = $_GET['SpecialitionID'];
        $DoctorNo         = $_GET['DoctorNo'] ;
        $day              = $_GET['day'];
        $date             = $_GET['date']; 
        $HosCode          = $_GET['HosCode'];       
        $hospital         = $_GET['HosName'];
        $doctor           = $_GET['docname'];
        $specialization   = $_GET['SpecName'];

        $baseurl = 'http://202.124.173.187/api/v1/doctorSessions';    
        $rawPOSTdata = array(
            "hosID"  => $HosCode,
            "specID" => $SpecializationId,
            "docNo"  => $DoctorNo,
            "day"    => $day,
            "date"   => $date 
        );

        $curl = curl_init($baseurl);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
             'Content-Type: application/json',
             "Authorization: Bearer $atoken"
        )); 
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($rawPOSTdata));    
        $response = curl_exec($curl);
        curl_close($curl);

        if($response) {
            if (isset($result->error) ) die( $result->error_message );
            /* Convert json data to array */

            $arr=json_decode( $response,true);
    ?>

"hosID"=>$hosCode,没有取值

2 个答案:

答案 0 :(得分:0)

通过CURLOPT_CUSTOMREQUEST和CURLOPT_POST设置POST,并且CURLOPT_CUSTOMREQUEST保持为POST,而CURLOPT_POST切换到CURLOPT_HTTPGET。服务器假设CURLOPT_CUSTOMREQUEST的标头是正确的,并返回411。

curl_setopt($ curl_handle,CURLOPT_CUSTOMREQUEST,'POST');

答案 1 :(得分:0)

你没有正确地转义GET变量,也没有正确编码HTML,你可能在这里得到数据损坏。要正确地转义它,请使用http_build_query制作您的网址,然后使用htmlentitieshtmlspecialchars对其进行html编码,就像这样

echo '<td >
    <a href="sessiondetails.php?'.htmlentities(http_build_query(array('docname'=>$key['DocName'],'HosName'=>$key['HosName'],'HosCode'=>$key['HosCode'])),ENT_QUOTES | ENT_HTML401 | ENT_SUBSTITUTE | ENT_DISALLOWED,'UTF-8',true).'">
       More>>
    </a></font>
    </td>
</tr>';

将来,您可以使用https://validator.w3.org/来检测何时没有正确地将变量编码为HTML,并且可能在此处检测到您的错误