将表单值附加到隐藏的XML字符串上


Append form values to hidden XML string on post

我正在向远程服务器发布一个表单,并且必须发送一个XML格式的字符串作为隐藏字段,包含输入的信息。我正在努力将输入值附加到XML字符串中,例如:

            <input type="text" name="firstname" id="fname" />   
            <input type="text" name="lastname" id="sname"  />

XML如下:

<input type="hidden" name="parameters" value="<request><first_name>Test User</first_name> <surname>XXXX</surname></request>"/>

理想情况下,如何使用PHP在POST上将输入中的值应用于XML字符串,从而将用户输入的名字和姓氏发布?

我尝试过Jquery,但是它破坏了XML字符串。

提前感谢!

我认为你需要使用java脚本来操作参数值。

示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript">
function callme()
{
    document.getElementById('parameters').value="<request><first_name>"+document.getElementById('fname').value+"</first_name> <surname>"+document.getElementById('sname').value+"</surname></request>";
    document.getElementById('loginForm').submit();
}
</script>
</head>
<body>
<form id="loginForm">
<input type="text" name="firstname" id="fname" />   
<input type="text" name="lastname" id="sname"  />
<input type="hidden" id="parameters" name="parameters" value=""/>
<input type="button" onclick="javascript:callme()" />
</form>
</body>
</html>

html -

<input type="text" name="firstname" id="fname" />   
<input type="text" name="lastname" id="sname"  />
<input type="hidden" id="parameters" />
<input type="button" name="click" id="button" value="button" />

脚本-在提交前使用参数和设置,例如

$(document).ready(function() {
    var parameters = "<request><first_name>YYYY</first_name> <surname>XXXX</surname></request>";
    $('#button').click(function(){
        parameters = parameters.replace('YYYY',$('#fname').val());
        parameters = parameters.replace('XXXX',$('#sname').val())
        $('#parameters').val(parameters);
        alert($('#parameters').val());
    });
});

我认为您应该在服务器端这样做,因为恶意用户可以发布任何内容。必须转义您的姓和名值比验证xml的正确性要容易得多。

$first = htmlspecialchars($_GET['firstname']);
$last = htmlspecialchars($_GET['lastname']);
$xml = sprintf
(   '<request>
         <first_name>%s</first_name>
         <last_name>%s</last_name>
     </request>',
    $first, $last
);

在javascript中没有理由这样做,除非你需要通过ajax将xml发送到另一个url。

EDIT此解决方案也适用于javascript关闭的人(例如无脚本用户)