我有各种重要的变量需要在同一页面加载时从PHP转移到JS。我目前正在将这些变量存储在DOM元素属性中,并使用jQuery来抓取它们。
这很好用,虽然有些信息非常重要,但我宁愿这在DOM中并不公开,而且“隐藏在窥探之中”。
所以我的问题是:如何将变量从PHP传输到JS或DOM并让它们隐藏起来?
干杯,希望你能帮忙!
答案 0 :(得分:2)
最终用户可能会看到JS中发生的一切。如果它是您试图隐藏的安全数据,也许您需要重新设计您的方法。
答案 1 :(得分:1)
在页面加载时使用ajax请求。这是jQuery的shell:
$(function()
{
$.ajax("http://yoursite.com/phpscript.php",
{
method: "post",
dataType: "json",
success: function(data)
{
// do what you will with the data here
}
});
});
必须在某个时候将所有信息下载到此人的计算机上。您可以将其隐藏在javascript中,但最终用户可以轻松使用firebug或类似的东西来查看该数据。
答案 2 :(得分:1)
您希望将数据发送给用户而不是同时发送给用户吗?
答案 3 :(得分:1)
如果数据是敏感的,则无法将其交给客户端处理,同时保证其安全。这根本不是网络的运作方式。您交给客户的所有内容必须是客户可读的。您可以使用SSL等技术来保护数据不被截获,但目标收件人必须能够读取它。您应该处理任何敏感数据服务器端,并仅输出供公众使用的结果。
如果你只想在隐藏凌乱的实现细节的同时为页面提供数据,那么有很多选择:
<input type="hidden" />
字段var myValue = <?= $serverside_value ?>
或使用json_encode
答案 4 :(得分:1)
向客户端(HTML / JS)提供重要信息并不是很好。
但是要回答你的问题 - 你可以使用jQuery's AJAX方法向PHP发布请求,从PHP中,你可以将json_encode()'ed数据返回给jQuery。 如果你想让它们隐藏在视线之外,或者说“足够加密”,你可以通过SSL通道运行它。 另一种选择是自己进行加密或使用public-private key encryption.
的一些公共库例如使用jQuery post:
$.post("script.php",
{requestKey : "requestValue"}, // $_POST["requestKey"] == "requestValue"
function(response) {
// if you receive JSON encoded data
// you should use JSON decoder for javasript
// or var obj = eval('(' + response + ')');
},
"json");
在PHP中它将是:
$data = $_POST["requestKey"];
// do something
echo json_encode($result);