在下载脚本中添加另一个URL

时间:2019-04-10 10:56:51

标签: php mod-rewrite

我有一个视频流网站,该网站还允许用户下载视频。这样会运行一个下载脚本,该脚本将视频ID加载到服务器上并启动直接文件传输。

现在,我想在其前面放置另一个URL,而不是直接进行文件传输。我试图制定一个mod_rewrite规则,但它会导致循环并永久重定向该URL。它是一种链接缩短服务,可以货币化。

那么,我该如何归档?是否可以使用mod_rewrite规则对其进行归档?

尝试使用mod_rewrite规则,意识到我无法在PHP中更改base_url变量,因为它不再找到该文件。

$vid   = intval($_GET['id']);
$label = intval($_GET['label']);

$sql = "SELECT * FROM video WHERE VID = ".$vid." LIMIT 1";
$rs = $conn->execute($sql); 
$formats = $rs->fields['formats'];
$server  = $rs->fields['server'];
$formats_arr = explode(',', $formats);

if ($server != '') {
    $sql = "SELECT * FROM video v, servers s WHERE v.VID = ".$vid." AND v.server = s.video_url LIMIT 1";
    $rs  = $conn->execute($sql); 
    $video_root = $rs->fields['video_url']; 
}
if (!$video_root) {
    $video_root = $config['BASE_DIR']."/media/videos";
}

foreach ($formats_arr as $format) {
    $f = explode('.', $format);
    if ($label == $f[1]) {
        if ($f[0] >= 481) {
            $condition = $new_permisions['hd_downloads'];
        } else {
            $condition = $new_permisions['sd_downloads'];           
        }
        $file = $video_root.'/h264/'.$vid.'_'.$f[1].'.'.$f[2];
        $file_name = $vid.'_'.$f[1].'.'.$f[2];
        break;
    }

}

if ($condition == 1) {
    ini_set('memory_limit', '-1');
    if (!$server) {
        if (file_exists($file) && is_file($file) && is_readable($file)) {
            $conn->execute("UPDATE video SET download_num = download_num+1 WHERE VID = ".$vid." LIMIT 1");
            @ob_end_clean();
            if(ini_get('zlib.output_compression')) {
                ini_set('zlib.output_compression', 'Off');
            }       
            header('Content-Type: application/force-download');
            header('Content-Disposition: attachment; filename="'.basename($file).'"');
            header('Content-Transfer-Encoding: binary');
            header('Accept-Ranges: bytes');
            header('Cache-control: private');
            header('Pragma: private');
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Content-Length: ' .filesize($file));             
            readfile($file);
            exit();
        } else {
            VRedirect::go($config['BASE_URL']. '/error');
        }
    } else {
            $conn->execute("UPDATE video SET download_num = download_num+1 WHERE VID = ".$vid." LIMIT 1");
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($file));
            header('Content-Transfer-Encoding: chunked'); 
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Pragma: public');

            $stream = fopen('php://output', 'w');

            $ch = curl_init($file);
            curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) {
                return fwrite($stream, fread($fd, $length));
            });

下载按钮应打开URL / download.php,并在其前面带有我的链接缩短器URL,以便它将加载并重定向到文件下载URL。

0 个答案:

没有答案