2017-03-15 117 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等。 –