Ссылки как в ВК php

Доброго времени суток, уважаемые читатели блога SoftMaker.kz. На этом сайте уже есть статья о том что такое PHP . А сегодня мы поговорим, о ссылках в языке программирование PHP, так как ссылки являются весьма полезной частью языка программирования PHP. Это утверждение касается так же и большинства других языков программирования. Тем не менее, тема ссылок может быть не вполне понятной при первом знакомстве с ней.

Эта статья поможет устранить всё, что может быть непонятно при первом знакомстве с темой ссылок в PHP . Вы узнаете, что такое ссылки в PHP и как они работают. Также в этой статье вы узнаете, как создавать и удалять ссылки, а также как передавать и возвращать переменную по ссылке в функцию и из неё. Вы также изучите некоторые другие виды ссылок, и узнаете о ситуациях, когда PHP создаёт ссылки автоматически.

Что же такое ссылки в PHP?

Ссылка — это способ обратиться к переменной с помощью другого имени. PHP-ссылки не похожи на указатели языка программирования C и не являются псевдонимами таблицы символов. Во многих отношениях они похожи на ярлык в Windows, файл псевдоним в Mac OS X и символические ссылки в Linux.

VK API — php пример добавление ссылки в правое меню группы

Присвоение ссылки в PHP

Здесь мы создали переменную $myVar со значением «Привет!». Затем мы присвоили значение другой переменной $anotherVar. Это копия значения первой переменной во вторую. Затем мы изменим значение, сохраненное в $anotherVar на «Увидимся позже».

Поскольку две переменные являются независимыми, $myVar по-прежнему сохраняет свою первоначальное значение ( «Привет!» ), которое будет выедено на странице. Пока всё идёт хорошо. А теперь давайте изменим пример, чтобы присвоить переменной $myVar значение $anotherVar, используя ссылку, а не значение. Чтобы сделать это, мы просто напишем знак амперсанда (« echo $myVar; // Выведет «Увидимся позже»

Еще по теме:  Как установить свою картинку Вконтакте

Здесь мы создали функцию goodbye() , которая принимает ссылку на переменную. Ссылка хранится в параметре $greeting. Функция присваивает новое значение («Увидимся позже») переменной $greeting, которая изменяет значение сохранённое в переменной, которая была передана в функцию.

Получить видео с vk.com при помощи PHP

У меня возникла проблема — как получить видео с всеми известной соц.сети vkontakte.ru. и установить его на сайте. Ключевой момент, я не хотел использовать IFRAME или же ещё какие-то сервисы ВК, я хотел чтобы видео выглядело так, как будто оно лежит у меня на сайте. Облазив пару десятков сайтов, максимально что я нашёл, это сайты для загрузки видео, такие как ВИДЕОСЕЙВЕР и тп. Это всё не подходило, поскольку мне нужен был код которой я мог интегрировать в свой PHP движок.
Нашлось пару самописных PHP скриптов – которые стоили от 30 до 500 у.е. Но половину из них были закодированы Zend Encoder – ом или же просто использовали свои сервера для поиска видео-файлов и не имели особой ценности для меня.
Так началось вдохновение. Я решил использовать мобильную версию поскольку она намного проще. Первым дело я составил алгоритм получение видео с ВК.

Уроки PHP / Подключение к API VK

image

Вход В ВК

Первым куском кода был вход в ВК. Я порылся в интернете и нашел нечто подобное:

(Код с учётом моих исправлений)

ini_set(‘error_reporting’, E_ALL); ini_set (‘display_errors’, 1); $user_agent = ‘Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ‘ . ‘Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)’; $login = ‘логин’; $password = ‘пароль’; function curl_gets_exec($ch, $redirects = 0, $curlopt_returntransfer = true, $curlopt_maxredirs = 10, $curlopt_header = false) < curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); $header=substr($data,0,curl_getinfo($ch,CURLINFO_HEADER_SIZE)); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $exceeded_max_redirects = $curlopt_maxredirs >$redirects; $exist_more_redirects = false; if ($http_code == 301 || $http_code == 302) < if ($exceeded_max_redirects) < list($header) = explode(«rnrn», $data, 2); $matches = array(); preg_match(‘/(Location:|URI:)(.*?)n/’, $header, $matches); $url = trim(array_pop($matches)); $url_parsed = parse_url($url); if (isset($url_parsed)) < curl_setopt($ch, CURLOPT_URL, $url); $redirects++; return curl_gets_exec($ch, $redirects, $curlopt_returntransfer, $curlopt_maxredirs, $curlopt_header); >> else < $exist_more_redirects = true; >> if ($data !== false) < if (!$curlopt_header) list(,$data) = explode(«rnrn», $data, 2); if ($exist_more_redirects) return false; if ($curlopt_returntransfer) < return $data; >else < echo $data; if (curl_errno($ch) === 0) return true; else return false; >> else < return false; >> $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch,CURLOPT_REFERER,’http://m.vk.com/login?fast=1s=0 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_COOKIEFILE,’cookie.txt’); curl_setopt($ch, CURLOPT_COOKIEJAR, ‘cookie.txt’); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_URL, ‘https://login.vk.com/?act=loginfrom_protocol=httppda=1′); $answer = curl_gets_exec($ch); $post = array( ’email’ => $login, ‘pass’ => $password ); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); $answer = curl_gets_exec($ch); Данный кусок кода делает довольно несложные действия – создаётся запрос , такой как будто бы его делал ваш браузер эмулируя вход пользователя в систему ВК, Более детально : curl_setopt($ch,CURLOPT_REFERER,’http://m.vk.com/login?fast=1s=0 // от куда отправляться данные curl_setopt($ch, CURLOPT_COOKIEFILE,’cookie.txt’); // куда упадут кукисы (не забудьте создать этот файл на сервере и назначить ему права 777 , — ‘cookie.txt’ ) curl_setopt($ch, CURLOPT_URL, ‘https://login.vk.com/?act=loginfrom_protocol=httppda=1’); // куда отправить данные curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); //Данные для пост запроса (в нашем случае – это ваши пароль и логин)

