[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: информация после # в url
grechan
Сори, если повторяюсь, но ответ на свой вопрос не нашел поисковиком?...
Подскажите пожалуйста как при помощи php вытащить инфу после # из url? Это, по идее, элементы $_get[] - массива, и , как я понял, предназначены для Java.
Спасибо.



Спустя 6 минут, 21 секунда (26.10.2011 - 16:33) walerus написал(а):
Пример в студию и свои варианты решения smile.gif

Спустя 27 секунд (26.10.2011 - 16:34) caballero написал(а):
ява тут при чем?
строка после # это имя якоря на странице на сервер не передаетсмя скорее всего

погугли по словам url anchor


Спустя 12 минут, 11 секунд (26.10.2011 - 16:46) grechan написал(а):
Вот, что я имею в URL:http://site.com/blank.php#access_token=0b80f0ac0a9bf50b0a9bf50be50ab37faf90a9b0a9af501e7f6eb47318128ca&expires_in=0&user_id=18548135 (все отображается именно так).
access_token мне надо выцепить.

Начал с того, что просто пока пытаюсь получить весь url целиком в виде строки, присвоением переменной значения $_SERVER['REQUEST_URI'] .
Получаю - /blank.php.

Спустя 17 минут, 12 секунд (26.10.2011 - 17:03) walerus написал(а):
А чем ты получаешь урл? или от куда он вообще берется ?, давай код либо полностью, либо кусок, где приходит этот урл, ниче не понятно...

И я не понял еще -
Цитата
все отображается именно так
- где отображается ?

Спустя 11 минут, 30 секунд (26.10.2011 - 17:15) grechan написал(а):
Да тут все просто - я по ссылке на своём сайте с одной страницы перехожу на другую, и при этом авторизуюсь в контакте:
<a href="http://api.vkontakte.ru/oauth/authorize?client_id=1111111&scope=audio,video&redirect_uri=http:%2F%2Fsite.com%2Fblank.php&display=page&response_type=token"> переход </a>

На странице, на которую я перешел находится панель (вернее будет панель, если разберусь с этим вопросом), которая будет взаимодействовать с API vkontakte и выполнять различные запросы пользователя.

Спустя 4 минуты, 33 секунды (26.10.2011 - 17:19) Игорь_Vasinsky написал(а):
$url = "http://site.com/blank.php#access_token=0b80f0ac0a9bf50b0a9bf50be50ab37faf90a9b0a9af501e7f6eb47318128ca&expires_in=0&user_id=18548135";

$url = explode("#", $url);

echo $url[1];

Спустя 4 минуты, 13 секунд (26.10.2011 - 17:23) grechan написал(а):
В таком случае url вводится ручками, а мне надо, что бы он был автоматом передан переменной, которую я буду дальше использовать в своих корыстных целях.

Спустя 1 минута, 43 секунды (26.10.2011 - 17:25) Игорь_Vasinsky написал(а):
grechan
а про $_SERVER почитать не судьба. привыкли на всё готовое.

$url = $_SERVER['REQUEST_URI'];

$url = explode("#", $url);

echo $url[1];


Спустя 3 минуты, 35 секунд (26.10.2011 - 17:29) walerus написал(а):
Цитата (Игорь_Vasinsky @ 26.10.2011 - 14:19)
$url = "http://site.com/blank.php#access_token=0b80f0ac0a9bf50b0a9bf50be50ab37faf90a9b0a9af501e7f6eb47318128ca&expires_in=0&user_id=18548135";

$url = explode("#", $url);

echo $url[1];

Так он получит все
Цитата
access_token=0b80f0ac0a9bf50b0a9bf50be50ab37faf90a9b0a9af501e7f6eb47318128ca&expires_in=0&user_id=18548135

и токен и expires_in=0 и user_id=18548135...
Если тебе нужен только токен, то

preg_match( '~access_token=(.*)&expires_in~', $url, $matches_token );
echo $matches_token[1];

Спустя 2 минуты, 49 секунд (26.10.2011 - 17:31) Игорь_Vasinsky написал(а):
walerus
оОо.. а регулярками то зачем напрягаться?

я думал ему всё после # нужно...

тогда уж str_replace();

$url = $_SERVER['REQUEST_URI'];

$url = explode("#", $url);

echo str_replace("access_token=", "", $url[1]);


или так

 $url = $_SERVER['REQUEST_URI'];

$url = parse_url($url);

echo str_replace("access_token=", "", $url['fragment']);

Спустя 3 минуты, 41 секунда (26.10.2011 - 17:35) walerus написал(а):
Игорь_Vasinsky - ТС уже спамить пошел biggrin.gif

Спустя 48 секунд (26.10.2011 - 17:36) Игорь_Vasinsky написал(а):
где?

Цитата
Подскажите пожалуйста как при помощи php вытащить инфу после # из url?

Спустя 5 минут (26.10.2011 - 17:41) walerus написал(а):
Цитата (Игорь_Vasinsky @ 26.10.2011 - 14:36)
где?

Цитата
Подскажите пожалуйста как при помощи php вытащить инфу после # из url?

Да я образно ), тишина в ответах же, видимо решил свою проблему )

