Index无法通过session.php及用户认证跳转至HOME页面问题
问题分析与排查方案
我想通过session.php在HOME.php页面展示用户的全部信息,但index.php无法跳转到该页面,相关代码如下:
HOME.php 代码
<?php require_once './assets/php/session.php'; echo '<pre>'; print_r($data); ?> <a href="assets/php/logout.php">Logout</a>
session.php 代码
<?php session_start(); require_once 'auth.php'; $cuser = new Auth(); if(!isset($_SESSION['user'])){ header('location:index.php'); die; } $cemail = $_SESSION['user']; $data = $cuser->currentUser($cemail); ?>
Auth类的currentUser方法代码
public function currentUser($email){ $sql = "SELECT * FROM users WHERE email=:email AND deleted !=0"; $stmt = $this->conn->prepare($sql); $stmt->execute(['email'=>$email]); $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row; }
排查方向
- 跳转逻辑缺失:检查
index.php是否有登录验证通过后跳转到HOME.php的代码,同时确认登录成功时是否正确设置了$_SESSION['user'],没有这两步就不会触发跳转。 - SESSION启动时机:
index.php处理登录请求时必须先调用session_start(),否则$_SESSION['user']无法被正确存储和读取。 - 路径正确性:确认
session.php里跳转的index.php路径是否匹配实际目录结构,若HOME.php在根目录,当前相对路径没问题,否则需改为绝对路径(如/index.php)。 - 输出缓冲问题:检查
session.php和HOME.php的开头是否有多余空格、HTML标签等输出,header()之前有任何输出都会导致跳转失效。 - SQL查询逻辑:
currentUser方法的SQL条件是deleted !=0,若用户的deleted字段为0会返回空数据,但这不会直接导致跳转失败,需确认登录逻辑是否正确验证了用户存在性。 - SESSION存储配置:检查服务器的SESSION配置,比如
session.save_path是否可写,确保SESSION能正常保存和读取。
内容的提问来源于stack exchange,提问作者Aaditya
相关产品推荐
相关产品推荐

