[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт не принимает get-параметры запроса
Dimaz
Приветствую всех. Пишу приложение для Вконтакте. Скрипт выдает в браузер: "Неизвестная ошибка". В чем может быть проблема? Смотрел в Куки редакторе, куки создаются. Почему же тогда выдает ошибку?
В настройках приложения, на сайте Вконтакте, в адрес iframe прописываю index.php. То есть он передает get-параметры запроса именно в этот скрипт. Нижеприведенный скрипт, это auth.php.
<?php
$user_id = $_GET['viewer_id'];
$auth_key = $_GET['auth_key'];
if($user_id && $auth_key) {
include("config.php");
$real_auth_key = md5($api_id."_".$user_id."_".$api_key);
if($real_auth_key == $auth_key) {
setcookie("viewer_id", $user_id);
setcookie("auth_key", $auth_key);
header("Location: index.php");
}
else {
echo("Ошибка auth_key");
}
}

else {
echo("Неизвестная ошибка!");
}
?>
Rand
$user_id или $auth_key - явно пустые, неправильно значит скрипту передаешь.
Элементарно проверь какой параметр пуст (или оба):
<?php
echo 'id: ' . $_GET['viewer_id'] . '<br />';
echo 'auth_key: ' . $_GET['auth_key'];
Dimaz
А почему тогда он куки устанавливает если параметры пустые? По идее блок if выполняться не должен в этом случае. Он же выводит ошибку из блока else: "Неизвестная ошибка". Не понимаю как он создает куки, если он пропускает блок if. Поставил вывод ошибок, выдал:
Notice: Undefined index: viewer_id in...
Notice: Undefined index: auth_key in...
Я в принципе догадывался, что он не принимает эти параметры, так как я в настройках поставил, чтобы параметры шли в другой скрипт, index.php. Но как он блок if выполняет для меня загадка. Поясните пожалуйста.
Rand
Если кука ставится, возможно этот скрипт вызывается два раза - один с параметрами, второй - без (например перенаправление где-то есть в другой части кода или ещё что-то)
Dimaz
Цитата (Rand @ 16.12.2012 - 15:21)
Если кука ставится, возможно этот скрипт вызывается два раза - один с параметрами, второй - без (например перенаправление где-то есть в другой части кода или ещё что-то)

Кстати точно. В настройках приложения Вконтакте я указываю index.php. Скорее всего сначала сам Вконтакте передает эти параметры в скрипт, а потом уже когда страничка загружается в блок iframe, снова идет обращение к скрипту. Что же тогда делать? Мне нужно в 2 скрипта эти параметры передать. Раньше в настройках стоял auth.php, но я на стороне клиента не мог получить доступ к этим параметрам используя:
alert(document.location.href);
Вылазило: http://моястраничка.ru/index.php без get-параметров. Когда поставил в настройках index.php стало выдаваться с параметрами. Вообщем эти параметры нужно передать как в auth.php, для создания кук, так и в index.php, чтобы был доступ к этим параметрам на стороне клиента, то бишь в JS скрипте. Это возможно реализовать?
Rand
auth.php инклудится в index.php? Может тогда так:
if(isset($_GET['auth_key'], $_GET['viewer_id']))
require_once 'auth.php';
Или отсутствие кук проверять.
Dimaz
alert(document.location.href);

Он показывает адрес моей странички и список всех параметров. Это когда передаешь в index.php. Куда он их сохраняет вообще, что можно таким макаром их получить? Как передать эти параметры в location.href из другого скрипта?
Rand
Сложно что-то советовать, не видя структуры проекта и кода. Зачем проверять гет-параметры на js, если это можно сделать на php. А из скрипта в скрипт - это надо сессии использовать.
Dimaz
Кажется я догнал.) Просто перенес содержимое auth.php, который устанавливает куки, в скрипт index.php. Теперь и куки устанавливаются и доступ к этим параметрам есть на стороне клиента:
alert(document.location.href)
Теперь выдает адрес самой страницы и get-параметры. А ларчик просто открывался.)))
Rand
Я так и предполагал:
Цитата
auth.php инклудится в index.php?
biggrin.gif
Dimaz
Ну вот :( Теперь новый баг. Если куки еще не установлены, сначала выводит auth_key error. Перезагружаешь страничку и все нормально. Вот часть index.php:
<?php
$user_id = $_GET['viewer_id'];
$auth_key = $_GET['auth_key'];
if($user_id && $auth_key) {
include("config.php");
$real_auth_key = md5($api_id."_".$user_id."_".$api_key);
if($real_auth_key == $auth_key) {
setcookie("viewer_id", $user_id);
setcookie("auth_key", $auth_key);
//header("Location: index.php");
}
else {
echo("Ошибка auth_key");
}
}

else {
echo("Неизвестная ошибка!");
}
include("user_auth.php"); ?>
<!DOCTYPE HTML>
<
html>
<
head>
...


Вот user_auth.php:
<?php
include_once("config.php");
$real_auth_key = md5($api_id."_".$_COOKIE['viewer_id']."_".$api_key);
if($real_auth_key != $_COOKIE['auth_key']) {
echo("auth_key error");
exit;
}
?>

Как я понимаю, такое происходит из-за того, что куки еще не успевают установиться скриптом auth.php?
Быстрый ответ:

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