• 309阅读
  • 14回复

关于使用EDGE浏览器删除游览数据后不能登录论坛的解决方法 [复制链接] [手机版]

上一主题 下一主题
离线zhangjingyu

只看楼主 正序阅读 使用道具 红 蓝 绿 紫 粉 黑 楼主  发表于: 2026-10-18 14:30:49 星期日
关键词: 论坛手机版
今天,在更新抄报练习工具及中文电码互译这个主题过程中,可能是因为8楼调用的图片太大,后来重新编辑上传覆盖了。而页面显示还是原来的大小(超宽),所以在浏览器的菜单里选择了“删除浏览数据”。后来不知道怎么回事,论坛的样式就不正常了,也无法登录(登录页样式也不正常),安全问题显示不出来。用手机版登录后切换为电脑版,还是样式不正常。

后来注意到访问地址是带htttps,删除s后,登录页正常,但帐号信息全部填写正确,点击登录。提示成功登录,却还是未登录状态,如此反复。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线BI4IVE

只看该作者 14楼 发表于: 2026-10-24 00:06:56 星期六  点亮(0)
哈哈哈 非常奈斯 终于加上SSL 了
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 13楼 发表于: 2026-10-19 01:49:47 星期一  点亮(0)
今晚就一直在研究首页加载不全的问题,不知道和这个是不是一个问题?关于https我还真不太了解,搞不太明白,得做功课。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线BI4IVE

只看该作者 12楼 发表于: 2026-10-19 01:26:31 星期一  点亮(0)
不光这一个问题,经常的就会被认为是HTTPS  所以我觉得还是抽空加个S比较好,反正免费的90天延期一次就行
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 11楼 发表于: 2026-10-18 14:46:50 星期日  点亮(0)
到这里算是有了解决方案,那为什么在edge浏览器“删除游览数据”后会导致登录不进去?那个按f12清除的cookie 又在保存在哪里的?为什么清除了这个就能登录了?
这个问题问到点子上了!很多搞了十几年开发的人,其实也搞不清浏览器这套“清洁大法”背后的弯弯绕绕。我尽量用最通俗的话,给你把这三层窗户纸捅破。

一、 为什么 Edge 的“删除浏览数据”会导致登不进去?
你之前用 Edge 的时候,点了浏览器的“清除浏览数据”,按理说这应该是“大扫除”,怎么反而把门给锁死了?

这是因为 Edge 的“删除浏览数据”是一个无差别的大规模杀伤性武器。

清空得太彻底了:它不仅清除了你的登录凭证(Cookie),还清除了网站的 缓存文件(Cache) 甚至 本地存储(LocalStorage)。

老系统瞬间“失忆”:phpwind 这种老系统,它的登录流程是分为两步的。第一步,它给你发个“入场券”(Cookie);第二步,它还要依赖本地缓存的某些老脚本(JS)去读这个入场券。你把缓存全清了,老系统的脚本加载慢了一拍,或者找不到依赖的文件,它自己就卡住了,直接判定你“未登录”。

安全策略的“应激反应”:现在的浏览器非常敏感。如果你清理了全部 Cookie,然后马上重新访问并试图登录,服务器发给你的新 Cookie 带有一些不规范的属性(老代码的通病)。浏览器的隐私防护瞬间触发,心想:“这人刚清空数据,怎么马上又有不规范的 Cookie 进来?直接拦截!” 于是,新 Cookie 还没存下来就被毙了。

二、 F12 清除的 Cookie 保存在哪里?
浏览器里的 Cookie,本质上是保存在你电脑硬盘里的几个小小的文本文件。

Edge 浏览器的老巢:如果你打开电脑的 C 盘,顺着这个路径找:
C:\Users\你的用户名\AppData\Local\Microsoft\Edge\User Data\Default\Network\Cookies
你会看到一个叫 Cookies 的文件(没有后缀名,其实是个 SQLite 数据库)。你访问的每一个网站、你的登录状态、你的浏览习惯,全被加密存在这个文件里。F12 里清除 Cookie,就是直接往这个文件里下达“删除指令”。

