2010-02-28 78 views
0

我有我的PHP脚本中的图像路径的列表,我想传递给JavaScript在HTML页面中呈现它们。我的意思是,我不希望人们在做a>查看HTML源代码时去钓鱼。PHP到Javascript,数组到阵列,对象到对象

<?php 
    $images_str = "some/dir/001.jpg|*|some/dir/002.jpg|*|some/dir/003.jpg"; 
    $images_arr = array('some/dir/001.jpg', 'some/dir/002.jpg', 'some/dir/003.jpg'); 
?> 
<html> 
<body> 
    <script type="text/javascript"> 

     var dynamicID = 1; 

     /* String */ 
     _images_str = "<?= $images_str ?>"; 
     _images_str_arr = _images_str.split("|*|"); 

     // alert(_images_str_arr[dynamicID]); // OK but renders the image paths in javascript 

     /* Array */ 
     var _images_arr = new Array(); 
     _images_arr = "<?= $images_arr ?>"; 

     // alert("<?= $images_arr ?>"); // "Array" 
     // alert(_images_arr); // "Array" 

     // alert(_images_arr[1]); // "r" from "Array" 
     // alert("<?= $images_arr[1] ?>"); // "some/dir/002.jpg" works! but how to use dynamicID?? 

     // alert("<?= count($images_arr) ?>"); // works as well 

    </script> 
</body> 
</html> 

回答

2

我不希望人们去钓鱼 路径的时候就做了>查看HTML源

你打算在你的JavaScript这些图片的路径呢?如果最终目标是将它们用作img标签的来源,那么您完全可以不做任何事情来隐藏它们,因为诸如Firebug之类的工具将直接显示浏览器执行的所有HTTP请求,所以甚至不需要查看HTML页面的来源以获取图像路径。

如果您打算使用这些路径(??)做其他事情,您可以使用公钥/私钥加密算法。例如,您在javascript中生成一对私钥/公钥,并使用ajax将公钥发送到您的服务器脚本。该脚本使用此公钥对图像路径进行加密,并将其作为JSON数组返回给使用私钥解密它们的客户端脚本。


UPDATE:

这里是通过AJAX发送的路径列表中的一个例子:

<?php 
    header('Content-Type: application/json; charset=utf-8'); 
    $images_arr = array('some/dir/001.jpg', 'some/dir/002.jpg', 'some/dir/003.jpg'); 
    echo json_encode($images_arr); 
?> 

,你获得他们的javascript:

$(function() { 
    $.getJSON('/script.php', function(data) { 
     for (var x = 0; x < length; x += 1) { 
      var imageUrl = data[x]; 
      // do something with this image url 
     } 
    }); 
}); 
+0

我在jQuery照片应用程序中使用这些路径 我只是不想让普通的Joe在我的源代码中查看并在Javascript中看到.jpg路径,并且想:“嘿,它们是” – FFish

+0

在这种情况下通过AJAX请求从服务器获取它们。 –

+0

AJAX,好的,你能给我一些关键词来开始寻找这个达林吗?我使用jQuery btw。 – FFish

0

对不起告诉你,但你别无选择。如果你想让JavaScript使用你的数组,你必须将它传递给客户端,这意味着高级用户将能够看到它。没有办法。

您可以对其进行编码,但不会针对JavaScript调试器。

如果它对于JavaScript代码可见,则它对用户,期间可见。

+0

我对高级用户不感兴趣,只是看看源代码并看到.jpg扩展名的普通用户 – FFish

+0

@FFish,普通人会右键点击图片和“复制链接位置”。它也不会拯救你。 – vava

+0

我禁用了右键单击图像与jQuery: \t \t \t \t $(“#myImage”)。绑定( “文本菜单”,函数(E){ \t \t \t \t \t返回假; \t \t \t \t}); – FFish