Странная ошибка при переходе от $_GET к $_SESSION

Я использую Opauth для аутентификации пользователей на моем сайте через Twitter/Facebook.

Когда они покидают сайт, я сохраняю URL перенаправления в сеансе, чтобы, когда они возвращаются на сайт, они перенаправлялись на страницу, которую они просматривали ранее.

У меня очень странная ошибка, когда переменная сеанса каким-либо образом сохраняется из переменной get, когда я перенаправлен, переменная сеанса пуста.

Если я делаю это, это работает, и переменная верна, когда я перенаправлен обратно из twitter/facebook:

$_SESSION['r'] = 'asdf';

Если я выполню любое из следующего, оно вернется как NULL или пустая строка:

$_SESSION['r'] = $_GET['r'];
$_SESSION['r'] = base64_encode($_GET['r']);
$_SESSION['r'] = urlencode($_GET['r']);

Я также попробовал все возможные способы кодирования его в JavaScript, прежде чем он доберется до параметра URL...

window.location.href = '/opauth/twitter?r=' + btoa(window.location.pathname);

Это очень расстраивает, и если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

1 ответ

Что ж, оказывается, что это никак не связано с тем, как работает запрос или urlencode.

Это было чисто потому, что, хотя мы возвращаемся из callback.php, когда возвращаемся из Twitter/Facebook, нам пришлось пройти через index.php.

Это означает, что логика, которая устанавливала переменную $_SESSION, также очищала ее, поскольку при возврате из Twitter не было установлено никакой переменной $_GET.

Извините за этот запутанный, вводящий в заблуждение вопрос.

Другие вопросы по тегам