Post wsdl 结构中的动态值

Post value dynamically inside wsdl structure

我有 php 脚本到 post 并使用 curl php:

更新 wsdl 密钥的值
 $imei = $_POST['86207503'];   
    $data = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:sub=\"http://subscriberexample.com/\">\r\n
      <soap:Header/>\r\n   <soap:Body>\r\n
      <sub:wsUpdateSubscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberProfile>\r\n
      <!--Zero or more repetitions:-->\r\n
      <entry>\r\n
      <!--Optional:-->\r\n
      <key>IMEI</key>\r\n
      <!--Optional:-->\r\n
      <value>{$imei}</value>\r\n
      </entry>\r\n
      </subscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberID>123546546</subscriberID>\r\n
      <!--Optional:-->\r\n
      <alternateId>?</alternateId>\r\n
      <!--Optional:-->\r\n
      <updateAction>?</updateAction>\r\n
      <!--Optional:-->\r\n
      <parameter1>?</parameter1>\r\n
      <!--Optional:-->\r\n
      <parameter2>?</parameter2>\r\n
      </sub:wsUpdateSubscriberProfile>\r\n
      </soap:Body>\r\n</soap:Envelope>";

    $curl = curl_init();
.....

它运行如果在上面的脚本上手动输入数据就成功了。我尝试使用 $imei = $_POST['86207503'];

中表格中的动态值作为 IMEI 值

但它不起作用,值从未传递。任何人都知道如何解决这个问题?

谢谢。

无法复现,imei肯定是注入了这个测试码:

<?php
$imei = 'SOMETHING_EASY_TO_SPOT';   
    $data = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:sub=\"http://subscriberexample.com/\">\r\n
      <soap:Header/>\r\n   <soap:Body>\r\n
      <sub:wsUpdateSubscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberProfile>\r\n
      <!--Zero or more repetitions:-->\r\n
      <entry>\r\n
      <!--Optional:-->\r\n
      <key>IMEI</key>\r\n
      <!--Optional:-->\r\n
      <value>{$imei}</value>\r\n
      </entry>\r\n
      </subscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberID>123546546</subscriberID>\r\n
      <!--Optional:-->\r\n
      <alternateId>?</alternateId>\r\n
      <!--Optional:-->\r\n
      <updateAction>?</updateAction>\r\n
      <!--Optional:-->\r\n
      <parameter1>?</parameter1>\r\n
      <!--Optional:-->\r\n
      <parameter2>?</parameter2>\r\n
      </sub:wsUpdateSubscriberProfile>\r\n
      </soap:Body>\r\n</soap:Envelope>";
var_dump($data);

输出是:

string(863) "<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sub="http://subscriberexample.com/">

      <soap:Header/>
   <soap:Body>

      <sub:wsUpdateSubscriberProfile>

      <!--Optional:-->

      <subscriberProfile>

      <!--Zero or more repetitions:-->

      <entry>

      <!--Optional:-->

      <key>IMEI</key>

      <!--Optional:-->

      <value>SOMETHING_EASY_TO_SPOT</value>

      </entry>

      </subscriberProfile>

      <!--Optional:-->

      <subscriberID>123546546</subscriberID>

      <!--Optional:-->

      <alternateId>?</alternateId>

      <!--Optional:-->

      <updateAction>?</updateAction>

      <!--Optional:-->

      <parameter1>?</parameter1>

      <!--Optional:-->

      <parameter2>?</parameter2>

      </sub:wsUpdateSubscriberProfile>

      </soap:Body>
</soap:Envelope>"

如果您查看输出中的第 22 行,肯定会注入 $imei 变量。因此我投票结束这个问题 "can not reproduce".

顺便说一句,如果你 运行 var_dump($_POST); 你会得到什么?真的有一个 POST 键为 86207503 的变量吗?如果没有,这可能意味着您的开发环境的 error_reporting 值是错误的,意味着它不包括 E_NOTICE,它绝对应该