javascript - 使用 PHP 打开图片文件时防止新 session

标签 javascript php session screen-resolution visitor-statistic

使用 php 打开图片文件是在新 session 中完成的,如何防止这种行为?

我在所有网页中都添加了 JavaScript 来获取屏幕分辨率。这是 JavaScript 代码:

 <script language="JavaScript">
 document.getElementById("mypictureid").src="http://www.mywebsite.com/getresolutionpic.php?w="+screen.width+"&h="+screen.height;
</script>

页面的 html 包括:

<img id="mypictureid" src="http://mywebsite.com/otherimage.gif"

以下 php 代码将在每个页面加载时执行,以将用户数据存储在 $_SESSION 中。

$some_name = session_name("generalvisit");
session_start();
$_SESSION['entertime']=new DateTime();

为了跟踪用户,mysql 数据库创建一个用户 ID 并将其存储在 $_SESSION['userid'] 中

if(!is_numeric($_SESSION['userid']) $_SESSION['userid']=getNewUserID();

现在,当 JavaScript 触发 getresolutionpic.php 时,将该用户的屏幕分辨率存储在同一用户的 $_SESSION 变量中。在 getresolutionpic.php 中,我们有:

$some_name = session_name("generalvisit");
session_start();
if(!is_numeric($_SESSION['userid'])
{
    $_SESSION['userid']=getNewUserID();
    $_SESSION['entertime']=new DateTime();
}
$_SESSION['width']=$_GET['w'];
$_SESSION['height']=$_GET['h'];

问题是,当调用 getresolutionpic.php 时,$_SESSION['userid'] 为空,并且将创建一个新的 userid,而该用户实际上并不是新用户。

你知道哪里出了问题吗?

最佳答案

试试这个:

<script language="JavaScript">
window.onload = function() {
    document.getElementById("mypictureid").src = "http://www.mywebsite.com/getresolutionpic.php?w=" + screen.width + "&h="+screen.height;
</script>

在加载主页面之前,不会尝试加载图像,此时应设置 session cookie。

关于javascript - 使用 PHP 打开图片文件时防止新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24584054/

相关文章:

javascript - 如何在javascript中检查2个日期是否相等

javascript - 将 html 元素映射到 json 对象

php - CakePHP 中的多个 CSS 和 id

php - 这对于用户登录和验证是否足够安全? (PHP、MySQL、 session )

Django - 修改 session 数据时 session cookie过期时间是否更新?

javascript - 传输大数据时 CEFPython 窗口关闭且无警告

javascript - 使用 fs.writeFile 将 javascript 代码写入 js

javascript - 我应该如何调用这个数组输出?

php - 我怎样才能使涉及大约 300,000 行的更新语句更快?

php - 为什么在php中通过ajax请求时session id会改变?