2013-06-22 46 views
0

傳遞這是我的代碼: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」變量就不再設置。

請幫忙!我已閱讀了所有關於此問題的論壇,但似乎沒有任何工作。

回答

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

我更新了信息問題的其他部分。我也試過你建議的代碼。我將它添加到配置文件頁面。但是,由於沒有在索引頁面上設置會話ID,我只是將其重定向回索引頁面。 – user2510805