Спустя 1 час, 24 минуты, 27 секунд (26.10.2011 - 19:05) Nikitian написал(а):
Якорь не передаётся на сервер. Получить его можете, передав явно каким-нибудь клиентским языком, например js. В js это находится тут: window.location.hash

Спустя 14 часов, 37 минут, 58 секунд (27.10.2011 - 09:43) grechan написал(а):
Цитата (Игорь_Vasinsky @ 26.10.2011 - 14:25)
grechan
а про $_SERVER почитать не судьба. привыкли на всё готовое.

$url = $_SERVER['REQUEST_URI'];

$url = explode("#", $url);

echo $url[1];

Почитайте сообщения в теме выше. Про $_server я уже писал.

Спустя 1 минута, 47 секунд (27.10.2011 - 09:45) grechan написал(а):
Цитата (walerus @ 26.10.2011 - 14:41)
Цитата (Игорь_Vasinsky @ 26.10.2011 - 14:36)
где?

Цитата
Подскажите пожалуйста как при помощи php вытащить инфу после # из url?

Да я образно ), тишина в ответах же, видимо решил свою проблему )

Вопрос не решил.

Спустя 5 минут, 57 секунд (27.10.2011 - 09:51) grechan написал(а):
Цитата (Nikitian @ 26.10.2011 - 16:05)
Якорь не передаётся на сервер. Получить его можете, передав явно каким-нибудь клиентским языком, например js. В js это находится тут: window.location.hash

А можно поподробнее. А именно как мне в переменную получить весь url предлагаемым методом.
Если же вопрос довольно сложный, то буду сам изучать.

Спустя 10 минут, 1 секунда (27.10.2011 - 10:01) walerus написал(а):
Ниче не понятно, что ты получаешь и почему у тебя не решается вопрос, в API Вконтакте ясно написанно,

http://api.vkontakte.ru/oauth/authorize?
client_id=APP_ID&
scope=SETTINGS&
redirect_uri=REDIRECT_URI&
response_type=code

где:
APP_ID – идентификатор Вашего приложения;
SETTINGS – запрашиваемые права доступа приложения;
REDIRECT_URI – адрес, на который будет передан code. Этот адрес должен находиться в пределах домена, указанного в настройках приложения.

При этом, SETTINGS, может быть.
notify - Пользователь разрешил отправлять ему уведомления.
friends - Доступ к друзьям.
photos - Доступ к фотографиям.
audio - Доступ к аудиозаписям.
video - Доступ к видеозаписям.
docs - Доступ к документам.
notes - Доступ заметкам пользователя.
pages - Доступ к wiki-страницам.
offers - Доступ к предложениям (устаревшие методы).
questions - Доступ к вопросам (устаревшие методы).
wall - Доступ к обычным и расширенным методам работы со стеной.
groups - Доступ к группам пользователя.
messages (для Standalone-приложений) - Доступ к расширенным методам работы с сообщениями.
ads - Доступ к расширенным методам работы с рекламным API.
offline - Доступ к API в любое время со стороннего сервера.


В результате, мы, получаем токен. Цитирую...
Цитата
В результате прохождения процесса авторизации Вам выдаётся ключ доступа access_token, c помощью которого Вы можете выполнять любые запросы к API ВКонтакте от имени пользователя или от имени приложения.


