2

私は Web サイトを持っており、そこに YouTube ビデオのリンクを投稿できます。投稿すると、そこから ID (11 文字) が取得され、データベースに格納されます。次に、ページでビデオを表示すると、YouTube のタイトルと作成者がhttp://gdata.youtube.com/feeds/api/videos/ IDで取得され、埋め込みコードを含むページに配置されます。プライベート ビデオ リンクの投稿を許可しない方法を知りたいです。たとえば、私にできる特定のチェックがあるかもしれません。これは、リンクを投稿するためにこれまでに持っているものです。

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>";
        }
}

彼らが非公開の動画を投稿できないように、そこに入れることができる小切手はありますか?

4

3 に答える 3

1

http://gdata.youtube.com/feeds/api/videos/IDが「プライベート ビデオ」と等しいかどうかを確認してください。これが返されるものです。

存在しない場合は「Video not found」を返します。

編集:また、不適切なIDの場合は「無効なID」を返します。

于 2012-11-03T05:24:00.917 に答える
0

私はそれを理解しました(この質問を投稿してから長い時間が経ち、理解してからしばらく経ちましたが、答えるべきだと思いました)、ロードできるかどうかを確認するだけで済みました次のように、ブール値を含むファイル:

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

そして、@を前に付けて、ロードできないときに発生するすべてのエラーを表示しないようにします:)

これが将来誰かを助けることを願っています!

于 2012-11-27T02:32:15.390 に答える
0

YouTube の API に飛び込みます。PHP を使用して YouTube に動画が存在するかどうかを確認するにはどうすればよいですか? をご覧ください

ビデオが非公開の場合、API はビデオが存在しない場合と同じように応答する必要があると想定しています。しかし、そのリンクは間違いなく役立つはずです。

于 2012-11-03T02:57:08.187 に答える