尝试编写注销功能

时间:2016-05-05 01:59:38

标签: php login

我在php中编写了这段代码,但文件userarea.php有时会起作用,有时却不起作用。与函数logout.php相同。我如何知道它正常工作或我的登录文件中是否有任何错误?

confing.php:

<?php
$host = "localhost";
$database = "DOD";
$user = "root";
$pass = "";

session_start();
$connection = mysqli_connect($host , $user , $pass , $database);

if(!$connection){
    die(mysqli_connect_error());
}

function logeedin(){
    if (isset ($_SESSION[('Username')]) && isset($_COOKIE[('Username')]))
        return TRUE;
}
?>

的login.php:

<?php include('confing.php'); ?>
<html>
<body>
<form action="login.php" method="POST">
    Username : <input type="text" name="Username" /><br>
    Password : <input type="password" name="Password" /><br>
    Remember Me: <input type="checkbox" name="remmberme" /><br>
    <input type="submit" name="login" value="login" /><br>
</form>
<?php

if (logeedin() == TRUE){
    header("location : userarea.php");
}

if (isset($_POST['Login'])){
    $Username = $_POST['Username'];
    $Password = $_POST['Password'];
    $Remmember = $_POST['Remmember'];

    if(!empty($Username) && !empty($Password)){
        $sql = "SELECT * FROM USER WHERE Username = '$Username'";
        $resulet = mysqli_query($connection,$sql);

        while ($row = mysqli_fetch_assoc($resulet)) {
            $db_password = $row["Password"];

            if($db_password ==  $Password)
                $login = TRUE;
            else
                $login = FALSE;
        }

        if ($login == TRUE){
            if(isset($Remmember)){
                setcookie('Username',$Username,time()+3600);
            }
            else {
                $_SESSION['Username']= $Username;
            }

            header ("location: userarea.php");
        }
        else {
            echo "Error";
        }
    }
    else{
        echo "Error";
    }
}
?>
</body>
</html>

logout.php

<?php
session_start();
session_destroy();
setcookie("Username","",time()-6300);
header("location : login.php");
?>

userarea.php

<?php
include('confing.php');
if(!logeedin ()){
    header("location : login.php");
    exit(); 
}
?>  
welcome<br>
<?php echo $_SESSION['Username']; ?>
<a href= "logout.php"> Log out </a> 

1 个答案:

答案 0 :(得分:0)

正如Rasclatt所说,混合cookie和会话是一回事。还可以unset尝试$_SESSION数组的整个或特定数组元素。

通过调用session_destroy()销毁会话可能不够。

  

我如何知道它正常工作或我的错误是否有任何错误   登录文件?

您是否发现了为什么没有显示错误?您的代码显示您不想要它们。分别使用try/catch块,如果需要,捕获异常和var_dump。您可以在代码中实现大量改进。