如何在用户登录时用logout替换登录

时间:2015-08-04 02:45:38

标签: php html database

我正在尝试使用登录/注册wizerd的网站。我希望当用户登录登录时,注册链接将被注销链接替换。我可以这样做吗? 我的代码在这里......

的header.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">


<link rel="stylesheet" type="text/css" href="style.css"/>

</head>

<body class="body">
<div id="inbody">

<div class="main_header">
    <div class="site_name">

    </div>
    <div class="add">
        <p><a class="link" href="add.php" style="text-decoration:none">Adds</a>&nbsp &nbsp
            <a class="link" href="login.php" style="text-decoration:none">login</a>&nbsp &nbsp
        <a class="link" href="register.php" style="text-decoration:none">Register</a></p>



    </div>
</div>



        <div class="main_body_part"> 

home.php

<?php
include ("include/header.php");
?> 

login_success.php

<?php

include 'database.php';
session_start();
$u_name=$_POST['u_name'];
$password=$_POST['password'];

login($u_name, $password);
function login($name,$pass)
{
    $sql = "SELECT * FROM registration WHERE user_name='$name'";
    $result = mysql_query($sql);
    while($row =  mysql_fetch_array($result))
{
    if($row['password']==$pass)
    {
       $_SESSION['id']=$row['user_id'];
       header('Location:home.php');
    }
    else 
    {
        echo 'not log in';
    }
}
}



?>

database.php中

<?php

$con = mysql_connect("localhost", "root" ,"");
if($con)
{
mysql_select_db("finalproject", $con);
}

现在我该怎么办?

2 个答案:

答案 0 :(得分:6)

你可以使用php if else来有条件地显示正确的html。

<?php if(isset($_SESSION['id'])): ?>
  <a class="link" href="logout.php" style="text-decoration:none">logout</a>
<?php else: ?>
  <a class="link" href="login.php" style="text-decoration:none">login</a>
<?php endif; ?>

还有另外一种你可能更熟悉的符号,它与上面的内容完全相同。

<?php if(isset($_SESSION['id'])){ ?>
  <a class="link" href="logout.php" style="text-decoration:none">logout</a>
<?php }else{ ?>
  <a class="link" href="login.php" style="text-decoration:none">login</a>
<?php } ?>

看一下bcrypt,它可以帮助您将密码存储在哈希而不是纯文本中。它更安全。 How do you use bcrypt for hashing passwords in PHP?

使用预准备语句还将删除代码中的SQL注入漏洞。 How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

将此代码放在要打印Logout的位置。

if(isset($_SESSION['id'])){
echo '<a class="link" href="login.php?action=logout" style="text-decoration:none">logout</a>';
}else{
echo '<a class="link" href="login.php" style="text-decoration:none">logout</a>';
}

您需要在login.php中放置一些代码以便注销:

if (isset($_GET['action']) and $_GET['action']=='logout'){
if(!isset($_SESSION)){session_start();};
unset($_SESSION['id']);
header('Location:home.php');
exit();
}