登录后将用户重定向到同一页面

时间:2013-07-07 09:06:38

标签: php

我创建了一个简单的登录页面,用于登录用户,但我仍有一些问题

  1. 想要重定向到同一页面,即login.php,但更改标题选项,例如将“signin”替换为“logout”。

  2. 登录后,如果我访问“home”,“contactus”等任何其他链接,会话仍然存在,如果我甚至尝试直到会话被破坏,则无法登录。

  3. 如果您可以提供任何简单的登录项目并附上说明,那就太棒了。

  4. 这是我的登录脚本

    的header.php

    <link rel="stylesheet" href="page_style.css" type="text/css" />
    <div class="container">
    <div id="header">
        <div id="header_text">
           <b><a href="div_tuts.php">Home</a></b>
           <b><a href="aboutus.php">AboutUs</a></b>
           <b><a href="register.php">Register</a></b>
           <b><a href="login.php">SignIn</a></b>?>
           <b><a href="contactus.php">ContactUS</a></b>
        </div>
    </div>
    
    <div id="main">
    
    </div>
    </div>
    

    的login.php

    <?php
    
    /**
    * @author 
    * @copyright 2013
    */
    session_start();
    ob_start();
    include "div_tuts.php"
    
    
    ?>
    <link rel="stylesheet" href="page_style.css" type="text/css" />
    
    <form action="login_check.php" method="POST" id="main">
    <div id="loginbox">
    Username : <input name="uname" type="text" /><br />
    Password : <input name="pass" type="password" /><br />
    <input name="submit" type="submit" value="LogIn" /><br />
    <?php echo $_SESSION['error'];?>
    </div>
    </form>
    <?php session_destroy();?>
    

    login_check.php

    <link rel="stylesheet" href="page_style.css" type="text/css" />
    <?php
    
    /**
    * @author 
    * @copyright 2013
    */
    ob_start();
    session_start();
    include 'config.php';
    
    $username = $_POST['uname'];
    $password = $_POST['pass'];
    
    if(isset($username) && isset($password))
    {
     if(!empty($username) && !empty($password))
     {
        $query = "SELECT username FROM users WHERE username = '$username' AND password = '$password'" ;
    
        $query_run = mysql_query($query);
    
        if($query_run)
        {
            $mysql_num_row = mysql_num_rows($query_run);
    
            if($mysql_num_row == 0)
            {
                $_SESSION['error'] = "You entered Wrong username/password";
                header("Location: login.php");
            }
    
           else if($mysql_num_row == 1)
           {
                $user_name = mysql_result($query_run,0,'username');
                $_SESSION['user_id'] = $user_name ;
                header("Location: loggedin.php");
    
           }
        }
    }
    
    else
        {
    
            $_SESSION['error'] =  "Please provide username/password";
            header("Location: login.php");
        }
    }
    ?>
    

    loggedin.php

    <?php include "div_tuts.php"; ?>
    <div id="main" >
    <div id="loginbox">
    <?php
    
    /**
    * @author 
    * @copyright 2013
    */
    ob_start();
    session_start();
    
    
    
    
    if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
                {
                    echo $_SESSION['user_id'];
                    echo  ',you are logged in <a href = "logout.php">LogOut</a>';
                }
                else
                {
                    header("Location: login.php");
                }
    ?>
    </div>
    </div>
    

1 个答案:

答案 0 :(得分:0)

您应该使用mysqli而不是mysql_ *或PDO Class来利用预准备语句

对于检查登录,您可以使用功能

$iduser = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : NULL;

function checkLogin($iduser){
 if (empty($_SESSION['user_id']))
       header("Location: logout.php");
    }
}

function linkLogin($iduser){
  if(empty($_SESSION['user_id'])){
   $xxx = '<a href="login.php">login</a>';
  }else{
   $xxx '<a href="logout.php">logout</a>';
  }
return $xxx;
}
相关问题