【发布时间】:2009-07-26 20:20:10
【问题描述】:
我正在制作一个登录系统,但是当用户登录时,它实际上并没有在会话中存储我希望它存储的任何数据。我什至检查了会话的文件,它是空的。我有 session_start();在所有页面上。我还能做错什么。这是两个主要页面的代码。
登录代码:
<?
if ($DEBUG == true) {
error_reporting(E_ALL);
}
require "header.php";
require_once "dbinterface.php";
require_once "user.class.php";
require_once "config.inc.php";
$db = new db($DB['host'], $DB['user'], $DB['pass'], $DB['database']);
$u_result = $db->run("select user_id from users where user_name = '" . $db->escape($_POST['user_name']) . "'");
if ($u_result == false) {
$url = 'Location: error.php?id=8';
header($url);
}
if (count($u_result) < 1) {
$url = 'Location: error.php?id=3';
header($url);
}
$user = new user($u_result[0]['user_id']);
if ($user->match_password($_POST['pass']) == true) {
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $u_result[0]['user_id'];
$_SESSION['user'] = $user;
} else {
$url = 'Location: error.php?id=4';
header($url);
}
session_write_close();
header('Location: index.php');
?>
每个页面中包含的标题:
<?php
if (!session_start()) {
$url = "Location: error.php?id=13";
header($url);
}
?>
一点背景:
- windows 7(也在 windows 上试过
- 服务器 2008,但目前在 7) PHP
- 存在 5 个本地托管问题
- 每个人都存在问题
- 浏览器
【问题讨论】:
-
您需要将 session_start 放在第一个 php 文件的最顶部。
-
@MrHus:不正确。您只需要在向浏览器输出任何内容之前调用 session_start()。
-
嗨,你解决过这个问题吗?我的回答是否指出了真正的错误?
-
是的,deramon,你的答案是正确的。但是当我看到它时,我自己已经弄清楚了,所以已经自动接受了答案=/对不起。