Вопрос: Для чего распаршивать URL если и так дают токен, что то не так вы делаете...

Спустя 1 минута, 51 секунда (27.10.2011 - 10:03) walerus написал(а):
Цитата (grechan @ 27.10.2011 - 06:51)
Цитата (Nikitian @ 26.10.2011 - 16:05)
Якорь не передаётся на сервер. Получить его можете, передав явно каким-нибудь клиентским языком, например js. В js это находится тут: window.location.hash

А можно поподробнее. А именно как мне в переменную получить весь url предлагаемым методом.
Если же вопрос довольно сложный, то буду сам изучать.

Вопрос, не сложный, просто нужно разобраться что отправляется ( чем? API, CURL и т.д. ), что приходит( JSON, текст, массив ), и что нужно получить...

Спустя 3 минуты, 41 секунда (27.10.2011 - 10:07) walerus написал(а):
Ты как то писал что у тебя получался ответ - "Получаю - /blank.php" и тут же пишешь что урл перехода:

<a href="http://api.vkontakte.ru/oauth/authorize?client_id=1111111&scope=audio,video& redirect_uri=http:%2F%2Fsite.com%2Fblank.php&display=page&response_type=token" > переход </a>
, не на какие мысли не наводит?

Посмотри в сторону REDIRECT_URI, у тебя он как раз и есть,
REDIRECT_URI =
http://site.com/blank.php
,
от сюда и результат, тебя редиректит на указанный урл.

Спустя 1 минута, 45 секунд (27.10.2011 - 10:08) walerus написал(а):
Читаем дальше, мне вообще нравятся люди которые используют API, но до конца не читают...


4. Получение access_token
Для получения access_token необходимо выполнить запрос с Вашего сервера на URL https:// api.vkontakte.ru/oauth/access_token с передачей параметра code
и секретных данных приложения: client_id и client_secret.
Секретный ключ приложения client_secret может быть получен в разделе редактирования приложения и никогда не должен содержаться в коде клиентского приложения.
С подробным списком параметров можно ознакомиться на странице описания получения access_token.

    https:// api.vkontakte.ru/oauth/access_token?
    client_id=APP_ID&
    client_secret=APP_SECRET&
    code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a


В результате выполнения данного запроса Ваш сервер получит вновь созданный access_token.
Вместе с access_token серверу возвращается время жизни ключа expires_in в секундах.
Процедуру авторизации приложения необходимо повторять в случае истечения срока действия access_token,
смены пользователем своего логина или пароля или удалением приложения из настроек.

Пример ответа сервера:

    {"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, "user_id":6492}



В случае ошибки будут переданы параметры error и error_description.

    {"error":"invalid_grant","error_description":"Code is expired."}


В чем трудности то ?

Спустя 5 минут, 36 секунд (27.10.2011 - 10:14) grechan написал(а):
Использование методов API после авторизации:
(Для примера)
Для того чтобы вызвать метод API ВКонтакте, Вам необходимо осуществить запрос по протоколу HTTPS на указанный URL:

https://api.vkontakte.ru/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN (т.е мне надо знать access_token )

Этап авторизации я прошел и получил на указанном мною REDIRECT_URI
в url на странице моего сайта
что-то типа
http://REDIRECT_URI#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492

Дальше, думаю, понятно?

Спустя 8 минут, 52 секунды (27.10.2011 - 10:23) grechan написал(а):
Цитата (walerus @ 27.10.2011 - 07:08)
Читаем дальше, мне вообще нравятся люди которые используют API, но до конца не читают...

code - Временный код, полученный после прохождения авторизации. Используется при авторизации сайтов.

Спустя 1 минута, 10 секунд (27.10.2011 - 10:24) walerus написал(а):
Ну блин, ты даешь, читаем ВНИМАТЕЛЬНО!.
1) Для начала процесса авторизации необходимо создать окно браузера и открыть в нём диалог авторизации с параметром response_type = code по адресу:
http: //api.vkontakte.ru/oauth/authorize?
client_id=APP_ID&
scope=SETTINGS&
redirect_uri=REDIRECT_URI&
response_type=code

