我正在使用 Opauth 对通过 Twitter/Facebook 访问我的网站的用户进行身份验证。
当他们离开网站时,我将重定向网址保存到 session 中 这样当他们返回网站时,他们会被重定向到该页面 他们之前曾观看过。
我遇到了一个非常奇怪的错误,如果 session 变量以任何方式从 get 变量保存,当我重定向时, session 变量为空。
如果我这样做,它就会起作用,并且当我执行时,var是正确的 从 Twitter/Facebook 重定向回来:
$_SESSION['r'] = 'asdf';
如果我执行以下任何操作,它将返回 NULL 或空字符串:
$_SESSION['r'] = $_GET['r'];
$_SESSION['r'] = base64_encode($_GET['r']);
$_SESSION['r'] = urlencode($_GET['r']);
在到达 url 参数之前,我还尝试了在 javascript 中对其进行编码的所有可能方法...
window.location.href = '/opauth/twitter?r=' + btoa(window.location.pathname);
这非常令人沮丧,如果有人可以帮助我,我将非常感激。
最佳答案
事实证明根本不适合 请求或 urlencode 的工作方式。
这纯粹是因为虽然我们最终 从 Twitter/Facebook 返回时在callback.php 上 我们必须浏览一下index.php。
这意味着设置的逻辑 $_SESSION 变量也将其清除为 来时没有设置 $_GET 变量 从 Twitter 回来。
很抱歉提出这个令人困惑、误导的问题。
关于javascript - 从 $_GET 传递到 $_SESSION 时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523134/