CURLOPT_URL无法获取URL中间的ID参数问题求助
问题修正方案
错误根源
你的代码存在两个关键问题:
- 数组访问语法错误:
$_POST{'ID'}不是PHP标准的数组访问方式,正确写法应为$_POST['ID'](使用方括号而非大括号)。 - 字符串拼接错误:原代码中
/property/.$_POST{'ID'}里的.位于双引号内部,会被当作URL的一部分直接发送给API,导致请求路径变成无效的/property/.$_POST{'ID'},API无法识别ID参数,进而引发请求挂起。
修正后的写法
写法1:标准字符串拼接
使用.正确连接字符串与变量,同时修正数组访问语法:
CURLOPT_URL => "https://api.airdeed.com/v1.1/client/property/" . $_POST['ID'] . "/historical?state=" . $_POST['state']
写法2:双引号变量解析(更简洁)
利用PHP双引号解析变量的特性,用大括号包裹数组变量,让解析更明确:
CURLOPT_URL => "https://api.airdeed.com/v1.1/client/property/{$_POST['ID']}/historical?state={$_POST['state']}"
写法3:安全优化(推荐)
直接使用用户输入存在URL注入风险,建议先对参数做URL编码,避免特殊字符破坏URL结构:
// 先对参数编码 $propertyId = urlencode($_POST['ID']); $stateParam = urlencode($_POST['state']); // 拼接URL CURLOPT_URL => "https://api.airdeed.com/v1.1/client/property/$propertyId/historical?state=$stateParam"
内容的提问来源于stack exchange,提问作者Cory Weikel
相关产品推荐
相关产品推荐

