2016-08-16 58 views
0

我正在設置登錄/註銷,並且正在嘗試將用戶ID號發送到網站中的其他頁面,以便我可以在需要時操作數據庫。當用戶登錄時將會話變量設置爲user_id

我使用查詢匹配的電子郵件/密碼和登錄用戶(注:這不是完整的代碼,而不是問題,我相符的電子郵件和密碼)

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password="$pw"); 

然後我取一個數組然後開始一個會話,然後我在網頁上進一步查看頁面。

if(mysql_num_rows($find) == 1){ 
    $row = mysql_fetch_array($result, MYSQL_BOTH); 
    $id= $row ['id']; 
    session_start(); 
    $_SESSION['Login']= $id; 
// Redirect - I use JS to send users to next page 
} 
else { 
    echo '<script type="text/javascript">'; 
    echo 'alert("Invalid Username or Password");'; 
    echo 'history.back();'; 
    echo '</script>'; 
} 
mysql_close($link); 

在其他網頁,我有檢查的會議,如果他們還沒有登錄用戶重定向代碼下面是代碼:

<?php 
session_start(); 
if(!isset($_SESSION['Register'])){ 
    if(!isset($_SESSION['Login'])){ 
    header("location:../notLoggedIn.php"); 
} 
} 
$get_id = $_SESSION['Register']; 
$get_id = $_SESSION['Login']; 
?> 

然後,當我檢查什麼在id變量從此登錄頁面傳遞:

$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
    var_export($id); 

我得到一個空值。出了什麼問題?

+0

放的session_start();在標題上。 – Noman

+0

首先檢查您是否從您的數據庫獲取記錄。看看它在'mysql_num_rows($ find)'裏面。 –

+0

@MahaDev我正在記錄。我檢查了整個陣列。 – tdrsam

回答

0

您必須檢查是否會話未啓動,然後使用session_start();

if (session_status() == PHP_SESSION_NONE) {//php >5.4 
    session_start(); 
} 

,並使用$_SESSION['Login']代替$id

$profile = mysql_query("SELECT * FROM profiles WHERE id=".$_SESSION['Login']); 
0

多的失誤我都看到了。

1)首先修改您的查詢:

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password='$pw'); 

2)文件的頂部開始第二屆。

3)mysqli_close($link);代替mysql_close($link);

4)在最後檢查,如果會話設置正確。

if(isset($_SESSION['Login'])) { 
$get_id = $_SESSION['Login']; 
$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
var_export($id); 
} 
0

嗨請注意以下幾點

1)開始在頁面的頂部session_start(之前任何echowhite space)。

2)我沒有看到你的$_SESSION['Register']。您設置了

3)你傳入session variable不簡單variable所以用這個

$profile = mysql_query("SELECT * FROM profiles WHERE id = $_SESSION['Login']"); 
    var_export($_SESSION['Login']); 

由於$idnull這裏總是

相關問題