2011-09-26 153 views
1

我正在向远程服务器发布表单,并且必须将XML格式的字符串作为隐藏字段发送,其中包含输入的信息。林奋力追加输入到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字符串的输入,所以firstname和surname被发布为用户输入的内容?

我试过jquery,但它打破了XML字符串。

很多预先感谢!

回答

0

我认为你应该这样做服务器端恶意用户可以发布任何东西。不得不逃避名字和姓氏的价值比验证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。

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

4

我想你需要使用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> 
0

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()); 
    }); 
});