REDIRECT_URI – адрес, на который будет передан code. Этот адрес должен находиться в пределах домена, указанного в настройках приложения.

В итоге мы получим нужный нам CODE


2) Получение access_token: Отправляем запрос

https:// api.vkontakte.ru/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
code=НАШ ПОЛУЧЕННЫЙ CODE

В итоге мы получим нужный нам ACCESS TOKEN

Все ?, теперь понятно ?

Спустя 7 минут, 39 секунд (27.10.2011 - 10:32) grechan написал(а):
Насколько я понял этот самый code и передается на мой сайт (приложение) в строке url(после #), который я не могу выцепить. Если в качестве REDIRECT_URI использовать предложенный в документации
http://api.vkontakte.ru/blank.html,
то урл отображается в виде строки прямо на странице и дальше работаешь с ним.
В моем случае этот код передается в урле.

Спустя 8 минут, 52 секунды (27.10.2011 - 10:41) walerus написал(а):
Ты ошибаешься,
Цитата
Вот, что я имею в URL:http://site.com/blank.php#access_token=0b80f0ac0a9bf50b0a9bf50be50ab37faf90a9b0a9af501e7f6eb47318128ca&expires_in=0&user_id=18548135 (все отображается именно так).


У тебя приходит именно access_token, а не code.
Давай по пунктам отписывай, что у тебя получается.

1) Логинишься так ?
http: //api.vkontakte.ru/oauth/authorize?
client_id=APP_ID&
scope=SETTINGS&
redirect_uri=REDIRECT_URI&
response_type=code


2) если нет, то как ? STOP || если да то что приходит в ответ?, должен прийти CODE

3) Дальше, сделай запрос как просит API, а именно:

https:// api.vkontakte.ru/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
code=НАШ ПОЛУЧЕННЫЙ CODE из пункта 1


и результаты print_r($_SERVER), print_r($_REQUEST), высыпи сюда, ну или то что вернет сервер...

Спустя 6 минут, 43 секунды (27.10.2011 - 10:47) grechan написал(а):
Авторизуюсь точно так же как указанно в документации, с указанием своего перенаправленного урла.
После чего получаю на свой урл...то что я уже писал.
Вопрос был в следующем - как мне получить этот самый access_token, который подразумевается как элемент массива $_GET, но передается после якоря.

Спустя 4 минуты, 44 секунды (27.10.2011 - 10:52) walerus написал(а):
В общем, я все расписал, ты не прислал, ни ответы сервера, ни свой код, я не знаю чем тебе помочь, не видя то что приходит, в Глобальных массивах должно все быть, ты их не предоставил. Как дашь ответы, будет тема для решения твоей проблемы, а так, я не знаю даже что советовать, все расписано по полочкам, трудностей минус ноль...

Спустя 9 минут, 45 секунд (27.10.2011 - 11:02) grechan написал(а):
Вот такой ответ получил на другом форуме:
На javascript парсите урл и отправляете по средством ajaxна сервер, куда проще.Я одно время даже писал сайтик, на котором как раз такая операция была проделана.

Почитайте сперва про ajax, с чем его едят.

Вроде, то, что надо, хоть знаю в каком направлении двигаться. Спасибо всем за помощь.
Как решу вопрос - отпишусь.
P.S. Если кто-нибудь имеет готовое решение - просьба - прислать.

Спустя 6 минут, 38 секунд (27.10.2011 - 11:08) walerus написал(а):
grechan - ты жжошь !!, у тебя все под носом лежит, если ты не можешь отправить правильный запрос API который я уже раз 5ть написал тут, для получения токена, то проще конечно выучить AJAX и JAVAScript, потом распарсить урл, на это уйдет 100500 лет времени, если конечно ты эти языки уже знаешь, то будет все быстро, - а ты их не знаешь, иначе бы уже сделал. Готовое решение написать можно, но просто так никто тут писать не станет, у всех есть свои "дела" как бы ))).

Тебе нужно выполнить всего ДВА пункта, для которых у тебя есть все данные и способности, раз ты авторизуешься. Только я вот уже не пойму, зачем ты себе геморрой создаешь лишний, с аяксами и явой... ???

