2013-06-22 2 views
0

Это мой код:PHP Session переменных Не Передача с заголовком и ob_start Функцией

<?php 
ob_start(); 
session_start(); 
include("index.php"); 
if (isset($_POST['user'],$_POST['pass'])): 
    $con=mysqli_connect("connect info"); 
    if (!$con){ 
     die('Could not connect to Database: '.mysqli_error());} 
$pass=($_POST['pass']); 
$query0 = "SELECT * FROM user WHERE username = '" . $_POST['user'] ."' AND password = '" . $pass . "'"; 
$resource0 = mysqli_query($con,$query0); 
if(!$resource0): 
    die("Error conducting query. ".mysqli_error($con)); 
    endif; 
    if(mysqli_num_rows($resource0) == 0){ 
     echo "Username not find"; 
     header("Location: /login.php");} 

    $result0 = mysqli_fetch_row($resource0); 
     $_SESSION['ID'] = $result0[0]; 
     $_SESSION['userType'] = $result0[3]; 

    if(!isset($_SESSION['ID'])): 
     //header("Location: ..."); 
    else: 
     header("Location: ...."); 
    endif; 
else: 
    if(isset($_POST['from'])): 
     $_SESSION['from'] = $_POST['from']; 
    endif; 

    ?> 

<?php endif; ?> 

Этот код берет имя пользователя и пароль и хранит пользователь и поиск в базе данных для идента. Один раз находит информацию, которую он хранит в переменной сеанса 'ID'.

ПРОБЛЕМА: Когда переменная «ID» сессии передается на следующую страницу, она не установлена. Удивительно, но этот код без функции ob_start работал вчера утром, но днем ​​не работал. Я знаю, что это не настройка, потому что две вещи: Когда я эхо на следующей странице, ничего не появляется, и поскольку когда я пытаюсь запустить запрос с переменной «ID» сессии, я получаю ошибку mysql, говоря, что запрос не может быть выполнен.

Это код на следующей странице, которая не работает. Сначала я подумал, что может быть что-то не так с моим запросом, потому что я получал эту ошибку:

«Ошибка при выполнении запроса. У вас возникла ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии сервера MySQL для правильный синтаксис для использования рядом с '' в строке 1 "

Но когда я попытался напечатать переменную« ID »сессии, ничего не печатается.

<?php session_start; 
    // Create connection 
    $con=mysqli_connect(connect info....); 

// Check connection 
if (mysqli_connect_errno($con)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$query0 = "SELECT * FROM studentProfile WHERE sID = ".$_SESSION['ID']; 
$resource0 = mysqli_query($con,$query0); 
if(!$resource0): 
echo $_SESSION['ID']; 
die("Error conducting query. ".mysqli_error($con)); 
endif; 

.......(rest of code) 

Solutions уже пытались: Я пытался их всех ... session_write_close(), session_regenerate_id (истина), session_commit(), ob_end_flush(). Я сначала попытался установить переменную сеанса на домашней странице, но как только функции выполняются в переменной «ID» сессии, больше не устанавливается.

Пожалуйста, помогите! Я прочитал все форумы, которые я смог найти по этой проблеме, но ничего не работает.

ответ

0

Что вы написали на следующей странице, что ваш код не работает. Пожалуйста, предоставьте мне подробную информацию. попробуйте это на странице, которую вы указали по расположению заголовка. Может быть, ваша сессия может работать.

<?php 
    include('config.php'); 

    if(!isset($_SESSION['ID'])) 
    { 
    header("Location: ../index.html"); 
    } 
    else{ 
    $user_id=$_SESSION['ID'][0]; 
    $user_name=$_SESSION['ID'][1]; 
?> 

и закончить еще часть в последней страницы

+0

Я обновил вопрос с информацией. Я также попробовал код, который вы предложили. Я добавил его на страницу профиля. Однако, поскольку идентификатор сеанса не задан на индексной странице, я просто перенаправляюсь обратно на страницу индекса. – user2510805