【问题标题】:Safari 5.1 in doesn't allow <video> source to detect $_SESSION variablesSafari 5.1 in 不允许 <video> 源检测 $_SESSION 变量
【发布时间】:2011-11-21 11:30:15
【问题描述】:

我有一个 download.php 脚本,它检测用户是否使用 $_SESSION 变量登录,并向用户读出一个视频文件。如果我从 Safari 5.0.5 中的元素调用它,脚本会检测到会话变量并按预期工作。在 5.1 中,download.php 不会读取会话变量,并且它的行为就像用户没有登录一样。如果我直接从地址栏调用脚本,它就可以正常工作。如果我从我的 iPhone 打电话,它也会被检测到。有谁知道这是一个错误还是有解决方法?我将不得不重新编写很多内容来尝试不使用会话。谢谢。

这是一个故障排除脚本。这显示了正确的会话数据:

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Test</title> 
    </head>
    <body>
        <video width="640" height="480" controls="true" autoplay="false" id="v">
            <source src="video.php" type="video/mp4" />
        </video>
        <?php
        echo "<pre>";
        var_dump($_SESSION);
        echo "</pre>";
        ?>
    </body>
</html>

每次我加载上述页面时都会写入“未检测到会话”,但使用 Safari 5.0.5 和 iOS 检测到会话:

<?php
session_start();

// write local error log
function write_log($txt) {
    $myFile = 'error.log';
    $fh = fopen($myFile, 'a') or die("can't open file");
    fwrite($fh, "$txt\n");
    fclose($fh);
}

if ($_SESSION) {
    write_log(date('Y-m-d H:i:s'). ' Session Detected');
} else {
    write_log(date('Y-m-d H:i:s'). ' Session Not Detected');
}

?>

编辑:Safari Inspector 将调用 video.php 的状态显示为“待处理”,并且除了请求 url 之外没有任何标题。 修复了 session_start,但仍然可以正常工作。

编辑:好的,如果我读取 SERVER 变量,5.1 和 5.0.5 之间的区别在于 5.0.5 具有:HTTP_CONNECTION => 关闭,并且 HTTP_COOKIE 包含 PHPSESSID

编辑:我在 32 位模式下运行 Safari,它又可以工作了......

【问题讨论】:

  • 您能否使用 Safari 开发者工具查看 Safari 在请求 video.php 时发送的 HTTP 标头?请求视频时是否发送 PHP 会话 cookie?
  • 至于调试:您应该查看$_COOKIE 并将$_SERVER 数组转储到日志文件中。完全有可能在您的 Safari 版本中,一个插件 (Quicktime) 接管了下载视频源并且不共享浏览器 cookie 存储。
  • 在session_start()之前,不能输出任何html代码。

标签: php video safari


【解决方案1】:

如果 cookie 没有自动传递给

<video ...>
    <source src="video.php?PHPSESSID=<?php echo session_id(); ?>" type="video/mp4" />
</video>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 2016-09-30
    • 2015-05-25
    • 2014-07-30
    • 2020-07-24
    • 1970-01-01
    • 2022-10-23
    • 2020-11-13
    相关资源
    最近更新 更多