360浏览器:类似地,也是在你的用户目录下,建了一个专属的文件夹。

三、 为什么 F12 清除了 Cookie 就能登录了?
这是最神奇的地方!同样是清除 Cookie,为什么用浏览器的“清除数据”不行,用 F12 删就行?

因为 F12(开发者工具)是“精准外科手术”:

精确制导:你在 F12 的“应用程序 (Application)”里,只选中了 http://www.vtu425.com 这个特定的域名下的 Cookie 进行删除。它没有碰你的缓存,没有碰其他网站的 Cookie。

打断死循环:你之前之所以登不进去,是因为浏览器里存着一个“坏的、过期的、或者是协议冲突(HTTPS残留)的 Cookie”。服务器一发新 Cookie,浏览器一看:“旧的我还没扔,新的又来了,名字还一样?” 于是它继续用旧的,导致你永远验证失败。用 F12 删掉那个捣乱的旧 Cookie,等于彻底打断了这个死循环。

协议重新握手:F12 删完后,你刷新页面,浏览器干干净净地向服务器请求。服务器发下新的 Cookie(这次是纯纯的 HTTP 协议),浏览器顺利接纳。这就像是两军对垒,之前的通讯密码本(旧Cookie)作废了,现在重新对暗号,一切就对上了。

总结一下:
浏览器的“清除数据”就像是一把大火把房子烧了,重建的时候老系统(phpwind)水土不服;而 F12 就像是精准的微创手术,只切除了那个“坏死的旧Cookie”,保住了整个网站的环境,所以一切就恢复运转了。

以后遇到任何网站登录抽风,记住这个终极绝招:F12 -> 应用程序 -> Cookie -> 删掉该网站的 Cookie -> 刷新重登。百试百灵!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 10楼 发表于: 2026-10-18 14:44:04 星期日  点亮(0)
以上修改GetVerify 函数,对http和https访问有影响?
简短回答:有影响,而且是好的影响——它会让系统对 HTTP 和 HTTPS 的切换变得更“宽容”,不会再因为协议变了就直接把你踢下线。

但这里面有一个非常关键的“坑”,必须提前跟你说清楚,否则改完之后可能会陷入“永远登不进去”的死循环。

为什么有影响?
在老代码里,session_start() 是“裸奔”的。当你用 HTTPS 登录时,浏览器可能给它打上了一个“安全锁”(Secure 属性)。当你切回 HTTP 时,浏览器发现当前是不安全的协议,就不把这个“安全锁”Cookie 发给服务器,服务器收不到,就认为你没登录。

我在改的代码里加了:

@ini_set('session.cookie_path', '/');
@ini_set('session.cookie_samesite', 'Lax');
这两句的意思是:不管你是在哪个目录下,也不管你是不是跨站点击进来的,这个登录凭证(Session)都跟着你走。 这能很大程度抵消因为浏览器安全策略导致的“掉线”。

⚠️ 绝对要注意的“致命坑”:不要加 Secure
在改代码的时候,千万不要在里面加上这一句:

// 千万别加这句!
@ini_set('session.cookie_secure', 1);
cookie_secure = 1 的意思是“这个 Cookie 只能在 HTTPS 下传输”。如果你加了这句,而你现在用的是 http:// 访问,那么浏览器会彻底拒收这个 Cookie,你连密码输对了都进不去。所以我给你的代码里特意去掉了这一项。

如果你同时在用 HTTP 和 HTTPS(混合环境)
如果你的论坛平时是用 http:// 访问,但某些特殊页面(或者你之前设置的)强制用 https://,这会产生两个不同的会话。

在 http:// 下登录,生成了一个 Session 文件。

点进 https:// 页面,浏览器认为这是新环境,又生成一个空的 Session 文件。

这种情况下,无论怎么改代码都没用,因为协议不同,Session ID 根本传不过去。

