PHP会话变量未与页眉和Ob_Start功能

问题描述:

传递这是我的代码:PHP会话变量未与页眉和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”中的信息。

问题:当会话'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) 

解决方案已经尝试过:我把它们都试过... session_write_close(),session_regenerate_id(真),session_commit(),ob_end_flush()函数。我曾尝试在主页上初始设置会话变量,但一旦函数在会话中执行“ID”变量就不再设置。

请帮忙!我已阅读了所有关于此问题的论坛,但似乎没有任何工作。

你在下一页上写的代码不起作用。请提供详细信息。 在您通过页眉位置指向的页面上尝试此操作。可能是你的会话可以工作。

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

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

,并最终在最后的页面

+0

我更新了信息问题的其他部分。我也试过你建议的代码。我将它添加到配置文件页面。但是,由于没有在索引页面上设置会话ID,我只是将其重定向回索引页面。 – user2510805