2015-07-20 2 views
0

Я использую 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); 

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

+2

Как раз быстрая проверка работоспособности, вы вызываете 'session_start' на этой странице, правильно? – d0nut

+1

Печать '$ _GET ['r']' перед тем, как вы установите его, вероятность того, что этот код будет оцениваться, на самом деле не установлен. – nickb

+0

У вас есть 'session_start();' код на страницах? а также проверить, что '$ _GET' имеют значения или нет? –

ответ

1

Ну, похоже, не должно быть , как работает запрос или urlencode.

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

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

Извините за этот запутанный, неверный адрес.