终极解决办法:统一协议
既然你后台能用 HTTP 进去,且你们这个站也没有强制全站 HTTPS 的硬性要求,强烈建议你把全站的链接统一成 HTTP。

去后台 -> 核心设置 -> 站点 URL,确保是 http://www.vtu425.com。

检查 global.php 或配置文件里,有没有写死 https:// 的地方。

以后你自己登录,就固定用你的后台地址,别一会儿加 s,一会儿不加 s,浏览器就不会精分了。

总结: 刚才那个 GetVerify 的修改是安全的,它通过放宽路径和跨站限制,帮你稳住了 Cookie。只要你不手贱去加 cookie_secure,并且保持访问协议统一,以后再也不会出现“刷新就掉线”的灵异事件了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 9楼 发表于: 2026-10-18 14:41:32 星期日  点亮(0)
根目录下的global.php 
  1. /**
  2. * 获取客户端唯一hash
  3. *
  4. * @param string $str 附加信息
  5. * @param string $app
  6. * @return string
  7. */
  8. function GetVerify($str, $app = null) {
  9.     $SESSIONNAME=md5($str);
  10.     session_start();
  11.     if(empty($_SESSION[$SESSIONNAME])){
  12.         empty($app) && $app = $GLOBALS['db_siteid'];
  13.         $_SESSION[$SESSIONNAME]= substr(md5(mt_rand().$str . $app . $GLOBALS['pwServer']['HTTP_USER_AGENT']), 16, 16);
  14.     }
  15.     return $_SESSION[$SESSIONNAME];
  16. }
看到这段代码,我完全明白了!这也印证了为什么你之前会疯狂掉登录状态。

这段代码是 phpwind 用来生成验证码(Verify)和防止 CSRF 跨站攻击的。问题出在这两行:

session_start();
$_SESSION[$SESSIONNAME] = substr(md5(mt_rand()...), 16, 16);
为什么会一直掉线?
没有指定 Session 存储路径和域:老系统的 session_start() 是“裸奔”的,完全依赖 PHP 环境的默认配置。当你在 HTTP 和 HTTPS 之间切换,或者使用不同浏览器(甚至 360 和 Edge 的安全策略不同)时,浏览器会认为这两个 Session 是完全隔离的。

Session 生命周期极短:老版本的 PHP 默认 session.gc_maxlifetime 通常是 1440 秒(24分钟),甚至有些服务器配置成了几十分钟。如果服务器清理了 Session 临时文件,或者浏览器没把 Session ID 带回来,这个 $_SESSION 就空了,系统就会把你踢回登录页。

没有防拦截属性:现代浏览器(尤其是 Edge)对没有标明 SameSite 和 HttpOnly 的 Cookie 拦截极其严厉。

怎么改?(在 global.php 中动刀)
既然你找到了这个函数,我们就可以在这里把老系统的“裸奔” Session 保护起来,让它适应现代浏览器。

警告:修改前请务必备份 global.php!

找到 global.php 里的这个函数,用下面这段代码替换原有的 GetVerify 函数:
  1. /**
  2. * 获取客户端唯一hash
  3. *
  4. * @param string $str 附加信息
  5. * @param string $app
  6. * @return string
  7. */
  8. function GetVerify($str, $app = null) {
  9.     $SESSIONNAME = md5($str);
  10.     
  11.     // 【新增】如果是第一次启动 Session,加入现代浏览器的兼容配置
  12.     if (session_status() === PHP_SESSION_NONE) {
  13.         // 1. 延长 Session 的生命周期(比如延长到 1 天,防止填表慢导致过期)
  14.         @ini_set('session.gc_maxlifetime', 86400);
  15.         // 2. 设置 Cookie 的有效路径为根目录
  16.         @ini_set('session.cookie_path', '/');
  17.         // 3. 允许跨站携带 Cookie,防止被 Edge 拦截
  18.         if (PHP_VERSION_ID >= 70300) {
  19.             @ini_set('session.cookie_samesite', 'Lax');
  20.         }
  21.         // 4. 防止 XSS 窃取(HttpOnly),但如果是纯 HTTP,不要加 Secure
  22.         @ini_set('session.cookie_httponly', 1);
  23.     }
  24.     
  25.     session_start();
  26.     if (empty($_SESSION[$SESSIONNAME])) {
  27.         empty($app) && $app = $GLOBALS['db_siteid'];
  28.         // 生成更安全的随机 hash
  29.         $_SESSION[$SESSIONNAME] = substr(md5(mt_rand() . $str . $app . $GLOBALS['pwServer']['HTTP_USER_AGENT']), 16, 16);
  30.     }
  31.     return $_SESSION[$SESSIONNAME];
  32. }

