0

我正在为我的学校做一个项目。

这是一个页面源查看器,但我遇到了一个问题..

使用谷歌浏览器,我得到这个错误:Uncaught SyntaxError: Unexpected token : main.php:10

HTML

<html>
    <head>
        <title>Codeview - See how your code turns out!</title>
        <link rel="stylesheet" type="text/css" href="style.css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <script>
        var url = <?php echo "$url"; ?>
        var oReq = new XMLHttpRequest();
            oReq.open("GET", url, true);
            console.log(oReq.response);
        </script>
        <div id="header">
            <h2>Codeview</h2>
        </div>
        <div id="main">
            <br>
            <h3>Code of <?php  echo $url;?>:</h3>
            <hr>
            <div id="code">
            </div>
            <iframe id="Code" class="code"></iframe>
        </div>
        </body>
</html>

PHP

<?php
function contains($needle, $haystack)
{
    return strpos($haystack, $needle) !== true;
}
$url = $_POST['url'];

if (strpos($url, "http://") !== false) {
$url = $url;
} else {
$url = "http://" . $url;
}

?>

我在代码的第 10 行的任何地方都找不到冒号 (:)。

我究竟做错了什么?

4

6 回答 6

9

这个:var url = <?php echo "$url"; ?>

将输出如下内容:

var url = http://example.com

JavaScript 中的字符串需要被引用。您也容易受到 XSS 攻击。

用于json_encode将 PHP 字符串转换为 JavaScript 字符串。

不依赖分号插入也是一个好习惯。

var url = <?php echo json_encode("$url"); ?>;
于 2013-11-04T15:44:46.603 回答
2

您需要在 JavaScript 中为字符串加上引号。

var url = <?php echo "$url"; ?>

这呈现为:

var url = http://google.com

那是语法错误!尝试这个:

var url = <?php echo json_encode($url); ?>;

这将为您添加引号。

于 2013-11-04T15:45:24.350 回答
1

打印到 JS 代码中的变量声明时需要使用引号:

var url = "<?php echo $url; ?>";

但不要使用此代码!它容易受到跨站点脚本攻击。要在 javascript 上下文中转义 URL,请使用json_encode

var url = <?php echo json_encode($url); ?>;   /* this one is safe */
于 2013-11-04T15:45:02.117 回答
1

作为第一步,您应该在 js var 中添加引号

var url = '<?php echo "$url"; ?>';
于 2013-11-04T15:46:37.530 回答
1

改变这个:

var url = <?php echo "$url"; ?>

对此:

var url = '<?php echo "$url"; ?>';
于 2013-11-04T15:47:02.973 回答
-2

尝试在这一行的末尾添加一个分号,并将 PHP 代码用引号括起来:

var url = "<?php echo "$url"; ?>";
于 2013-11-04T15:44:16.577 回答