我有一个带有URL的PHP数组,我想保持隐藏(或者至少更难复制) 我需要将此数组转换为JS数组。 没有在JS中编写项目是否可能?
所以不就像下面这个可以在源代码中找到URL的例子一样......
<?php
$arr = array("http://foo.com","http://bar.com","http://baz.com");
?>
<script>
var newArr = new Array("<?php echo implode(',' ,$arr); ?>");
</script>
答案 0 :(得分:2)
不。如果不在JS中编写项目,这是不可能的。
答案 1 :(得分:2)
Javascript可以通过AJAX请求读取数据,它不会显示在页面源代码中,但您可以使用任何半开发的Web开发人员工具集来查看它。
答案 2 :(得分:0)
如果不在JS中编写项目,就无法做到这一点。但是,如果您使用这些变量进行验证,则可以在服务器上传输该验证并使用AJAX调用该验证。
答案 3 :(得分:0)
我不认为这是可能的,但是根据您要做的事情,您可以在完成后从DOM中删除脚本元素,因此它不会出现在您的源代码中用户。 这种技术非常有用,例如在构建其他人将在其网站上包含的javascript块时。 javascript代码可以运行,当它完成后从DOM中删除它,以便其他人无法复制你的代码。
答案 4 :(得分:0)
如果您希望系统的某个组件不接触某些数据,请不要为其提供数据。
但是,如果浏览器无法获取数据,则也无法使用它。有一个两难的境地......
也许你想插入一个额外的间接:让你的PHP为javascript GUI提供一系列'command-url',让它触发这些命令,而不是让它知道你的敏感数据。
答案 5 :(得分:0)
直接不可能。 JavaScript代码被解释,因此没有机会隐藏它。
另一种方法是对文件进行ajax调用,这将调用项目。
如果你希望更多的安全性使2 GET调用获得一些信息,用js处理它并在第二次调用时使用它来获得你的数组。像“默默无闻”或“时间”的方法。从理论上讲,这将增加一些保护。
或者作为无人suggested你可以再次使用2 GET技术,并对数组中的数据进行二进制编码和解码。这将增加更多安全性。
答案 6 :(得分:0)
如果你想让网址不可读,你可以将每个字符编码为\ xnn转义序列:
<?php
$arr = array( "http://foo.com","http://bar.com","http://baz.com" );
$encodedArr = array();
foreach( $arr as $url ) {
$encodedUrl = '';
for( $i = 0; $i < strlen( $url ); ++$i ) {
$encodedUrl .= '\\x'.str_pad(
sprintf( '%x', ord( $url[$i] ) ),
2, STR_PAD_LEFT );
}
$encodedArr[] = '"'.$encodedUrl.'"';
}
?>
<script type="text/javascript">
var newArr = [ <?php echo implode(',' ,$encodedArr); ?> ];
alert( newArr[0] );
</script>
书面的javascript将如下所示:
var newArr = [ "\x68\x74\x74\x70\x3a\x2f\x2f\x66\x6f\x6f\x2e\x63\x6f\x6d","\x68\x74\x74\x70\x3a\x2f\x2f\x62\x61\x72\x2e\x63\x6f\x6d","\x68\x74\x74\x70\x3a\x2f\x2f\x62\x61\x7a\x2e\x63\x6f\x6d" ];
alert( newArr[0] );
但会提醒http://foo.com
答案 7 :(得分:-2)
使用JSON。
在PHP中,那就是:
<?php
$arr = array('http://[a]', 'http://[b]', 'http://[c]');
echo json_encode($arr);
JS中的:
<script type="text/javascript">
arr[0]; // http://[a]
arr.each(function(k,v){
v; // http://[a]
// loops trough the remaining values
});