gpt4 book ai didi

php - session 变得疯狂。只有 Mozilla 能够处理

转载 作者:搜寻专家 更新时间:2023-10-31 21:43:12 24 4
gpt4 key购买 nike

问题


我有一个管理面板。目前只有 Mozilla 能够处理登录。 Chrome、IE、Opera 等浏览器甚至不会显示通过 session 传送的任何消息,因此除了 Mozilla 之外,没有人能够登录任何浏览器。

一些信息


  • 我在服务器上使用 PHP 5.3.6,在本地使用 PHP 5.3.5计算机。
  • 我的代码是面向对象的。
  • ini_set("session.use_only_cookies", 1);ini_set('session.cookie_secure', 1);用于构造方法我的类(class)。
  • SLL 上的这个网站

登录过程:首先,我从表单中收集所有信息,验证并收集数据。验证一切是否正确后,我将此数据发送到我的 session 类中的login方法。

public function login ($user) {
global $siteSettings;
if ($user) {
$this->id = $_SESSION['id'] = $user->id;
$this->username = $_SESSION['username'] = $user->username;
$this->fullName = $_SESSION['fullName'] = $user->fullName;
$this->group_id = $_SESSION['group_id'] = $user->group_id;
$this->groupName = $_SESSION['groupName'] = $user->groupName;
$this->lastLogin = $_SESSION['lastLogin'] = $user->lastLogin;
$this->isAdmin = $_SESSION['isAdmin'] = ($user->admin == 1) ? true : false;
$this->isAgent = $_SESSION['isAgent'] = ($user->agent == 1) ? true : false;
self::$language = $_SESSION['language'] = ($user->language != "" || $user->language != NULL) ? $user->language : self::$language;
if ($user->language != "" || $user->language != NULL) {
$_SESSION['language'] = $user->language;
}else {
if (!defined(DEFAULT_LANGUAGE)) {
$browserLang = "|".$_SERVER["HTTP_ACCEPT_LANGUAGE"];
$browserLang = getStringBetween($browserLang, "|","-", FALSE);
if (!file_exists(LANGUAGES.$browserLang.".php")) $browserLang = FALSE;
}
$_SESSION['language'] = ($browserLang) ? $browserLang : DEFAULT_LANGUAGE;
}


# When 2 Update session_id
$date = new DateTime("now");
$UpdateTime = $siteSettings->session->timeOut * 60;
$date->add(new DateInterval("PT".$UpdateTime."S"));

$_SESSION['SIDUpdateTime'] = $date->format("Y-m-d G:i:s");

# UPDATE LAST LOGIN & ADD SESSION ID
# Clear Fields
members::clearFields();
members::$fields['id'] = $_SESSION['id'];
members::$fields['lastLogin'] = date("Y.m.d G:i:s");
members::$fields['lastLoginIP'] = $_SERVER['REMOTE_ADDR'];
# GET THE SALT
$saltInfo = members::getData("id", "salt", members::$fields['id']);

# SETTING SESSION ID ENCRYPTION
crypt::setKey($saltInfo->salt);
members::$fields['sessionID'] = crypt::encode(session_id());
members::$fields['sessionIP'] = $_SERVER['REMOTE_ADDR'];
members::$fields['sessionAgent'] = $_SERVER['HTTP_USER_AGENT'];
members::save();

$this->loggedIn = true;
var_dump($_SESSION);
}
}

当我对数据进行哑处理时,我可以看到 $_SESSION 有一些值。

只是为了测试它,我在 var_dump($_SESSION); 之后停止了脚本(添加了 die();)我创建了 test.php 文件并尝试了这个;

<?php
ob_start();
session_start();

echo '<pre>';
var_dump($_SESSION);
echo '<pre>';

ob_end_flush();
?>

输出为 array(0) {}

但是当我用 Mozilla 尝试完全相同的事情时,test.php 的输出是它应该的方式(与我的 session 类中登录方法的结果匹配)。

  • 我已经在我的本地计算机上尝试过,但我没有遇到同样的情况问题。
  • 我禁用了页面中的所有 java 脚本和 jquery 代码只是为了我脑子里没有“也许”。
  • 转储数据后,脚本停止。这就是为什么 $_SESSION 变量不应该改变的原因。出于某种原因,当它在服务器上时,只有 Mozilla 能够显示预期结果,而其他浏览器显示 NULL

此时我真的不知道该如何思考这个问题来尝试解决它。我能想到的是,这个问题可能与服务器配置有关。但是,PHP 是服务器端编程。 PHP 不应针对 Jquery、CSS、HTML 等浏览器显示不同的行为...

抱歉,我无法提供管理面板链接。考虑到这是一个活跃的管理面板。如有必要,我可以将它安装在另一个域上让您尝试,但我相信我上面提供的信息可以解释一切。

提前感谢您的帮助。

最佳答案

我有一个类似的问题...只需启用 cookies.. 这样在登录后设置 session 的代码将被执行并设置 session 。可能是 session r 无法设置...

同时检查这个 http://php.net/manual/en/function.session-cache-limiter.php

关于php - session 变得疯狂。只有 Mozilla 能够处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com