2012-11-03 4 views
2

나는 웹 사이트를 가지고 있으며, YouTube 비디오 링크를 게시 할 수 있으며, 그렇게하면 ID (11 자)를 가져 와서 데이터베이스에 저장합니다 . 그런 다음 페이지에서 동영상을 볼 수 있으며 http://gdata.youtube.com/feeds/api/videos/ID으로 YouTube 제목과 저자를 가져와 소스 코드가 포함 된 페이지에 삽입합니다. 개인 비디오 링크를 게시하지 못하게하는 방법을 알고 싶습니다. 내가 할 수있는 특정 수표가있을 수도 있습니다.사람들이 비공개 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'; 
} 

을 그리고 그것의 앞에 @을 넣어 그래서 그것을로드 할 수 없습니다 때 제공하는 모든 오류를 표시 할 것입니다 :)

앞으로 도움이되기를 바랍니다.

1

http://gdata.youtube.com/feeds/api/videos/ID이 "비공개 동영상"과 동일한 지 확인하여 반환 할 내용을 확인하십시오.

존재하지 않으면 "비디오를 찾을 수 없음"이 반환됩니다.

편집 : 또한 잘못된 ID 일 경우 "잘못된 ID"가 반환됩니다.

관련 문제