2011-09-26 73 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()); 
    }); 
});