1

我对 session_vars 和移动 3g 连接有很大的问题。

我们有一个使用用户名和密码访问的虚拟校园。在每个页面上验证用户是否使用以下代码登录:

<?PHP session_start();

//Avoid not logged users
if ($_SESSION['auth']!=true)
{
    session_unset();
    header('Location:index.php'); // login page
    exit;
}

当用户尝试下载文件并使用 3G 连接时,有时会丢失标识谁登录的会话变量,并将用户发送到登录页面。

我们已经尝试并未能重现该错误。我们假设这可能取决于 3G 连接的条件。

所有使用加密狗 3g 的用户都无法使用笔记本电脑。

下面是html下载链接代码:

<a onclick="window.location.href='download_file.php?id=48558&amp;id_aula=A1188788&amp;p=5'" title="download 21115400_cat.pdf" class="Arial11BlueBold ManoSola">Download</a>

和download_file.php:

<?PHP session_start();

//Avoid not logged users
if ($_SESSION['auth']!=true)
{
    session_unset();
    header('Location:index.php');
    exit;
}

...

谢谢!

4

3 回答 3

0

除了简单会话之外,您的应用程序是否检查 IP 地址或任何其他变量?我不能肯定地说,但很有可能用户的 IP 地址在他们浏览时会发生变化,移动互联网提供商大量使用代理和其他此类技术。

于 2012-06-13T09:01:01.317 回答
0

我的猜测是,您的问题不是下载过程,而是会话识别用户的方式,即cookie。您需要调查为什么您的用户会丢失他们的会话 cookie,这会导致自动断开连接。也许您的 3g 提供商缓存连接或在用户面前有代理?另一种可能性是您的会话以某种方式绑定到客户端的 IP 地址,这可能会在不稳定的 3g 连接期间发生变化。

看看这个:iPhone cookie/caching issue on 3G, fine over wifi

于 2012-06-13T09:01:16.117 回答
0

Suhosin 对会话进行加密,似乎某些东西确实改变了 cookie 和会话。我们在 php.ini 中禁用了加密。

[suhosin] suhosin.session.encrypt=Off
[suhosin] suhosin.cookie.encrypt=Off

我们还使用了 Ajax 代理库,该库重新加载页面并且丢失了一些会话变量。我们为 Ajax 调用替换了 Ajax 代理。

于 2014-01-22T09:11:12.373 回答