2013-03-25 95 views
0

,所以我有这个登录页面的重定向取决于用户名

<?php 
    require("common.php"); 
    $submitted_username = ''; 
    if(!empty($_POST)) 
    { 
     $query = " 
      SELECT 
       id, 
       username, 
       password, 
       salt, 
       email 
      FROM users 
      WHERE 
       username = :username 
     "; 
     $query_params = array(
      ':username' => $_POST['username'] 
     ); 

     try 
     { 
      $stmt = $db->prepare($query); 
      $result = $stmt->execute($query_params); 
     } 
     catch(PDOException $ex) 
     { 
      die("Failed to run query: " . $ex->getMessage()); 
     } 
     $login_ok = false; 
     $row = $stmt->fetch(); 
     if($row) 
     { 
      $check_password = hash('sha256', $_POST['password'] . $row['salt']); 
      for($round = 0; $round < 65536; $round++) 
      { 
       $check_password = hash('sha256', $check_password . $row['salt']); 
      } 

      if($check_password === $row['password']) 
      { 
       $login_ok = true; 
      } 
     } 
     if($login_ok) 
     { 
      unset($row['salt']); 
      unset($row['password']); 
      $_SESSION['user'] = $row; 
      header("Location: private.php"); 
      die("Redirecting to: private.php"); 
     } 
     else 
     { 
      print("Login Failed."); 
      $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); 
     } 
    } 

?> 
<h1>Login</h1> 
<form action="login.php" method="post"> 
    Username:<br /> 
    <input type="text" name="username" value="<?php echo $submitted_username; ?>" /> 
    <br /><br /> 
    Password:<br /> 
    <input type="password" name="password" value="" /> 
    <br /><br /> 
    <input type="submit" value="Login" /> 
</form> 

会议(的common.php)

<?php 

    // These variables define the connection information for your MySQL database 
    $username = "root"; 
    $password = ""; 
    $host = "localhost"; 
    $dbname = "phplogin"; 


    $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
    try 
    { 
     $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to connect to the database: " . $ex->getMessage()); 
    } 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

    if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) 
    { 
     function undo_magic_quotes_gpc(&$array) 
     { 
      foreach($array as &$value) 
      { 
       if(is_array($value)) 
       { 
        undo_magic_quotes_gpc($value); 
       } 
       else 
       { 
        $value = stripslashes($value); 
       } 
      } 
     } 

     undo_magic_quotes_gpc($_POST); 
     undo_magic_quotes_gpc($_GET); 
     undo_magic_quotes_gpc($_COOKIE); 
    } 

    header('Content-Type: text/html; charset=utf-8'); 
    session_start(); 
?> 

我想要做的是谁时,登录用户有“身份证”的“5”,它会被重定向到另一个不同于private.php代码中所述的页面。如果它发现“id”等于五,我可以将它重定向到另一个页面吗?它就像某种管理页面。

+0

如果使用条件if($ login_ok)block ..? – alwaysLearn 2013-03-25 08:32:58

回答

1

是的,你可以做到这一点。试试这个,你已经写

if($login_ok) 
     { 
      unset($row['salt']); 
      unset($row['password']); 
      $_SESSION['user'] = $row; 
      if($row['id']==5) 
      header("Location: yourpage.php"); 
      else 
      header("Location: private.php"); 
     } 
0

您需要存储idsession然后就经常检查session

if(isset($_SESSION['id']) 
{ 
    //retrieve data of user 5 from database 
} 
else 
{ 
    //redirect to login page 
} 
0
  1. 不要拿用户是否是管理员或使用id非管理员,添加在数据库中的字段说type,如果用户是admintypeadmin,如果不让它成为user

  2. 在检查用户登录数据库的特定用户type现场后,按照该重定向。

考虑到这是对重定向代码:

if($login_ok) 
    { 
     unset($row['salt']); 
     unset($row['password']); 
     $_SESSION['user'] = $row; 
     if($row['type'] == "admin"){ 
      header("Location: private.php"); 
      die("Redirecting to: private.php"); 
     } 
     else{ 
      header("Location: otherpage.php"); 
      die("Redirecting to: private.php"); 
     } 

    } 

优势:

  1. 如果删除用户或添加新用户,它不会影响你的编码部分。
  2. 你可以有多个管理员,但你只需要检查一个条件(不需要检查每个用户的ID)。
0
if($_SESSION['id']==5) 
    header("Location: yourpage.php"); 
else 
    header("Location: private.php"); 
exit;