Авторизация с сохранением сессии в майл ру php
function base64url_encode($s) {
return str_replace(array('+', '/'), array('-', '_'), base64_encode($s));
}
function base64url_decode($s) {
return base64_decode(str_replace(array('-', '_'), array('+', '/'), $s));
}
function remoteFilesize($url) {
$head = get_headers($url, 1);
print_r($head);
return isset($head['Content-Length']) ? $head['Content-Length'] : "unknown";
}
$link = $_REQUEST['mplay'];
$link = base64url_decode($link);
$size = remoteFilesize($link);
stream($link, 'audio/mpeg');
function stream($file, $content_type = 'application/octet-stream') {
global $size;
@error_reporting(0);
$filesize = $size;
if(isset($_SERVER['HTTP_RANGE'])){
$range = $_SERVER['HTTP_RANGE'];
}elseif($apache = apache_request_headers()){
$headers = array();
foreach ($apache as $header => $val){
$headers[strtolower($header)] = $val;
}
if(isset($headers['range'])){
$range = $headers['range'];
}
else $range = FALSE;
} else $range = FALSE;
if($range){
$partial = true;
list($param, $range) = explode('=',$range);
if(strtolower(trim($param)) != 'bytes'){
header("HTTP/1.1 400 Invalid Request");
exit;
}
$range = explode(',',$range);
$range = explode('-',$range[0]);
if ($range[0] === ''){
$end = $filesize - 1;
$start = $end - intval($range[0]);
} else if ($range[1] === '') {
$start = intval($range[0]);
$end = $filesize - 1;
}else{
$start = intval($range[0]);
$end = intval($range[1]);
if ($end >= $filesize || (!$start && (!$end || $end == ($filesize - 1)))) $partial = false;
}
$length = $end - $start + 1;
} else $partial = false;
header("Content-Type: $content_type");
header("Content-Length: $filesize");
header('Accept-Ranges: bytes');
header("Content-Disposition: attachment; filename=\"stream.mp3\"");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
if ($range) {
curl_setopt($ch, CURLOPT_RANGE, $range . '-' . $size);
}
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
if ($partial) {
header('HTTP/1.1 206 Partial Content');
header("Content-Range: bytes $start-$end/$filesize");
if ($start) stream_get_contents($fp, 0, $start);
while($length){
set_time_limit(0);
$read = ($length > 8192) ? 8192 : $length;
$length -= $read;
print(fread($fp,$read));
}
fclose($fp);
}
else readfile($file);
exit;
}
?>
Парсер получает ссылку и передает в ретранслятор в виде https://site.ru/mplay.php?mplay=aHR0cHM6Ly9tb29zaWMubXkubWFpbC5ydS9maWxlL2ZjNWJiODA0NWY4ZDNiNTM2YTRhNjVlOTNhOWI3NjUzLm1wMw==
Но скачивание и прослушивание доступно для авторизированных пользователей Mail.ru
Нужно что бы ретранслятор авторизовался перед отдачей файла и хранил куки сессии дабы каждый раз не авторизоваться