Ответы пользователя по тегу Аудио
  • Какой html5 аудиоплеер выбрать, чтобы умел скрывать источник проигрывания?

    @omichkun Автор вопроса
    В общем, разобрался сам.
    На всякий случай на будущее отвечу сам.
    Если кратко - необходимо создать файл php, подставить туда необходимые заголовки и прочитать из него нужный аудиофайл. Нужный файл возьмётся из сессии или гет-переменной (кому как удобнее).

    В простейшем виде это будет выглядеть примерно вот так:

    <?php
    //стартуем сессию, чтобы работали сессионные переменные
    session_start();
    
    //ниже классы для подключения к базе и запроса нужной инфы из неё (путь к файлу и имя файла)
    class DB extends PDO
    {
    	public $dsn = 'mysql:host=127.0.0.1;dbname=database';
    	public $user= 'root';
    	public $pass= 'password';
    	public $opt = array(PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,PDO::ATTR_EMULATE_PREPARES=>false);
    	public function __construct()
    	{
    		parent::__construct($this->dsn, $this->user, $this->pass);
    		parent::exec("SET NAMES utf8");
    	}
    }
    
    
    class Connect{
            private static $instance=null;
            private function __construct() {}
            private function __clone() {}
            public static function run() {
                if (self::$instance == NULL) {
                            self::$instance = new DB();
                            }
                    return self::$instance;
            }
            final public function __destruct() {
                self::$_instance = null;
            }
    }
    
    class Data{
    		var $path;
    		var $filename;
    
    
    function getDataByID($id){
    			$pdo = Connect::run();
    			$query = $pdo->prepare("SELECT * FROM data WHERE id = ? LIMIT 1");
    			$query->execute(array($id));
    			$count = $query->rowCount();
    			if($count>0){
    				$row = $query->fetch();
    				$this->path = $row['file_path'];
    				$this->filename= $row['filename'];
    				return true;
    			}
    			else{
    				return false;
    			}
    		}
    }
    	
    //проверяем наличие сессионной переменной
    	if (isset($_SESSION['id']) && !empty($_SESSION['id'])){
    		$data= new Data;
    		$data->getDataByID($_SESSION['id']);
    		
    		
    		$file = $data->path.'/'.$data->filename; //вставляем полученные из БД данные 
    		if (file_exists($file)) { //проверяем наличие файла 
    				header("Content-Transfer-Encoding: binary"); 
    				header('Content-Length: '. (string)filesize($file)); // пишем размер файла
    				header('Content-type: audio/wav');
    				header('Cache-Control: no-cache');
    				readfile($file);
    				exit;
    		}
    }


    Вот как-то так.
    Ответ написан