2016-01-25 52 views
0

我有點困在這裏,並會很感激,如果有人能在正確的方向:)插入PHP變量到XML捲曲後

我張貼從形式「未授權」的價值和檢索點我很好。我想要做的就是將它插入到我作爲變量發佈的XML中。該變量需要插入到macAddress字段中。這就是我心目中

MACADDRESS = 「$ UNAUTH」(8號線)

<?php 
    session_start(); 
$unauth = $_POST['unauth']; 
$xml_data = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<TipsApiRequest xmlns="http://www.avendasys.com/tipsapiDefs/1.0"> 
<TipsHeader version="3.0"/> 
<Endpoints> 
<Endpoint status="Known" macAddress="$unauth"> 
<EndpointTags tagName="unauthorized" tagValue="true"/> 
</Endpoint> 
</Endpoints> 
</TipsApiRequest>'; 
$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, "https://x.x.x.x/tipsapi/config/write/Endpoint"); 
curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($c, CURLOPT_USERPWD, 'username:password'); 
curl_setopt($c, CURLOPT_POSTFIELDS, "$xml_data"); 
curl_setopt($c, CURLOPT_POST, 1); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($c, CURLOPT_HEADER, false); 

$output2 = curl_exec($c); 

if($output2 === false) 
{ 
trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING); 
} 
else 
{`enter code here` 
var_dump($output2); 
var_dump($_POST); 
} 
curl_close($c); 
?> 

這裏的XML響應我得到

'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><TipsApiResponse xmlns="http://www.avendasys.com/tipsapiDefs/1.0"><TipsHeader exportTime="Mon Jan 25 20:10:18 GMT 2016" version="6.5"/><StatusCode>Success</StatusCode><TipsApiError><ErrorCode>InvalidXml</ErrorCode><Message>Endpoint MAC Address "&amp;#x24;unauth" is invalid</Message></TipsApiError></TipsApiResponse> 

非常感謝!

回答

0

您在XML字符串構造中使用簡單引號'。在簡單的引號內,變量不被解釋。您必須將您的XML字符串封裝在雙引號"中,或者將字符串中的變量串聯起來。

<?php 
$s = 'a string'; 
echo '$s'; // Show $s 
echo "$s"; // Show a string 

例如在你的字符串串聯:

$unauth = 'attribute value'; 
$xml_data = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<TipsApiRequest xmlns="http://www.avendasys.com/tipsapiDefs/1.0"> 
    <TipsHeader version="3.0"/> 
    <Endpoints> 
     <Endpoint status="Known" macAddress="'.$unauth.'"> 
      <EndpointTags tagName="unauthorized" tagValue="true"/> 
     </Endpoint> 
    </Endpoints> 
</TipsApiRequest>'; 

您還可以使用HEREDOC串結構,其內部interprete變量:

$unauth = 'attribute value'; 
$xml_data = <<<XML 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<TipsApiRequest xmlns="http://www.avendasys.com/tipsapiDefs/1.0"> 
    <TipsHeader version="3.0"/> 
    <Endpoints> 
     <Endpoint status="Known" macAddress="$unauth"> 
      <EndpointTags tagName="unauthorized" tagValue="true"/> 
     </Endpoint> 
    </Endpoints> 
</TipsApiRequest> 
XML; 

而且必須使用PHP filters功能驗證POST數據避免在您的XML請求中注入代碼。

+0

非常感謝您花時間回覆並解釋。作品#1:D:D! –