我正在构建一个用curl执行的url。该网址将为我正在使用的LMS调用api。在能够调用任何其他内容之前,您需要从LMS接收令牌以放入URL。我从api获得了令牌,我可以回复它并且它显示得很好,当我在将令牌附加到它之后回显url时,它没有显示出来。
curl_setopt($c, 'CURLOPT_RETURNTRANSFER', true);
$res = curl_exec($c);
curl_close($c);
$start = strpos($res,"<token>");
$end = $start+37;
$token = substr($res,$start+7,$end-$start);
echo "{$token}<br />";
$url = "/www/api2.php?action=create_user";
$url .= "&login=" . urlencode($username);
$url .= "&password=" . urlencode($password);
$url .= "&name=" . urlencode($data['first_name']);
$url .= "&surname=" . urlencode($data['last_name']);
$url .= "&email=" . urlencode($email);
$url .= "&languages=english";
$url .= "&token=" . $token;
echo "{$url}<br />";
echo "{$url}<br />";
/www/api2.php?action=create_user&login=foobar3130&password=6116b3f29c&name=Foo&surname=Bar&email=foobar%40gmail.com&languages=english&token =
echo "{$token}<br />";
pUCu2BUAE1heAyQ93fApfhvDE1bjKd
修改
我添加了一个检查以查看$start
是否为false,并且它是错误的。我猜它实际上并不是得到回声的令牌,因为如果我注释掉该行,那么我对令牌输出的字符串仍会被打印出来。我不确定它会是什么。
编辑2 我现在让它返回xml,但我不知道如何解析它来获取令牌。它返回:
<xml><token>Fp1rYkds4fSuTAQxTvLvSiW5NE2FJz</token></xml>
答案 0 :(得分:3)
您的编辑似乎确认curl_exec()
没有将数据返回给您 - 它将其直接发送到浏览器。使用选项CURLOPT_RETURNTRANSFER
让它将值返回到变量。
答案 1 :(得分:1)
尝试:
ob_start();
echo "/www/api2.php?action=create_user";
echo "&login=" . urlencode($username);
echo "&password=" . urlencode($password);
echo "&name=" . urlencode($data['first_name']);
echo "&surname=" . urlencode($data['last_name']);
echo "&email=" . urlencode($email);
echo "&languages=english";
echo "&token=" . $token;
$url=ob_get_contents();
ob_end_clean();
echo $url;
答案 2 :(得分:1)