0

我做了一个简单的登录页面来登录用户,但我仍然有一些问题

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

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

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

这是我的登录脚本

头文件.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>

登录.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");
    }
}
?>

登录.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>
4

1 回答 1

0

您应该使用 mysqli 而不是 mysql_* 或 PDO 类来利用准备好的语句

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

$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;
}
于 2013-07-07T09:11:58.590 回答