PHP脚本发送视频后返回原始页面

PHP脚本发送视频后返回原始页面,php,html,html5-video,Php,Html,Html5 Video,有没有办法在视频播放完毕后跳回原始页面? 我用HTML从链接到视频调用PHP ... <a href="play.php">My Video ... 。。。 我的视频 ... 并且play.php会发回视频 像这样: <?php $CTYP= 'video/mp4'; $VidPath = "../MyVideo.mp4"; header('Content-Type: ' . $CTYP); $VidFl = fopen($Vid

有没有办法在视频播放完毕后跳回原始页面? 我用HTML从链接到视频调用PHP

...
<a href="play.php">My Video
...
。。。
我的视频
...
并且play.php会发回视频 像这样:

<?php
$CTYP= 'video/mp4';
$VidPath = "../MyVideo.mp4";  
header('Content-Type: ' . $CTYP);
$VidFl = fopen($VidPath, "rb");
$VidContent = fread($VidFl, filesize($VidPath));
fclose($VidFl);
echo $VidContent; 
?>


感谢一个更新,基于我收到的反馈,我更新了php脚本以发送回标签并打开新页面,并在视频结束后使用事件(vid.oned)转到上一页。 因此,对于任何有类似问题的人,这里有更新的代码 index.html

...
<a href="play.php">My Video
...
。。。
我的视频
...
我的play.php文件如下

<?php
$VidPath = "../MyVideo.mp4";  
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
  <link rel="stylesheet" href="video.css" media="screen,print" />'
<title>Test Video play list</title>
<meta charset="utf-8" />
</head>
<body>
<video id="MyVideo" height="auto" width="auto" controls autoplay > <source src=<?php echo $VidPath; ?> type="video/mp4"> </video>
<script>
  var vid = document.getElementById("MyVideo"); 
  vid.onended = function() { 
    history.back(); 
  }; 
</script>
</body>
</html>

'
测试视频播放列表

最终更新对于任何有类似问题的人来说,它现在是基于建议修改的原始方法的工作版本(可能应该仔细阅读以避免绕过解决方案:)

所以index.html带有标记

。。。。
第101课。。。。
第102讲。。。。
....
play.php像最初一样将流返回到href链接标签

<?php
include 'dblog.php';
if ( ($_SERVER['REQUEST_METHOD'] === "GET")
     && ( isset($_GET['play_video']) ) ) {
  if ($_GET['play_video'] == "101")  {
    $file_path_name = "../../DVD/Lecture-101.mp4";
  } elseif ($_GET['play_video'] == "102") {
    $file_path_name = "../../DVD/Lecture-102.mp4";
  }
  $ctype= 'video/mp4';
  header('Content-Type: ' . $ctype);
  $handle = fopen($file_path_name, "rb");
  $contents = fread($handle, filesize($file_path_name));
  fclose($handle);
  write_vid_log($_GET['play_video'], $DB, 'start');
  echo $contents; 
} else {
  echo "alert(I'm Sorry wrong link)";
}
?>

不是您这样做的,因为您实际上只是直接显示视频文件。此时浏览器将接管。也许在某些浏览器中,它甚至不会显示,只是下载。相反,您必须显示一个嵌入视频的HTML页面,并使用一些JavaScript检测视频的结尾,然后让浏览器按照建议返回,创建一个HTML页面并使用
video
标记。在那里,您可以订阅在播放视频后触发的活动。感谢Markus和ADyson,看起来更好的选择是使用视频标签。虽然在这种情况下,视频已经占据了页面的空间,而且在许多视频的情况下,网页会被填满。我更希望有链接,点击它会在Lightbox中理想地打开,你仍然可以有一个指向页面的链接,然后页面上只有一个视频!或者是的,您可以使用lightbox,然后在视频结束后关闭lightbox。嗨,ADyson,请给我演示在lightbox中打开然后关闭它的示例。如果您想指定站点根目录之外的文件,使视频标记的
src=
指向一个PHP脚本,该脚本的功能与问题中的原始“play.PHP”类似,只是它需要一个ID或文件名作为输入(例如
src=“getvideo.PHP?file=123.mp4”
),并使用它来决定返回哪个确切的文件内容。如果您让它接受文件名而不是ID,请确保它经过消毒且安全,并且不能用于从您希望允许的位置之外拉取文件。就我个人而言,我会将视频路径的记录存储在数据库中,并让脚本在其中查找。自动播放由用户自行决定。你不能强迫这样做(谢天谢地,考虑到所有这些可怕的视频广告,否则我们会得到)。不同的浏览器以细微不同的方式实现它,但它们都发布了关于它如何工作的信息。
在与我的index.html相同的页面中播放视频,看起来像lightbox efect
…这是一个全新的问题。我尝试在索引html中添加\tag,如:
和play.php提供的返回路径,但它不起作用。显示“不支持视频格式”,我计划将所有文件路径放在mysql表中,但我需要先让它直接工作。我在任何情况下实现数据库都是为了检查用户名,看看他们是否能够观看视频。这很好。很高兴你让它工作了。我喜欢你如何将挑战分解为不同的步骤,并在处理下一步之前让小部分工作。这是一个很好的方法,对程序员来说是有效的。我看到太多人将他们的整个应用程序视为一个巨大的模块,不同的部分无法单独测试。因此,你正在以一种良好的方式做事情……祝项目的其余部分好运。如果需要的话,请带着新问题回到这里,关于下一步的问题。
<?php
include 'dblog.php';
if ( ($_SERVER['REQUEST_METHOD'] === "GET")
     && ( isset($_GET['play_video']) ) ) {
  if ($_GET['play_video'] == "101")  {
    $file_path_name = "../../DVD/Lecture-101.mp4";
  } elseif ($_GET['play_video'] == "102") {
    $file_path_name = "../../DVD/Lecture-102.mp4";
  }
  $ctype= 'video/mp4';
  header('Content-Type: ' . $ctype);
  $handle = fopen($file_path_name, "rb");
  $contents = fread($handle, filesize($file_path_name));
  fclose($handle);
  write_vid_log($_GET['play_video'], $DB, 'start');
  echo $contents; 
} else {
  echo "alert(I'm Sorry wrong link)";
}
?>