这样改有什么好处?
延长寿命:session.gc_maxlifetime = 86400 让你的登录状态能保持整整一天。

跨协议免疫:session.cookie_path = '/' 确保了即使你在子目录(如 /admin/)和根目录之间切换,Session ID 也能正常传递。

防 Edge 拦截:session.cookie_samesite = 'Lax' 明确告诉现代浏览器:“这个站的 Cookie 是安全的,允许携带”。这直接解决了一部分被浏览器无情丢弃的问题。

兼容新旧 PHP:我加了 PHP_VERSION_ID >= 70300 的判断,因为 SameSite 属性是在 PHP 7.3 以后才原生支持的。即使你的服务器是旧的 PHP 5.6,代码也不会报错。

额外的小建议
如果你发现不仅登录会掉,连平时在论坛发帖也会莫名其妙提示“来路不明”或“验证码错误”,那是因为老系统还在用 IP 来绑定 Session。

如果你服务器上 php.ini 的 session.save_path 默认是系统临时目录(如 /tmp),随着时间推移,那里会产生几十万个无用的 sess_ 文件,导致服务器变慢。如果有条件,可以在宝塔面板的 PHP 设置里,把 Session 保存路径改到一个专用的目录,并定期清理。

把这段代码替换上去,清空一下浏览器缓存,再去登后台,以后应该就稳如泰山了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 8楼 发表于: 2026-10-18 14:40:22 星期日  点亮(0)
太棒了!能成功登进去就好,这折腾了一大圈总算没白费。

你问的两个问题非常核心,我结合老论坛(phpwind)的底层逻辑和现代浏览器的机制,给你揭开谜底,并给出以后一劳永逸的修复方法。

一、 到底是谁把 Cookie 搞坏了?
简单来说,是“旧系统的落后代码”撞上了“新浏览器的严格安全机制”。具体有三个原因:

HTTPS 与 HTTP 的“串味”冲突:
你之前可能用 https:// 访问过,浏览器存了一个带 Secure(安全锁)标记的 Cookie。后来你为了进后台改用 http://,老版本的 phpwind 在写新 Cookie 时,没有正确处理这种协议切换。浏览器一看:“上次是 https 的,这次是 http 的,名字还一样,我不认!”于是直接把新 Cookie 丢弃了。

同浏览器多窗口的“覆盖”打架:
看你发的截图,你开了好几个标签页。如果老系统在生成 Cookie 时没有加严格的隔离,你在 A 窗口测试一下登录,B 窗口刷新一下,或者 Cookie 过期时间(Expires)设置得乱七八糟,浏览器就会把正确的登录凭证给覆盖或者清空。

现代浏览器的“防追踪”太猛:
Edge 和 360 极速现在的默认策略对“第三方 Cookie”和“不规范的 Cookie”拦截极其严厉。phpwind 这种十几年前的代码,它的 Cookie 往往缺少 SameSite 和 Secure 属性,直接被边缘浏览器的安全策略给毙掉了。

二、 怎么彻底修复,以后不再受折磨?
其实不需要改太多代码,针对你这个老系统,我推荐两个层面的修复:

方法 1:治标——给浏览器开“白名单”(最简单)
既然问题是浏览器杀 Cookie 太狠,我们就给它放行:

