2012-11-03 63 views
2

我有一個網站,並在其上可以發佈YouTube視頻鏈接,當你這樣做時,它從它(11個字符)獲取ID並將其放入數據庫。然後,您可以在一個頁面上查看視頻,並獲得YouTube標題和作者http://gdata.youtube.com/feeds/api/videos/ID,並將其放到帶有嵌入代碼的頁面上。我想知道如何不讓他們發佈私人視頻鏈接,就像我可以做某些檢查一樣。這是我迄今爲止張貼鏈接:不允許別人發佈私人YouTube視頻鏈接

if(isset($_POST['video'])){ 
    $error = array(); 
    if(filter_var($_POST['videourl'], FILTER_VALIDATE_URL) !== false){ 
    if(strpos($_POST['videourl'],'youtube.com')){ 
     preg_match('/[\\?\\&]v=([^\\?\\&]+)/',$_POST['videourl'],$video_embed); 
     $video_embed = $video_embed[1]; 
    }elseif(strpos($_POST['videourl'],'youtu.be')){ 
     $video_embed = substr(parse_url($_POST['videourl'], PHP_URL_PATH), 1); 
    }else{ 
     $error[] = 'Invalid link'; 
    } 
    }else{ 
    $error[] = 'Invalid link'; 
    } 
    $video_exist = mysql_num_rows(mysql_query("SELECT interest_vid FROM interest_videos WHERE interest_vid = '$video_embed'")); 
    $interest_exist = mysql_query("SELECT name FROM interests WHERE name = '".$_POST['interest_for_video']."'"); 
    if(!empty($_POST['interest_for_video']) && mysql_num_rows($interest_exist) != 0){ 
    $interest = strtolower(mysql_real_escape_string(strip_tags($_POST['interest_for_video']))); 
    $interest_id = mysql_result(mysql_query("SELECT id FROM interests WHERE name = '$interest'"), 0); 
    }else{ 
    $error[] = 'Must specify an interest. '; 
    } 
     if(empty($error)){ 
     if($video_exist == 0){ 
      $result2 = mysql_query(" INSERT INTO interest_videos (user_id,interest_id,interest_vid) VALUES ('".$_SESSION['id']."','$interest_id','$video_embed')") or die(mysql_error()); 
      if(!$result2){ 
       die('Could not delete from database: '.mysql_error()); 
      }else{ 
       //$error_message = '<a href="#" onclick="toggle2(\'deletewebsite\', this); return false;"><div id="deletewebsite" class="success">Video Created</div></a>'; 
       header("Location: /interest/video.php?interest=".$interest_id."&video=".$video_embed.""); 
      } 
     }else{ 
      $error_message = '<a href="#" onclick="toggle2(\'deletewebsite\', this); return false;"><div id="deletewebsite" class="error">That video already exists</div></a>'; 
     } 
     }else{ 
     $error_message = '<a href="#" onclick="toggle2(\'deletewebsite\', this); return false;"><div id="deletewebsite" class="error">'; 
     foreach($error as $key => $values){ 
      $error_message.= "$values"; 
     } 
     $error_message.="</div></a>"; 
     } 
} 

有沒有辦法,我可以把在那裏,使他們不能發佈私人視頻支票?

回答

0

我想通了(我發佈這個問題已經很長時間了,而且我已經弄清了這個問題已經有一段時間了,但我認爲我應該回答它),而我所要做的就是檢查如果它可以加載與布爾的文件,像這樣:

if(@DOMDocument::load("http://gdata.youtube.com/feeds/api/videos/".$video_embed) === false){ 
    $error[] = 'Invalid video'; 
} 

我把@在它前面,所以它不會顯示所有的錯誤它給當它不能加載它:)

希望這將有助於未來的人!