У меня есть система проверки подлинности PHP на моем сайте с использованием переменной $ _SESSION.Данные PHP SESSION, потерянные между загрузками страниц с помощью WAMPserver 2.0 на localhost
Форма отправляет имя пользователя и пароль в файл «login.php». Он обрабатывается так:
<?php include '../includes/sessionstart.inc.php'; ?>
<?php ob_start(); ?>
if($_POST){
$q = mysql_query("SELECT id, company FROM users WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND password = '".md5($_POST['password'])."'");
if(mysql_num_rows($q) >= 1){
$f = mysql_fetch_Array($q);
$_SESSION['company'] = $f['company'];
$_SESSION['id'] = $f['id'];
$_SESSION['logedin'] = true;
session_write_close();
ob_clean();
header("Location: index.php");
}
После index.php загружается и проверяет, является ли истинным «logedin».
<?php include '../includes/sessionstart.inc.php'; ?>
<?php if(!isset($_SESSION['logedin'])) header('Location: login.php'); ?>
На моем рабочем сервере он продолжается, но на моем Wampserver он возвращается обратно в login.php. Я замечаю, что Wampserver очень медленно загружает страницы, это может что-то с этим сделать. Вот почему я включил session_write_close, чтобы убедиться, что данные сеанса сохранены до переключения страниц, но это не помогает.
Содержание session_start.inc.php просто:
<?php
session_start();
?>
Я использовал, чтобы иметь больше кода там, но в данный момент это именно это. Проблема также существовала до того, как я начал использовать файл include.
Есть ли у кого-нибудь идеи, что я делаю неправильно? Почему Wampserver не передает мои данные SESSION в следующий файл PHP?
Вы проверили заголовки, исходящие с вашего сервера, что на самом деле они содержат файл cookie сеанса? –
Когда я делаю print_r ($ _ SESSION), ничего не отображается. Как проверить исходные заголовки? – thomaspaulb
Вы можете сделать это с расширениями Firefox Firebug или Live http headers или использовать сетевой сниффер. –