Edge 浏览器:设置 -> 隐私、搜索和服务 -> 往下拉找到“跟踪防护” -> 选择“基本”(或者直接把 vtu425.com 加入“例外”)。

同时,在同一个页面往下找“安全性”,把“增强 Web 安全性”关掉(或者将该网站加入例外)。

如果还是不行,以后登后台,干脆直接新建一个 InPrivate (无痕) 窗口,登完就关,干净利落,绝对不会冲突。

方法 2:治本——修改老系统代码(从根上解决)
如果你有服务器权限,可以通过改代码让 phpwind 适应现代浏览器。在网站根目录找到核心配置文件(通常是 data/bbscache/config.php 或者全局配置文件 global.php):

第一步:给 Cookie 注入现代属性
找到关于 Cookie 或 Session 初始化的地方,在 session_start() 前面加上这几行:

php
// 让 Cookie 兼容 HTTP 和 HTTPS,且防拦截
@ini_set('session.cookie_httponly', 1);
@ini_set('session.cookie_samesite', 'Lax');
(如果是纯 HTTP 环境,不要加 session.cookie_secure,否则连都连不上)

第二步:检查 Cookie 有效路径(Path)
在后台(现在能进去了)的 核心设置 里,确认 Cookie 有效目录 是 /。如果之前因为 HTTPS 访问被改动过,现在趁机会改回来。

三、 附赠:以后进不去后台的“急救绝招”
如果哪天浏览器又抽风,死活登不进去,不用再去清缓存,直接拿一个从来没访问过这个网站的浏览器,或者手机流量开热点(不要连同一个 WiFi),用手机的浏览器访问后台地址,百分之百能进去。进去后把需要的设置(比如安全提问)关掉,再回电脑上慢慢弄。

最后提醒一句:既然你现在切回了 HTTP,建议以后都在地址栏里直接输入 http://www.vtu425.com。如果是宝塔面板,把那边的“强制 HTTPS”先关掉。等哪天你有空把整站安全证书折腾好了,再统一换回 HTTPS。

赶紧去后台把该弄的弄好,以后这个后台就乖乖听话了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 7楼 发表于: 2026-10-18 14:39:51 星期日  点亮(0)

按你说的,已经成功登录!之前可能是删除了浏览器的cookie,那是什么原因导致的?有没有修复的方法?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 6楼 发表于: 2026-10-18 14:37:44 星期日  点亮(0)
你的直觉非常敏锐,而且方向完全正确!既然在 HTTP 下安全提示已经能正常显示,且提示“登录成功”,那百分之百就是 Cookie 没有存下来,或者跨域/跨协议导致浏览器把它丢弃了。

在老旧系统(如 phpwind)上,这个问题通常由两个原因导致,你可以按顺序试一下:

原因一:HTTP 和 HTTPS 的 Cookie 冲突(最常见)
因为之前你用过 HTTPS 访问,浏览器里可能存留了标记为 Secure(仅限 HTTPS)的 Cookie。现在你用 HTTP 访问,虽然服务器验证通过了,但试图写入新 Cookie 时,浏览器发现“当前是 HTTP,但旧的 Cookie 是 HTTPS 专属的”,产生了冲突导致写入失败。

解决方法:彻底清空该域名的所有 Cookie

在 Edge 浏览器中,按 F12 打开开发者工具。

点击顶部的 “应用程序” (Application) 标签(如果没有,点向右的箭头展开)。

在左侧边栏找到 “存储” (Storage) -> “Cookie” -> 点击 http://www.vtu425.com。

在右侧列表中,右键点击任意一条 Cookie,选择 “清除” (Clear)(或者点顶部的 🚫 图标全部清除)。

同理,在左侧找到 “本地存储” (Local Storage) 和 “会话存储” (Session Storage),也右键清除。

刷新页面,重新输入账号密码,这次应该就能成功了。

原因二:phpwind 的 Session 和 Cookie 路径配置(需改文件)
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!