Еще по теме:  Как найти людей рядом в ВК

function curl_gets_exec – это функция для более удобной работы с CURL, обработки редиректов и тп.
Остальные параметры можно найти — php.net/manual/ru/book.curl.php

Парсиг Видео

Теперь оставалось найти видео и распарсить его.
Как известно видеофайлы ВК имеют вид — vk.com/video2409212_161721801
Несложно догадаться что он состоит из 2 кусочков «2409212» и «161721801».
Поэтому я использовал 2 переменных $vid и $oid, которые начал принимать GET запросам

$vid=$_GET[‘vid’]; $oid=$_GET[‘oid’];

И сформировал такую ссылку
$link=»http://m.vk.com/video_»;

Дальше мы отправлем данные ВК и получаем HTML текс с страницы видео, весь HTML ложиться в переменную $answer

curl_setopt($ch, CURLOPT_URL, $link); $answer = curl_gets_exec($ch);

Чтобы много не замариваться, я использовал для парсинга библиотеку simple_html_dom, её можно скачать в интернете или я выложил её здесь – v.plirex.com/simplehtmldom.rar
Создаем обек Simple

include «simplehtmldom/simple_html_dom.php»; $html = new simple_html_dom();

Загружаем в ней HTML текст
$html->load($answer);

Находим первый элемент DOM системы «video», если просмотреть страницу vk.com/video2409212_161721801 в HTML коде то мы видим что ссылочки на видео, хранятся именно в этом элементе

$div_video=$html->find(‘video’,0);

Проверяем есть ли там нужное нам видео

if($div_video->outertext==»»)die(“Video not found”);

внутри video примерно такой HTML код

Ссылки как в ВК php Название

Как видно есть элементы ‘source’ в которых содержаться ссылочки на видео.
Хочу заметить что эти ссылочки активны только для этого пользователя, и только после просмотра основного документа видео, те ссылки vk.com/video2409212_161721801.
Ссылки на видео имеют вид — cs527213.userapi.com/u11174769/videos/dc3277461b.240.mp4
Где u11174769 – уникальный кеш, который каждый раз новый.

$sVideo=$div_video->find(‘source’); //Преобразуем полученные данные в массив ссылок на видео $aBuf=»»; $j=0; foreach($sVideo as $post) < /*$aBuf[$j]=$post->outertext; $aBuf[$j]=substr($aBuf[$j],stripos($aBuf[$j],’src=»https://habr.com/ru/articles/168343/’)+5,strlen($aBuf[$j]));%20$aBuf[$j]=substr($aBuf[$j],0,stripos($aBuf[$j],'» type’)); */ $aBuf[$j]=$post->src; $j++; //echo » n |»; >

Сохранение

Берем первую попавшуюся ссылку и скачиваем её

$link= $aBuf[0]; header(‘Content-type: content=video/mp4′); header(«Content-Disposition: attachment; filename=vPlirex.mpg»); header(«Pragma: no-cache»); header(«Expires: 0»); $tFile = fopen($link,’r’); while (!feof($tFile)) < echo( fgets($tFile)); >fclose($tFile);

Еще по теме:  Как в ВК сделать старый дизайн

Вывод

Я описал краткое руководство для скачивание видео с ВК. Данный код не является идеальным и требует много доработок. 1-м делом избавиться от хранения кукисов в ФАЙЛЕ, а в дальнейшем сделать возможность выбирать какого качества скачивать видео.
Но подобного примера в интернете я не нашел. Так что дерзайте.
Вот ссылка на полный исходник с библиотекой v.plirex.com/v.plirex.com.rar
Также я сделал демку на домене v.plirex.com

  • vk.com
  • парсер видео
  • грабенг видео с ВК
  • сохранить видео с ВК
  • video vk.com save

Источник: habr.com

Ссылки как в вк php

Нам требуется прямо здесь вывести вот эту ссылку :

https://dwweb.ru/?tema=php_url

Для этого существует несколько вариантов, к примеру, есть ссылка, которая имеет вид:

Рейтинг
( Пока оценок нет )
Загрузка ...