При обращении к другой странице приложения, вы могли столкнуться с тем, что параметры viewer_id и т.п. пропадают.
Это связано с тем, что они не передаются другой странице.
При загрузке первой страницы приложения, параметры передаются примерно так:
http://flapps.ru/vk.php?api_url=http://api.vkontakte.ru/api.php&api_id=1728947&api_settings=1791&viewer_id=1306422&viewer_type=2...
При обращении к другой странице, эти параметры уже не передаются:
http://flapps.ru/vk2.php
Решение этой проблемы уже писал Влад в уроке IFrame (Передача переменных в другой php)
Я сделаю примерно то же самое, только сделаю код более пригодный для удобного использования в ваших приложениях.
В комментариях Fedya написал другой вариант доступности данных на разных страницах. http://flapps.ru/forum/topic1351-40.html#p42967
Есть и другой урок Передача переменных между страницами IFrame (php)
Выбирайте тот способ, который вам удобнее.
Эта php функция будет создавать строку параметров. Её нужно вызывать при создании ссылки на другую страницу приложения:
Код: Выделить всё
function getVkParams() { return 'api_url='.$_GET['api_url'] .'&api_id='.$_GET['api_id'] .'&api_settings='.$_GET['api_settings'] .'&viewer_id='.$_GET['viewer_id'] .'&viewer_type='.$_GET['viewer_type'] .'&sid='.$_GET['sid'] .'&secret='.$_GET['secret'] .'&user_id='.$_GET['user_id'] .'&group_id='.$_GET['group_id'] .'&is_app_user='.$_GET['is_app_user'] .'&auth_key='.$_GET['auth_key'] .'&language='.$_GET['language'] .'&parent_language='.$_GET['parent_language'] .'&lc_name='.$_GET['lc_name'];}
Использовать так:
Код: Выделить всё
<?function getVkParams() { return 'api_url='.$_GET['api_url'] .'&api_id='.$_GET['api_id'] .'&api_settings='.$_GET['api_settings'] .'&viewer_id='.$_GET['viewer_id'] .'&viewer_type='.$_GET['viewer_type'] .'&sid='.$_GET['sid'] .'&secret='.$_GET['secret'] .'&user_id='.$_GET['user_id'] .'&group_id='.$_GET['group_id'] .'&is_app_user='.$_GET['is_app_user'] .'&auth_key='.$_GET['auth_key'] .'&language='.$_GET['language'] .'&parent_language='.$_GET['parent_language'] .'&lc_name='.$_GET['lc_name'];} // при простом переходе на другую страницуecho '<a href="vk2.php?'.getVkParams().'">Страница 2</a>'; // при переходе на другую страницу, с передачей дополнительных параметров (в этом примере передача "act=send")echo '<a href="vk3.php?act=send&'.getVkParams().'">Страница 3</a>';?>
В html коде так:
Код: Выделить всё
<?function getVkParams() { return 'api_url='.$_GET['api_url'] .'&api_id='.$_GET['api_id'] .'&api_settings='.$_GET['api_settings'] .'&viewer_id='.$_GET['viewer_id'] .'&viewer_type='.$_GET['viewer_type'] .'&sid='.$_GET['sid'] .'&secret='.$_GET['secret'] .'&user_id='.$_GET['user_id'] .'&group_id='.$_GET['group_id'] .'&is_app_user='.$_GET['is_app_user'] .'&auth_key='.$_GET['auth_key'] .'&language='.$_GET['language'] .'&parent_language='.$_GET['parent_language'] .'&lc_name='.$_GET['lc_name'];}?><html><head><!-- подключаем xd_connection.js --><script src="http://vkontakte.ru/js/api/xd_connection.js" type="text/javascript"></script><script type="text/javascript">window.onload = (function() { // когда загрузится вся страница VK.init(function() { // инициализируем Vk API // ... });});</script></head><body><!-- при простом переходе на другую страницу --><a href="vk2.php?<?php echo getVkParams(); ?>">Страница 2</a> <!-- при переходе на другую страницу, с передачей дополнительных параметров (в этом примере передача "act=send") --><a href="vk3.php?act=send&<?php echo getVkParams(); ?>">Страница 3</a> <div id="status_info">http://flapps.ru</div></body></html>
При передаче параметров, ссылка должна выглядеть так:
http://flapps.ru/vk2.php?param1=value¶m2=value¶m3=value
Обратите внимание, первый параметр присоединяется знаком "?", а остальные знаком "&".
То же самое, только на JavaScript
Код: Выделить всё
function getVkParams() { VK.loadParams(document.location.href); return 'api_url=' + VK.params.api_url + '&api_id=' + VK.params.api_id + '&api_settings=' + VK.params.api_settings + '&viewer_id=' + VK.params.viewer_id + '&viewer_type=' + VK.params.viewer_type + '&sid=' + VK.params.sid + '&secret=' + VK.params.secret + '&user_id=' + VK.params.user_id + '&group_id=' + VK.params.group_id + '&is_app_user=' + VK.params.is_app_user + '&auth_key=' + VK.params.auth_key + '&language=' + VK.params.language + '&parent_language=' + VK.params.parent_language + '&lc_name=' + VK.params.lc_name;}
Например, если нужно автоматически обновить страницу, передав параметры:
Код: Выделить всё
<html><head><!-- подключаем xd_connection.js --><script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script><script type="text/javascript">window.onload = (function() { // когда загрузится вся страница// функция получения параметровfunction getVkParams() { VK.loadParams(document.location.href); return 'api_url=' + VK.params.api_url + '&api_id=' + VK.params.api_id + '&api_settings=' + VK.params.api_settings + '&viewer_id=' + VK.params.viewer_id + '&viewer_type=' + VK.params.viewer_type + '&sid=' + VK.params.sid + '&secret=' + VK.params.secret + '&user_id=' + VK.params.user_id + '&group_id=' + VK.params.group_id + '&is_app_user=' + VK.params.is_app_user + '&auth_key=' + VK.params.auth_key + '&language=' + VK.params.language + '&parent_language=' + VK.params.parent_language + '&lc_name=' + VK.params.lc_name;} VK.init(function() { // инициализируем Vk API // переадресовываем на страницу vk2.php с передачей параметров document.location.href="vk2.php?"+getVkParams(); });});</script></head><body><div id="status_info">http://flapps.ru</div></body></html>