2016-11-10 114 views
0

我開發了自己的login.php,但是登錄成功,但會話未被捕獲。每次我進入另一個鏈接時,它都會讓我回到login.php並要求我重新登錄。我曾嘗試使用$ _SESSION(如評論),但出來登錄頁面無法完全登錄。未捕獲到PHP會話

預先感謝

下面是我的代碼

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
$uid = $_POST["uid"]; 
$password = $_POST["password"]; 
} 


include("src/db.php"); 
session_start(); 

if(!isset($uid)) { 

//if(!isset($_SESSION['$uid'])){ 

?> 

<MY HTML code -- Let me know if you need to check my HTML as well> 

<?php 
exit; 
    } 

dbConnect("myDB"); 
$sql = "SELECT * FROM sys_user WHERE username = '$uid' AND password = '$password'"; 

$result = pg_exec($sql); 
$dept_id = pg_result($result,0,"dept_id"); 
if (pg_num_rows($result) == 1) { 
    $_SESSION['uid'] = $uid; 
    $_SESSION['password'] = $password; 
    $_SESSION['dept_id'] = $dept_id; 

} 

?> 
<? 
// ** THIS IS THE NEW SECTION ** 
//if ((pg_numrows($result) == 1) AND ($access != 'Y')) { 


// ** END OF NEW SECTION ** 
?> 
<? 

if (pg_num_rows($result) == 0) { 
//session_unregister("uid"); 
//session_unregister("password"); 
// session_unregister("dept_id"); 
unset($_SESSION["uid"]); 
unset($_SESSION["password"]); 
unset($_SESSION["dept_id"]); 

?> 
+0

問題是你如何檢查該會話是否已被填充。 'isset($ uid)'顯然不會工作,因爲'uid'存儲在$ _SESSION ['uid']'中,這是不同的。你只是在那裏注意到你注意到的條件,但是你用''uid''把'uid''弄糊塗了...... – arkascha

+0

在代碼的頂部添加'session_start();' –

+0

嗨@arkascha,我是否錯誤地聲明$ uid?因爲我不能將它聲明爲isset(uid),所以它不會運行... – Sap1

回答

0

在session_start()移動到文件的頂部。

+0

嗨@dhiren,不工作以及..謝謝你答覆btw – Sap1

+0

也是你的代碼'dbConnect(「myDB」); $ sql =「SELECT * FROM sys_user WHERE username ='$ uid'AND password ='$ password'」; $ result = pg_exec($ sql); $ dept_id = pg_result($ result,0,「dept_id」);如果(pg_num_rows($ result)== 1){ $ _SESSION ['uid'] = $ uid; $ _SESSION ['password'] = $ password; $ _SESSION ['dept_id'] = $ dept_id; }'在此if($ _SERVER [「REQUEST_METHOD」] ==「POST」)下移動) –