PHP会话变量未通过标头和Ob_Start函数传递

时间:2013-06-22 02:45:39

标签: mysql session http-headers session-variables 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; ?>

此代码获取用户的用户名和密码信息,并在数据库中存储和搜索userID。一旦找到它存储在会话变量“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(true),session_commit(),ob_end_flush()。我已尝试在主页上初始设置会话变量,但是一旦在会话中执行了功能'ID'变量就不再设置了。

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

1 个答案:

答案 0 :(得分:0)

您在下一页上写的代码无效的内容。请告诉我详细信息。 在标题位置指向的页面上尝试此操作。可能是你的会议可以工作。

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

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

并在页面的最后部分结束其他部分