Странная ошибка при переходе от $_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.
Извините за этот запутанный, вводящий в заблуждение вопрос.