我正在使用php / curl建立与外部api的连接。它工作正常,但现在我的连接字符串只引用表单中的一个变量。
如何让它不止一个?
这就是现在的样子
$curl_connection =curl_init('https://api.ssllabs.com/api/v2/analyze?host='.$_REQUEST['host']);
拨打电话时,上面的内容如下所示: https://api.ssllabs.com/api/v2/analyze?的主机= www.yourdomain.com
我的表单已更新并包含更多输入值,我想将其作为curl连接的一部分引用,并且需要如下所示: ?https://api.ssllabs.com/api/v2/analyze的主机= www.yourdomain.com &安培;的 S = 69.54.183.66 &安培;的 ignoreMismatch =上
每个参考文献都由&符号
在我的html表单上,输入名称如下:
我希望你能清楚知道我想要做什么。
这是我的jquery / Ajax的一部分
var hostName = $("input#host").val();
var ignoreMismatch = $("#ignoreMismatch").val();
var fromCache = $("#fromCache").val();
dataString = "host=" + hostName + "&fromCache=" + fromCache + "&ignoreMismatch=" + ignoreMismatch;
enter code here
$.ajax({
type: "GET",
url: "api2.php",
data: dataString,
dataType: "json",
我可以看到这部分正在发挥作用。从我的Web控制台,我可以看到URL已构建并发布到api2.php文件。
例如https://172.21.121.37/labs/ api2.php?host = ocsp.verisign.com& fromCache = on& ignoreMismatch = on
这是我的api2.php文件,目前只设置为接收host = string。
<?php
header( "Content-Type: application/json" );
//create cURL connection
$curl_connection =curl_init('https://api.ssllabs.com/api/v2/analyze?host='.$_REQUEST['host']);
///set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//perform our request
$result = curl_exec($curl_connection);
echo $result;
//close the connection
curl_close($curl_connection);
?>
顺便说一句,这是正常工作的代码,但我只是想给你们更多的背景信息,因为我尝试了一些提供的建议并且它们没有用。如果有人可以帮助我更新我的api2.php文件,我将测试更新。
答案 0 :(得分:0)
这应该可以帮到你
foreach($_GET as $name => $value) {
$encoded .= urlencode($name).'='.urlencode($value).'&';
}
$encoded = substr($encoded, 0, strlen($encoded)-1);
$ch = curl_init("https://api.ssllabs.com/api/v2/analyze?" . $encoded);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;