Session取值失效问题:是传递环节还是获取环节出错?
问题排查:加入用户ID后AJAX请求无数据返回
核心问题:JS未正确读取PHP变量
主页面的JS代码里,let korisnik = $korisnik;这一行是关键错误——PHP变量$korisnik没有通过PHP语法输出到JS环境中,导致JS里的$korisnik是未定义的变量,最终传给后端vratiZadatke.php的korisnik参数要么是空值,要么是undefined,用这种无效值做SQL查询条件自然查不到数据。
修复代码:把PHP变量用PHP标签输出到JS里(如果用户ID是字符串类型,记得加引号):
let korisnik = "<?php echo $korisnik; ?>";
其他潜在问题与优化点
- 用户ID获取逻辑不完整:主页面只从Cookie读取用户ID,没考虑Cookie失效但Session仍有效的情况,建议优先从Session获取,再降级到Cookie:
session_start(); $korisnik = null; if (isset($_SESSION["korisnik"])) { $korisnik = $_SESSION["korisnik"]; } elseif (isset($_COOKIE["korisnik"])) { $korisnik = $_COOKIE["korisnik"]; // 同步更新Session,保持状态一致性 $_SESSION["korisnik"] = $korisnik; } // 空值判断,避免无效请求 if (empty($korisnik)) { header("Location: login.php"); exit(); }
- 调试与SQL安全性:
- 可以在
vratiZadatke.php临时添加调试代码,确认接收的参数是否正确:
// 调试用,上线后删除 var_dump($_GET);- 确保
Zadatak::vratiZadatke方法使用了预处理语句拼接SQL,既避免注入风险,也能保证参数正确传入查询条件。
- 可以在
内容的提问来源于stack exchange,提问作者user21626341
相关产品推荐
相关产品推荐

