PHP到Javascript,数组到数组,对象到对象

时间:2010-02-28 09:14:36

标签: php javascript arrays object

我的PHP脚本中有一个图像路径列表,我希望将其传递给javascript whitout,在HTML页面中呈现它们。我的意思是,我不希望人们去钓鱼的时候做一个>查看HTML源代码。

<?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 个答案:

答案 0 :(得分:2)

  我不希望别人去钓鱼   路径何时做&gt;查看HTML源代码

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

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


更新:

以下是通过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
        }
    });
});

答案 1 :(得分:0)

很抱歉告诉你但你别无选择。如果您希望JavaScript使用您的阵列,您必须将其传递给客户端,这意味着高级用户将能够看到它。没有办法。

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

如果JavaScript代码可见,则用户可以看到,期间。