【问题标题】:jw player does not work when passing data through variable PHP通过变量 PHP 传递数据时 jw 播放器不起作用
【发布时间】:2021-02-28 21:07:42
【问题描述】:

当我从 HLS 文件的 URL 传递数据时,播放器停止工作,就好像它不存在一样:

<?php
    $url = $_GET['player'];
?>
<!DOCTYPE html>
<html>
<head>
    <title>Player HLS</title>
    <script src="https://jwpsrv.com/library/FfMxTl3oEeSEiiIACxmInQ.js"></script>
</head>
<body>

    <div id="aRzklaXf">Loading the player...</div>
    <script type="text/javascript">
        //var urlplay = "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/dcgmsy35q.m3u8?s=qm3aTTYK9EvvG8aHlbOGMg&e=1614565195";
        var urlplay = "<?php echo $url; ?>";
        var playerInstance = jwplayer("aRzklaXf");
        playerInstance.setup({
            //"file": "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/dcgmsy35q.m3u8?s=qm3aTTYK9EvvG8aHlbOGMg&e=1614565195",
            "file": urlplay,
            "height":"560",
            "width":"50%",
            stretching: "bestfit",
            "image": "#",
            "mediaid": "player",
            "mute": false,
            "autostart": false,
            "cast": {
                "appid": "player",
                "logo": "https://i.ibb.co/Tgk2YrC/Logo.png",
            },
        });
    </script>   

    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
</body>

但如果我用这个var urlplay = "&lt;?php echo $ulr; ?&gt;"; 替换这个var urlplay = "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/dcgmsy35q.m3u8?s=qm3aTTYK9EvvG8aHlbOGMg&amp;e=1614565195"; 它就可以了

为什么会这样,为什么不起作用?因为它是通过直接添加路由来工作的,而且不是手动使用 PHP 中使用的方法。

【问题讨论】:

  • 您可以使用此代码进行 XSS 注入。 $url 需要编码

标签: javascript php jwplayer


【解决方案1】:

我认为罪魁祸首是一个小错字$url vs $ulr

($url = $_GET['player'];var urlplay = "&lt;?php echo $ulr; ?&gt;";)

:)

【讨论】:

  • 我已经改正了,但是还是不行,我已经查看源代码添加了HLS文件的路径,但是还是不行。
  • 再看页面源码,$_GET['player']的值是多少?
  • 这就是我最后没有打印出来的&amp;e=1614565195,因为我这样做是为了避免&amp; 导致我出现那个错误。
  • 对...所以你的文件名是一个获取参数,但文件名本身包含一个获取参数。当您打印$_GET['e'] 时,您可能会看到:“1614565195”。您对作为 get 参数发送的内容有任何影响吗?然后您可以对其进行编码并再次解码,因此保留了获取参数。否则尝试设置&lt;?php $url = $_GET['player'].'?e='.$_GET['e']; ?&gt;
【解决方案2】:

取决于 $_GET['player'] 得到什么。你需要看看 $_GET['player'] 是什么,然后像这样填写 url。

<script type="text/javascript">
    //var urlplay = "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/dcgmsy35q.m3u8?s=qm3aTTYK9EvvG8aHlbOGMg&e=1614565195";
    var urlplay = "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/<?php echo $ulr; ?>";
    var playerInstance = jwplayer("aRzklaXf");
    playerInstance.setup({
        //"file": "https://c6d34z8w3zavhqt3.ezcdn483.net:8443/hls/dcgmsy35q.m3u8?s=qm3aTTYK9EvvG8aHlbOGMg&e=1614565195",
        "file": urlplay,
        "height":"560",
        "width":"50%",
        stretching: "bestfit",
        "image": "#",
        "mediaid": "player",
        "mute": false,
        "autostart": false,
        "cast": {
            "appid": "player",
            "logo": "https://i.ibb.co/Tgk2YrC/Logo.png",
        },
    });
</script>

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2018-06-20
    • 2021-11-16
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多