我对视频url有一个问题。
我正在尝试制作视频上传。这是我的基本视频上传代码:
<?php
include_once '../includes.php';
if(isset($_POST['submit']))
{
$name = $_FILES['file']['name'];
$temp = $_FILES['file']['tmp_name'];
move_uploaded_file($temp,"uploaded/".$name);
$url = "http://localhost:8888/videouploadandplayback/uploaded/$name";
mysql_query("INSERT INTO `video` VALUE ('','$name','$url')");
}
?>
在此代码$url
部分是视频url。
watch.php
代码:
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM `video` WHERE id='$id'");
while($row = mysql_fetch_assoc($query))
{
$name = $row['name'];
$url = $row['url'];
}
echo "You are watching ".$name."<br />";
echo "<video id='my_video_1' class='video-js vjs-default-skin'
controls preload='none' width='640px' height='267px' data-setup='{}'>
<source src='$url' type='video/mp4' />
</video>";
}
else
{
echo "Error!";
}
?>
在此代码<source src='$url' type='video/mp4' />
部分显示如下:
<source src="http://localhost:8888/videouploadandplayback/uploaded/158382524199979_46659.mp4" type="video/mp4">
但是我想改变它,例如:
<source src="http://localhost:8888/videouploadandplayback/uploaded/x5Wa88Bq" type="video/mp4">
我如何以这种方式制作URL(如Youtube) ?
只需使用自动递增id来生成数据库条目,以确保每个上传的文件值唯一。
然后,您可以简单地将(十进制)id转换为具有另一个基数的字符串-并且您有 yououtbe -like-id:
$youtubeLikeId = base_convert($actual_id, 10, 35);
示例值:
$youtubeLikeId = base_convert(21122544, 10, 35); //returns e2mv9
要获得原始(代理)id,只需反向基本转换:
$actual_id = base_convert("e2mv9", 35,10); //returns 21122544
Sidenode: Youtube通过使用大写字母来增强转换。
首先,你在这里使用的代码是脆弱的。($_GET['id']
部分)您应该检查SQL注入并清理您的代码。最重要的是要注意安全。
我会首先为你的文件取一个独特的名字(看起来很酷,如果这是你想要的youtube风格)
你可以用任何你喜欢的方法来解决这个问题,这是我的一个非常简单的例子。
//if no errors
$name = $_FILES['file']['name'];//Our name
$temp = $_FILES['file']['tmp_name'];
$ext = pathinfo($name, PATHINFO_EXTENSION); //Get the extension before we make any changes.
$name =md5($name.microtime());//md5 of our name and microtime, this makes sure the encryption is random most of the time, because microtime is always changing.
$name = substr($name, 0,8); //Cutting off the part we don't need
move_uploaded_file($temp,"uploaded/".$name.'.'.$ext); //Storing out file
现在,让我们将其添加到数据库中。——>
+----+----------+------+
| id | name | ext |
+----+----------+------+
| x | x5Wa88Bq | .mp4 |
+----+----------+------+
我做这个数据库是假设你总是有一个相同的路径来上传,如果不是,那么你将不得不使用一个不同的解决方案。
//?Selecting from database by id, if no errors $name = $row['name'];
echo "You are watching ".$name."<br />";
echo "<video id='my_video_1' class='video-js vjs-default-skin'
controls preload='none' width='640px' height='267px' data-setup='{}'>
<source src='load.php?v=$name' type='video/mp4' /> </video>";
现在我们应该创建一个load.php文件,它实际上会指向我们的视频。
load.php ->
$v = $_GET['v']; //Sanitise first, don't use like this.
//Compare with database, if true get name and extension
$name = $row['name'];
$ext = $row['ext'];
$url = 'http://localhost:8888/videouploadandplayback/uploaded/';
if(!empty($v)){
header("location:"$url.$name.$ext."");
}
我们的load.php现在检查是否有一个具有特定名称的视频(例如x5Wa88Bq),因为该文件存在,它将其指向正确的目录。处理视频的代码意识到load.php?v=$name
指向视频(或不指向)并播放它(不指向)。
现在,如果你想做更多的"样式",你可以查看。htaccess指南。它将帮助你重写你的URL。希望你能输入
<source src='$name' type='video/mp4' />
欢呼。