会话数据未在PHP中使用CURL传递

时间:2016-05-09 12:17:37

标签: php curl

以下是我在php文件中使用的CURL调用

$url=$path."l2pharmaserviceclassfile.php?action=PENDINGDRUGORDERS&session_id1=".$_SESSION['sessionid']."&pop_id=".$_SESSION['popId']."&user_id=".$_SESSION['userId'];   
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);          
    $result = curl_exec($ch); 
    curl_close($ch);    
echo "<pre>";
print_r($result);

这是我在l2pharmaserviceclassfile.php

中写的
else if($_REQUEST['action']=='PENDINGDRUGORDERS')
{   
    echo $_REQUEST['session_id1'];
}

但是我无法获得会话ID值。当我尝试echo $_REQUEST['pop_id'];时,我得到了价值。

1 个答案:

答案 0 :(得分:2)

会话ID可能包含需要编码以在查询字符串中发送的特殊字符。 对于这类东西,依赖PHP核心函数可能更好:

$parameters = array(
  'action'      => 'PENDINGDRUGORDERS',
  'session_id1' => $_SESSION['sessionid'],
  'pop_id'      => $_SESSION['popId'],
  'user_id'     => $_SESSION['userId']
);

$url = sprintf(
  "%s?%s",
  $path."l2pharmaserviceclassfile.php",
  http_build_query($parameters)
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);          
$result = curl_exec($ch); 
curl_close($ch);

echo "<pre>";
print_r($result);