2012-10-27 28 views
0

我想在我的check.php文件我panel.php文件设置会话。我定义$_SESSION['admin']= 1,然后我在panel.php文件评估管理会议,但我不知道为什么我的面板页面重定向到index.php(登录表单)。如何评估PHP会话以将用户重定向到管理面板?

我把下面的所有代码:

check.php:

<?php 
include_once ("function.php"); 
$username = $_POST['tfuser'] ; 
$password = $_POST['tfpass'] ; 

if (isset($username) && isset($password)){ 
    $link = mysql_connect('localhost','root','') or die ('error in connecting to db'); 
    mysql_select_db('login',$link) or die ('error select db'); 

    $sql = "select * from administration 
    where username='$username' and password='$password'"; 

    $result = mysql_query($sql,$link); 

    if (mysql_fetch_assoc($result)){ 
    //login to panel 
    redirect("panel.php"); 
    $_SESSION['admin']= 1 ; 
    } else { 
    //back to login page 
    redirect("index.php?error"); 
    } 
} else { 
    //back to login page 
    redirect("index.php"); 
} 

?> 

panel.php:

<?php 
include_once ("function.php"); 
session_start(); 
if (!isset($_SESSION['admin'])==1){ 
    session_destroy(); 
    redirect("index.php"); 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>admin panel</title> 
</head> 

<body> 
welcome to admin panel 
</body> 
</html> 

我怎样才能解决这个问题重定向?

+0

而你的问题是什么? (如果你更正确地格式化你的代码,会有所帮助) – hakre

+0

@hakre请问我是否可以在包含像panel.php这样的任何文件后开始会话,因为我认为这样会产生会话警告/错误 –

+0

@NullPointer:是的,这可能是一个问题。然而,我还不清楚实际的问题是什么。例如,是否有任何警告或错误消息?也许把'ini_set('display_errors',1); error_reporting(〜0);'在脚本的顶部会显示更多关于这些和其他相关问题的信息。 – hakre

回答

1

您的来电重定向功能设置$ _SESSION [“管理员”]

+0

请说清楚。 – JoyeBright

+0

您在设置变量之前从此页面重定向,这就是$ _SESSION ['admin']仍为空的原因。 我猜你的重定向功能看起来像: 功能重定向($网址){ 标题(“位置:$网址”); 退出; } 调用这个函数的进一步执行,将打破和客户端后,会被重定向到的URL。 –

+0

简单地颠倒这两条线 –

0

尝试检查,如果事情被存储在$结果还是不行。

+0

是的我很肯定这件事,从这个事实中出现的事情是我的会话验证有问题,因为当我从我的验证在这里删除**!**:if(!isset($ _ SESSION ['admin'])== 1),我的脚本正常工作 – JoyeBright

+0

好吧,还有一件事我发现你没有在check.php文件中调用session_start()。 – Delphinium

+0

你能告诉我我应该把session_start()放在哪里吗? – JoyeBright

0

当你编写新的代码,你应该避免mysql_ *函数之前,这里是你的&代码固定移植到PDO可能是它的一些利益。

<?php 
session_start(); 
include_once ("function.php"); 

if($_SERVER['REQUEST_METHOD']=='POST'){ 
    if (isset($_POST['tfpass']) && isset($_POST['tfuser'])){ 
     // PDO CONNECT 
     try { 
      $db = new PDO("mysql:host=localhost;dbname=login", 'root', 'pass'); 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     }catch (Exception $e){ 
      die('mySQL server error: '.$e->getMessage()); 
     } 

     $sql = "SELECT 1 
       FROM administration 
       WHERE username=:user AND password=:pass"; 

     //Prepare the above query 
     $stmt = $db->prepare($sql); 
     //bind the placeholders to the values 
     $stmt->bindParam(':user', $_POST['tfuser']); 
     $stmt->bindParam(':pass', $_POST['tfpass']); 
     //Execute 
     $stmt->execute(); 
     //Fetch Result 
     $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

     if (!empty($result)){ 
      //login to panel 
      $_SESSION['admin']= 1 ; 
      redirect("panel.php"); 
     } else { 
      //back to login page 
      redirect("index.php?error"); 
     } 
    } else { 
     //back to login page 
     redirect("index.php"); 
    } 
}else{ 
    //back to login page, script not accessed via POST 
    redirect("index.php"); 
} 
?> 
相关问题