怎么用PHP接收客户端发送的XML数据? 根据你的发送方式来定$_GET$_POST$_SERVER['HTTP_RAW_POST_DATA'] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是使用XMLHTTP对象发送的如xmlhttp = new ActiveXOject("Msxml2.XMLHTTP");xmlhttp.open("GET","test.php", false);xmlhtp.send("<?xml version='1.0' encoding='gb2312'?><company>这是测试</company>");PHP怎么接收这样的数据? $_SERVER['HTTP_RAW_POST_DATA']随浏览器和php的版本不同,可能会得到粮行相同的数据 我以前用xmlhttp你可能这么考虑:var msg = "<?xml version='1.0' encoding='gb2312'?><company>这是测试</company>";xmlhttp = new ActiveXOject("Msxml2.XMLHTTP");xmlhttp.open("GET","test.php?msg"+msg, false);xmlhtp.send("");在客户端你就用$_GET['msg']来接收服务端的数据了! 我知道这样可以,不过我想知道怎么样接收XML数据 你是要怎么分析数据。底下是我写的一个程序片断。你可以参考下function SearchDetail(strCOLID,strISMGID,strUserNum){ var oXMLDoc = new ActiveXObject('MSXML'); sURL = "xmlindex.php?strInClude=modules/dycx/detail.php&strCOLID="+strCOLID+"&strISMGID="+strISMGID+"&strUserNum="+strUserNum; oXMLDoc.url = sURL; var oRoot =oXMLDoc.root; if(oRoot.children != null){ oItem = oRoot.children; nOK = oItem.item(0).text; strUserNum = oItem.item(1).text; strCOLID = oItem.item(2).text; strCOLName = oItem.item(3).text; strISMGID = oItem.item(4).text; strISMGName = oItem.item(5).text; nBusiState = oItem.item(6).text; nFeeType = oItem.item(7).text; strFeeName = oItem.item(8).text; strFeeNum = oItem.item(9).text; strScribeTime = oItem.item(10).text; strCancelTime = oItem.item(11).text; strRe = oItem.item(12).text; if (nOK == "1"){ // 查询成功 document.all.UserNum.innerHTML = strUserNum; document.all.ColName.innerHTML = strCOLName+" ["+strCOLID+"]"; document.all.ISMGID.innerHTML = strISMGName+" ["+strISMGID+"]"; document.all.FeeType.innerHTML = strFeeName+" ["+nFeeType+"]"; document.all.FeeNum.innerHTML = strFeeNum; document.all.ScribeTime.innerHTML = strScribeTime; document.all.CancelTime.innerHTML = strCancelTime; document.all.Re.innerHTML = strRe; if (nBusiState == "1"){ document.all.StateType.innerHTML = "订阅"; } if (nBusiState == "0"){ document.all.StateType.innerHTML = "取消订阅"; } if (nBusiState == "2"){ document.all.StateType.innerHTML = "暂停"; } Detail.style.display = "inline"; }else{ // 不成功 alert("对不起,没有查询到详细信息"); return false; } } return true;}##############################modules/dycx/detail.php if(basename($HTTP_SERVER_VARS["PHP_SELF"]) != 'xmlindex.php'){ header("HTTP/1.0 404"); exit; } $strCOLID = Trim($strCOLID); // 栏目号 $strISMGID = Trim($strISMGID); // 网关号 $strUserNum = Trim($strUserNum); // 用户号码 $result = $db->Execute("SELECT a.COLID as COLID,b.Name as ColName,c.Name as FeeName,a.UserNum as UserNum, a.ISMGID as ISMGID,d.Name as ISMGName,a.FeeType as FeeType,a.FeeNum as FeeNum, a.ScribeTime as ScribeTime,a.CancelTime as CancelTime,a.Re as Re,a.BusiState as BusiState FROM t_busi_user as a, t_busi_col as b, t_sys_feetype as c, t_sys_ismg as d Where a.COLID = '".$strCOLID."' And a.ISMGID = '".$strISMGID."' And a.UserNum = '".$strUserNum."' And a.COLID = b.ID And a.FeeType = c.ID And a.ISMGID = d.ID"); if (!$result->EOF){ $strUserNum = trim($result->fields("UserNum")); // 用户号码 $strCOLID = trim($result->fields("COLID")); // 栏目号 $strCOLName = trim($result->fields("ColName")); // 栏目名称 $strISMGID = trim($result->fields("ISMGID")); // 网关ID $strISMGName = trim($result->fields("ISMGName")); // 网关名称 $nBusiState = trim($result->fields("BusiState")); // 事件状态 $nFeeType = trim($result->fields("FeeType")); // 付费类型 $strFeeName = trim($result->fields("FeeName")); // 付费名称 $strFeeNum = trim($result->fields("FeeNum")); // 付费号码 $strScribeTime = trim($result->fields("ScribeTime")); // 订阅时间 $strCancelTime = trim($result->fields("CancelTime")); // 退订时间 $strRe = htmlspecialchars($result->fields("Re")); // 备注 $nOK = 1; }else{ $nOK = 0; } echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>\n"; echo "<DETAIL>\n"; echo "<OK>".$nOK."</OK>\n"; echo "<RESULT>".$strUserNum."</RESULT>\n"; echo "<RESULT>".$strCOLID."</RESULT>\n"; echo "<RESULT>".$strCOLName."</RESULT>\n"; echo "<RESULT>".$strISMGID."</RESULT>\n"; echo "<RESULT>".$strISMGName."</RESULT>\n"; echo "<RESULT>".$nBusiState."</RESULT>\n"; echo "<RESULT>".$nFeeType."</RESULT>\n"; echo "<RESULT>".$strFeeName."</RESULT>\n"; echo "<RESULT>".$strFeeNum."</RESULT>\n"; echo "<RESULT>".$strScribeTime."</RESULT>\n"; echo "<RESULT>".$strCancelTime."</RESULT>\n"; echo "<RESULT>".$strRe."</RESULT>\n"; echo "</DETAIL>\n"; “不过我想知道怎么样接收XML数据”首先,php并不能知道所接收的数据是否为xml。所以将把他视为字符串其次,解析xml的工作可交由domxml来做具体做法可参见http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=118164 to zhuxz(笨笨猪):你的这个是用PHP生成XML,用DOM来解析的,这部分我已经实现。不过还是谢谢 老大,你的代码中并没有提及到如何用PHP接收客户端发送的数据 $xmldoc = xmldoc($_SERVER['HTTP_RAW_POST_DATA']); $_SERVER["HTTP_RAW_POST_DATA"]这个东西用来接收post过来的完整数据,但是这个东西php有一个限制,凡是提交时候的enctype="application/x-www-form-urlencoded"的话,HTTP_RAW_POST_DATA是不会有内容的。只有将enctype="text/xml"或者其它内容,这里面才有值。 羽高?老版主哦,又回来了?我记得我最开始学PHP的时候(01年吧好像是)你和羽凡是这里的版主。后来我有二年没来了,直到去年才来的。。前阵子偶然在PHP手册中中文文档翻译小组发现你的名字了^_^向你学习! mysql中fulltext的通配符不起作用 问一个Js的语法,在PHP该怎样表示? 写一个 php 函数 邮件群发问题 请帮忙给出处理一个数据文件的代码 通过变量组成sql语句报错 linux安装php5后找不到解释器了 phpmyadmin能不能打一个数据库里所有数据表里指定的内容一块替换掉 如何用PHP实现在指定的数组中产生随机数? PHP调试出错!帮帮忙啊! session变量问题? 如何定义私有函数
如
xmlhttp = new ActiveXOject("Msxml2.XMLHTTP");
xmlhttp.open("GET","test.php", false);
xmlhtp.send("<?xml version='1.0' encoding='gb2312'?><company>这是测试</company>");
PHP怎么接收这样的数据?
随浏览器和php的版本不同,可能会得到粮行相同的数据
你可能这么考虑:
var msg = "<?xml version='1.0' encoding='gb2312'?><company>这是测试</company>";
xmlhttp = new ActiveXOject("Msxml2.XMLHTTP");
xmlhttp.open("GET","test.php?msg"+msg, false);
xmlhtp.send("");在客户端你就用
$_GET['msg']来接收服务端的数据了!
function SearchDetail(strCOLID,strISMGID,strUserNum){
var oXMLDoc = new ActiveXObject('MSXML');
sURL = "xmlindex.php?strInClude=modules/dycx/detail.php&strCOLID="+strCOLID+"&strISMGID="+strISMGID+"&strUserNum="+strUserNum;
oXMLDoc.url = sURL;
var oRoot =oXMLDoc.root;
if(oRoot.children != null){
oItem = oRoot.children;
nOK = oItem.item(0).text;
strUserNum = oItem.item(1).text;
strCOLID = oItem.item(2).text;
strCOLName = oItem.item(3).text;
strISMGID = oItem.item(4).text;
strISMGName = oItem.item(5).text;
nBusiState = oItem.item(6).text;
nFeeType = oItem.item(7).text;
strFeeName = oItem.item(8).text;
strFeeNum = oItem.item(9).text;
strScribeTime = oItem.item(10).text;
strCancelTime = oItem.item(11).text;
strRe = oItem.item(12).text;
if (nOK == "1"){ // 查询成功
document.all.UserNum.innerHTML = strUserNum;
document.all.ColName.innerHTML = strCOLName+" ["+strCOLID+"]";
document.all.ISMGID.innerHTML = strISMGName+" ["+strISMGID+"]";
document.all.FeeType.innerHTML = strFeeName+" ["+nFeeType+"]";
document.all.FeeNum.innerHTML = strFeeNum;
document.all.ScribeTime.innerHTML = strScribeTime;
document.all.CancelTime.innerHTML = strCancelTime;
document.all.Re.innerHTML = strRe;
if (nBusiState == "1"){
document.all.StateType.innerHTML = "订阅";
}
if (nBusiState == "0"){
document.all.StateType.innerHTML = "取消订阅";
}
if (nBusiState == "2"){
document.all.StateType.innerHTML = "暂停";
}
Detail.style.display = "inline";
}else{ // 不成功
alert("对不起,没有查询到详细信息");
return false;
}
}
return true;
}
##############################
modules/dycx/detail.php
if(basename($HTTP_SERVER_VARS["PHP_SELF"]) != 'xmlindex.php'){
header("HTTP/1.0 404");
exit;
}
$strCOLID = Trim($strCOLID); // 栏目号
$strISMGID = Trim($strISMGID); // 网关号
$strUserNum = Trim($strUserNum); // 用户号码
$result = $db->Execute("SELECT a.COLID as COLID,b.Name as ColName,c.Name as FeeName,a.UserNum as UserNum,
a.ISMGID as ISMGID,d.Name as ISMGName,a.FeeType as FeeType,a.FeeNum as FeeNum,
a.ScribeTime as ScribeTime,a.CancelTime as CancelTime,a.Re as Re,a.BusiState as BusiState
FROM t_busi_user as a, t_busi_col as b, t_sys_feetype as c, t_sys_ismg as d
Where a.COLID = '".$strCOLID."' And a.ISMGID = '".$strISMGID."' And a.UserNum = '".$strUserNum."'
And a.COLID = b.ID And a.FeeType = c.ID And a.ISMGID = d.ID");
if (!$result->EOF){
$strUserNum = trim($result->fields("UserNum")); // 用户号码
$strCOLID = trim($result->fields("COLID")); // 栏目号
$strCOLName = trim($result->fields("ColName")); // 栏目名称
$strISMGID = trim($result->fields("ISMGID")); // 网关ID
$strISMGName = trim($result->fields("ISMGName")); // 网关名称
$nBusiState = trim($result->fields("BusiState")); // 事件状态
$nFeeType = trim($result->fields("FeeType")); // 付费类型
$strFeeName = trim($result->fields("FeeName")); // 付费名称
$strFeeNum = trim($result->fields("FeeNum")); // 付费号码
$strScribeTime = trim($result->fields("ScribeTime")); // 订阅时间
$strCancelTime = trim($result->fields("CancelTime")); // 退订时间
$strRe = htmlspecialchars($result->fields("Re")); // 备注
$nOK = 1;
}else{
$nOK = 0;
}
echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>\n";
echo "<DETAIL>\n";
echo "<OK>".$nOK."</OK>\n";
echo "<RESULT>".$strUserNum."</RESULT>\n";
echo "<RESULT>".$strCOLID."</RESULT>\n";
echo "<RESULT>".$strCOLName."</RESULT>\n";
echo "<RESULT>".$strISMGID."</RESULT>\n";
echo "<RESULT>".$strISMGName."</RESULT>\n";
echo "<RESULT>".$nBusiState."</RESULT>\n";
echo "<RESULT>".$nFeeType."</RESULT>\n";
echo "<RESULT>".$strFeeName."</RESULT>\n";
echo "<RESULT>".$strFeeNum."</RESULT>\n";
echo "<RESULT>".$strScribeTime."</RESULT>\n";
echo "<RESULT>".$strCancelTime."</RESULT>\n";
echo "<RESULT>".$strRe."</RESULT>\n";
echo "</DETAIL>\n";
首先,php并不能知道所接收的数据是否为xml。所以将把他视为字符串
其次,解析xml的工作可交由domxml来做
具体做法可参见http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=118164
我记得我最开始学PHP的时候(01年吧好像是)你和羽凡是这里的版主。
后来我有二年没来了,直到去年才来的。。
前阵子偶然在PHP手册中中文文档翻译小组发现你的名字了^_^
向你学习!