2016-11-10 78 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”)下移动) –