Спустя 1 день, 3 часа, 58 минут, 6 секунд (28.10.2011 - 15:06) Guest написал(а):
Цитата (walerus @ 27.10.2011 - 08:08)
grechan - ты жжошь !!, у тебя все под носом лежит, если ты не можешь отправить правильный запрос API который я уже раз 5ть написал тут, для получения токена, то проще конечно выучить AJAX и JAVAScript, потом распарсить урл, на это уйдет 100500 лет времени, если конечно ты эти языки уже знаешь, то будет все быстро, - а ты их не знаешь, иначе бы уже сделал. Готовое решение написать можно, но просто так никто тут писать не станет, у всех есть свои "дела" как бы ))).

Тебе нужно выполнить всего ДВА пункта, для которых у тебя есть все данные и способности, раз ты авторизуешься. Только я вот уже не пойму, зачем ты себе геморрой создаешь лишний, с аяксами и явой... ???

Я со своими вопросами не лезу в более серьёзные разделы форума, а задаю их в разделе для новичков. А т.к. я php занимаюсь недолгое время, то решение многих проблем и замыслов еще выплнять оптимально не всегда получается. Но тем не менее - спасибо за критику.
Вот как я попытался решить свою проблему. Пока все работает. Вижу, что много лишнего, но по-другому не получается.

С искомой страницы при нажатии ссылки отправляется запрос на авторизацию, ответ приходит на промежуточную страницу blank.html.
Вот ссылка:
<a href="http://api.vkontakte.ru/oauth/authorize?client_id=1111111&scope=friends,audio,offline&redirect_uri=http:%2F%mysite.ua%2Fblank.html&display=page&response_type=token"> скачать </a>

Код blank.html
<body>
<form
method="post" action="blank.php">
<input
type="hidden" name="access" value="" />
<!--<input type="submit" name="submit" value="submit" />-->
</form>

<script
type="text/javascript">
var
receivedHref;
var receivedHash;

arrHref = window.location.toString().split('#');
receivedHush = arrHref[1];
document.forms[0].access.value = receivedHush;
document.forms[0].submit();

</script>
</body>


Дальше вытягиваю инфу после якоря и методом ПОСТ передаю данные на нужную страницу blank.php.

код blank.php:
<?php
include ($_SERVER['DOCUMENT_ROOT'].'/xxx/config.php');
$title='Об авторе';
include ($_SERVER['DOCUMENT_ROOT'].'/xxx/top.php');
$hush = $_POST['access'];
$arrHush = explode ('&',$hush);
//print_r($arrHush);
$arrAccess = explode ('=',$arrHush[0]);
$access = $arrAccess[1];
echo '$access='.$access.'</br>';
$arrExpires = explode ('=',$arrHush[1]);
$expires = $arrExpires[1];
echo '$expires='.$expires.'</br>';
$arrUserId = explode ('=',$arrHush[2]);
$userId = $arrUserId[1];
//$userId = 1111111;
?>
<script type="text/javascript">
var script = document.createElement('SCRIPT');

script.src = "https://api.vkontakte.ru/method/audio.get?uid=1111111&access_token=fdnfkldjflkj6 958695nmnmd nffdf78d8f9d8f98d9f8d9f89dfud8f9de040&callback=callbackFunc";

document.getElementsByTagName("head")[0].appendChild(script);

function callbackFunc(result) {
var a = JSON.stringify(result);
alert(a);

//document.write(result);
}
</script>

<?php


После дальнейших размышлений понял, что данный вопрос лучше решать другими методами.

 ! 

М
Выделяйте код тегами !
Winston

Спустя 5 минут, 27 секунд (28.10.2011 - 15:12) grechan написал(а):
Сори, автор сего бестолкового сообщения - grechan, сразу не глянул, что не залогинился, и форум не предупредил.

Спустя 1 час, 36 минут, 14 секунд (28.10.2011 - 16:48) Nikitian написал(а):
arrHref = window.location.toString().split('#'); 
receivedHush = arrHref[1];
document.forms[0].access.value = receivedHush;

Вполне можно заменить на то, что писал выше

document.forms[0].access.value = window.location.hash;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.