php获取通过http协议post提交过来xml数据及解析xml
伊谢尔伦
伊谢尔伦 2017-04-11 09:12:34
[PHP讨论组]

php怎么获取接口返回的xml数据及解析xml

直接接收感觉会有风险,应该怎么做才安全

主要是接收数据的时候怎么做验证才安全

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
迷茫
$xml = file_get_contents("php://input");
libxml_disable_entity_loader(true);
$res = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

print_r($res);
//关于验证参考微信支付,参数中增加sign
/**
 * 获取参数签名
 * @param  Array  要传递的参数数组
 * @param  String  秘钥
 * @return String 通过计算得到的签名
 */
function getSign($params,$key) {
    ksort($params);        
    foreach ($params as $key => $item) {
        if (!empty($item)) {         
            $newArr[] = $key.'='.$item;     
        }
    }
    $stringA = implode("&", $newArr);
    $stringSignTemp = $stringA."&key=".$key;      
    $stringSignTemp = md5($stringSignTemp);     
    $sign = strtoupper($stringSignTemp);
    return $sign;
}
$s = $res['sign'];
unset($res['sign']);
$sign = getSign($res,$key);
if($sign === $s) {
    return true;
}
return false;
阿神

simplexml

大家讲道理
$xml = file_get_contents("php://input");
$xml = new \SimpleXMLElement($xml);
$data = [];
        foreach ($xml as $key => $value) {
            $data[$key] = strval($value);
        }
        你可以在传输的Xml数据里面添加一列sign,将前面的数据用加密算法计算出结果后再填充进去,不过密钥不要在网络上传输哈
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号