我有以下php函数:
function checkJQL($filter) {
$auth = "account:password";
$URL='http://jira/rest/api/latest/search?jql='.$filter;
echo $URL;
// Initiate curl
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//Tell it to always go to the link
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$URL);
//Set username and password
curl_setopt($ch, CURLOPT_USERPWD, $auth);
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);
echo $result;
// Will dump a beauty json :3
var_dump(json_decode($result, true));
echo "DONE";
}
当我用$filter = ""
调用它时它工作正常,输出所有内容。一旦插入正确的JQL查询,它就会失败。当我输入随机垃圾时,它可以工作(因为我得到一个无效的输入消息),但是当它是正确的JQL它永远不会工作。
当我将我回显的URL复制并粘贴到浏览器中时,它可以正常工作。 我使用的示例过滤器:
“目标”=“Blah”
当我考虑它时,我实际上并不需要它来工作,我只需要它知道输入何时不是JQL(它确实如此)。但我现在真的很好奇。任何人都有关于它可能是什么的想法?
答案 0 :(得分:1)
您应对$filter
进行网址编码。
它使用空字符串或随机字符串的原因是因为它们没有任何需要进行URL编码的具有挑战性的字符。
URL在浏览器中工作但在脚本中不起作用的原因是浏览器执行URL编码。
请执行以下操作:
$URL='http://jira/rest/api/latest/search?jql='.urlencode($filter);
链接到urlencode:http://php.net/manual/en/function.urlencode.php