登录、验证码与会话异常
验证码不显示、登录后跳回、会话丢失与手机验证码登录的常见原因和处理方法。
一、验证码不显示
验证码由 core/Captcha 生成图像、用会话记录答案,两头任一不通都会显示不出来:
- 会话不可用:
session.save_path目录不存在或不可写,答案存不下,图片自然出不来。确认目录存在并让 www 可写。 - GD 扩展缺失:绘制验证码依赖 gd,缺了就是空白,在 PHP 扩展中勾选安装。
- 会话未启用:会话配置被改坏时,恢复为默认的文件会话即可。
ls -ld /tmp /var/lib/php/sessions
php -i | grep -E 'session.save_path|session.auto_start'
二、登录后被弹回登录页
- 会话写不进去:与上面同一根因,先看会话目录权限。
- 会话目录堆积:过期会话未清理、目录写满时,删掉过期会话文件后即可恢复。
- HTTPS 下的 Cookie:站点全站 https 后,若 Cookie 的 secure 属性与访问协议不一致,浏览器带不上会话,表现为登录态丢失。开启 https 后统一用同一协议访问。
- 浏览器与 CDN 缓存:先清空 Cookie 或换隐身窗口复现,能复现再去改配置。
三、手机验证码登录
系统支持手机号短信直接登录,无需注册。站长先在后台配好短信接口(支持阿里云、腾讯云与通用接口三类),用户输入手机号获取验证码即可进入。
账号合并逻辑:手机号未绑定过账号时自动新建;手机号已绑定过账号时直接进入该账号;同一手机号存在多个历史账号时,默认进入最新的一个,也可设置自动合并。用户在未登录状态下发布的信息,登录后会自动归到当前账号名下。
四、第三方登录(以 QQ 登录为例)
在开放平台创建网站应用后,会拿到 AppID 与 AppKey,填入后台「网站设置」的登录接口项中。需要特别注意回调地址:必须填写 http://你的域名/qqlogin;若站点启用 https,还要同时补上 https://你的域名/qqlogin,两条之间用半角分号隔开。回调地址与实际访问协议、域名(含是否带 www)不一致时,就会出现授权后跳回空白或报错。
五、排查用日志与记录
tail -n 50 /www/wwwlogs/你的域名.error.log
tail -n 50 /www/server/php/82/var/log/php-fpm.log
后台登录记录表为 kf_admin_loginlog,可核对登录时间与来源,区分是“根本没提交成功”还是“提交成功但会话丢失”。
提示:若失败登录的来源 IP 异常集中,可结合 kf_ip_list 做访问限制。