drcmue4619 2013-07-07 09:06
浏览 37
已采纳

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

I made a simple login page for signing in a user but still I have certain problems

  1. Want to redirect to same page i.e login.php, but changing header option, like replacing "signin" with "logout".

  2. After login if I visit any other link like "home", "contactus" or anything, session remains and cannot login if I even try to untill session is destroyed.

  3. If you can provide with any simple login project with explanation, it will be great.

Here is my login script

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条回答 默认 最新

  • doubu5035 2013-07-07 09:11
    关注

    You should use mysqli instead mysql_*, or PDO Class to take advantage of prepared statement

    for the check login you can use a function

    $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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误