【问题标题】:PHP exec load and execute individual URL from XML dataPHP exec 从 XML 数据加载和执行单个 URL
【发布时间】:2021-03-03 16:31:41
【问题描述】:

我在尝试使用从 XML 加载的每个单独的 URL 执行命令时遇到问题,每次按下按钮时都会加载相同的 URL。

XML

<?xml version="1.0" encoding="utf-8"?>
<data>
  <channels>
    <banner>https://yt3.ggpht.com/ytc/AAUvwnhiSj68Il28UVufce2uB4FGuMFMjsgdnZWtEES1N1c=s88-c-k-c0xffffffff-no-rj-mo</banner>
    <url>https://www.youtube.com/channel/UCoMdktPbSTixAyNGwb-UYkQ/live</url>
  </channels>
  <channels>
    <banner>https://yt3.ggpht.com/ytc/AAUvwnjes9QiTK0Sv-6jI-TW-pjwqG4HhexOh2R3br0lrus=s88-c-k-c0xffffffff-no-rj-mo</banner>
    <url>https://www.youtube.com/channel/UCeY0bbntWzzVIaj2z3QigXg/live</url>
  </channels>
  <channels>
    <banner>https://yt3.ggpht.com/ytc/AAUvwnjQUqXvG-C_hEeRySPaaGMS1REtGd05a9RSLwIj7xc=s88-c-k-c0xffffffff-no-rj-mo</banner>
    <url>https://www.youtube.com/channel/UCNye-wNBqNL5ZzHSJj3l8Bg/live</url>
  </channels>
</data>

PHP

<?php
echo"<div class='container'>";
$xml = simplexml_load_file('channels.xml') or die('Failed to read data');
foreach ( $xml->channels as $channelsElement ) {
echo "<img class='responsive' src='";
echo $channelsElement->banner;
echo "'><br>";
echo "<form method='post' action='index.php'>";
echo "<input type='hidden' type='text' name='url' value='";
echo $channelsElement->url;
echo "'><br>";
echo "<input id='wrapper' type='submit' name='submit' value='PLAY CHANNEL'>";
echo "<br>";
echo"</div>";
}
?>
<?php
if(isset($_POST['url'])) {
    shell_exec("sudo killall vlc");
    shell_exec("sudo killall omxplayer.bin");
    shell_exec("sudo omxplayer `youtube-dl -g ".($_POST['url'])." ` >> /dev/null &");
}
?>

【问题讨论】:

    标签: php html shell shell-exec


    【解决方案1】:

    您做错了什么是您制作了 3 个没有 id 的表单,它使每个提交按钮都将所有 URL 发送到后端。将增量 id 形成.. 下面的代码有效。

    
    <?php ?>
        <div class='container'>
    
            <?php
            $xml = simplexml_load_file( 'channels.xml' ) or die( 'Failed to read data' );
            $i = 0;
    
    
            foreach ( $xml->channels as $channelsElement ):
                ?>
    
                <img class='responsive' src='<?= $channelsElement->banner ?>'><br>
                <form method='post' action='index.php' id=form-<?= $i ?> >
                    <input type='hidden' type='text' name='url' value='<?= $channelsElement->url ?>'><br>
                    <input id='wrapper' type='submit' name='submit' value='PLAY CHANNEL'>
                </form>
                <br>
    
                <?php
                $i ++;
            endforeach;
            ?>
        </div>
    
    <?php
    if ( isset( $_POST['url'] ) ) {
        echo $_POST['url'];
        shell_exec( "sudo killall vlc" );
        shell_exec( "sudo killall omxplayer.bin" );
        shell_exec( "sudo omxplayer `youtube-dl -g " . ( $_POST['url'] ) . " ` >> /dev/null &" );
    }
    ?>
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      相关资源
      最近更新 更多