2017-03-15 67 views
0
<html> 
    <head> 
     <!-- SCRIPTS --> 
     <script type="text/javascript" src="scripts/controller.js"></script> 
     <!-- STYLES --> 
     <link href="styles/style.css" rel="stylesheet" type="text/css" /> 
    </head> 
    <body> 
    <?php 

    $errUrl = $videoId = ""; 
    $start = $end = 0; 

    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     print_r($_POST); 
     if (isset($_POST["yt_url"])) { 
      echo "hello2"; 
      $videoId = youtube_parser($_POST['yt_url']); 
     } 
     if (!$videoId) { 
      $errUrl = "URL is not valid!"; 
      $videoId = ""; 
     } else { 
      $errUrl = ""; 
     } 
     //$start = $_POST['startH'] * 3600 + $_POST['startM'] * 60 + $_POST['startS'] * 1; 
     //$end = $_POST['endH'] * 3600 + $_POST['endM'] * 60 + $_POST['endS'] * 1; 
    } 

    function youtube_parser($url) { 
     $regExp = '/^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$/'; 
     $match = preg_match($regExp, $url, $matches); 
     return ($match && strlen($matches[5]) === 11)? $matches[5] : false; 
    } 

    function test_input($data) { 
     $data = trim($data); 
     $data = stripslashes($data); 
     $data = htmlspecialchars($data); 
     return $data; 
    } 
    ?> 
     <div class="left"> 
      <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
       <span class="error">* <?php echo $errUrl; ?></span><br> 
       URL: <input type="text" name="yt_url"> 
       <br><br> 
       Start Time:<br> 
       <span class="label">Hour: </span><input value="0" type="number" name="start_h"><br> 
       <span class="label">Minute: </span><input value="0" type="number" name="start_m"><br> 
       <span class="label">Second: </span><input value="0" type="number" name="start_s"> 
       <br><br> 
       End Time:<br> 
       <span class="label">Hour: </span><input value="0" type="number" name="end_h"><br> 
       <span class="label">Minute: </span><input value="0" type="number" name="end_m"><br> 
       <span class="label">Second: </span><input value="0" type="number" name="end_s"> 
       <br><br> 
       <input type="submit" name="submit" value="Submit"> 
      </form> 
     </div> 
     <div class="player"><?php 
      if (isset($videoId) && !empty($videoId)) { 
       echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/$videoId?start=$start&end=$end" frameborder="0" allowfullscreen></iframe>'; 
      } 
      ?></div> 
    </body> 
</html> 

以上是我目前为止所做的。我正在尝试学习php,并且我一直在通过关于w3schools的教程来了解关于使用表单的部分,并且没有任何信息在$ _POST数组中传递,我为所有DOM设置了名称控制。任何有识之士将不胜感激!我有一种感觉,即使所提供的示例不起作用,我的PHP安装程序也有问题。

附加信息: 通过Intellij PHPStorm运行的Web服务器。 PHP版本是7.0.9

Screenshot of product

+0

显示HTML表单 –

+0

尝试使用'isset($ _ POST [ '提交'])''超过$ _ SERVER [ “REQUEST_METHOD”] == “POST”' – Swellar

+0

@MarcinOrlowski有在文章底部链接为输出。 –

回答

0

你的代码看起来有效,当我尝试过它显示了预期从$_POST阵列输出: enter image description here

因此,它看起来就像你与你的环境是问题测试它。

BTW <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
是错误的。除了意大利面代码,你不应该在这里使用htmlspecialchars(),而是urlencode() (但我不会使用_SERVER['PHP_SELF']不能被客户端欺骗)。

另外,作为@CarlJan建议您可能需要使用isset($_POST['submit'])检查,如果您的形式,因为这样会条件提交,如果你的submit按钮通过POST发送才会是真实的。现在你正在检查这是否是POST请求(一般情况下),但它不同于它可以从其他表单发布或手动触发。

+0

好吧,那么为什么$ _POST数组在我的结尾将是空的任何想法? –

+0

似乎与JetBrains在PHPStorm中运行它有关系 –

+0

这不是你的代码问题。也许运行环境?上传您的脚本到任何托管和尝试。为了进一步发展,我推荐使用基于Vagrant的虚拟机,而不是半内置的IDE解决方案或XMMP等。 –