php - 使用 PHP 和 MySQL 登录到管理员 - 成员(member)网站 - 登录不工作

标签 php mysql session authentication logout

我正在使用 PHP 和 MySQL 构建一个数据库驱动的网站。登录表单运行良好,但在我向代码添加新功能以使用户登录到管理页面或成员(member)页面后,登录停止显示(例如)“欢迎,帕特,管理员”或“欢迎,吉娜” , 成员(member)”在表格上。

表单是一个小表单,显示在网站的每个页面上,作为登录或提醒他们已经登录(使用 session )。现在,当我登录一个人时,它确实会将他们带到管理页面或成员(member)页面,但它不会在表单中显示登录信息,并且在单击时注销按钮将不起作用。这是我的登录和注销代码,以及我用来访问管理页面或成员(member)页面的功能代码。

注销表单,在他们单击注销之前应该显示已登录,但它不起作用:

<form method="post" id="logoutform.inc.html">
    <fieldset>
        <legend>Logout</legend>  
        <?php

        include('includes/functions.php');

        if(isset($results)){
            if ((isset($_SESSION['loginName'])) === $result['email'] && (isset($_SESSION['password'])) === $result['password']){
                echo "Welcome, <br />";
                echo "$level, <br />";
                echo get_name($results); 
                // print_r($_POST);
                print '<br />';
            } else {
                 var_dump($results);
            }
        }

        ?>
        <br /><br /><br />     
        <input type="submit" name="action" value="logout" />
    </fieldset>
</form>

登录表单:

<form action="index.php" method="post" id="loginform.inc.html">
    <fieldset>
        <legend>Login</legend>
        <label for="loginName" class="loginName">Username:</label>
        <input id="loginName" name="loginName" type="text" value="<?php echo (isset($loginName['loginName'])); ?>" />
        <label for="password" class="loginName">Password:</label>
        <input id="password" name="password" type="password" value="<?php echo (isset($password['password'])); ?>" />
        <input type="submit" name="submit" value="login" />
    </fieldset>
 </form>

注销功能:

function logout() {
    $_SESSION = array();
    session_destroy();
    header('Location: home.php');
};

将您带到管理页面或成员(member)页面的登录功能:这个不会在其他地方打印任何内容:

function login($loginName, $password) {
    $results = connect($loginName);
    if ((isset($_SESSION['loginName'])) === $result['email'] && (isset($_SESSION['password'])) === $result['password']){
        var_dump($loginName);
        print "Welcome, $loginName";
    } else {
        echo "Sorry. You are not in our database";
    }

    if ( 'a' == $results['level'] ){
        $level = "Administrator";
    } elseif ( 'm' == $results['level'] ){
        $level = "Member";
    } else $level = '?';

    if ($level === "Administrator"){
        header('Location: /tires/admin/home.php');
        exit();
    } elseif ($level === "Member"){
        header('Location: /tires/member/home.php');
        exit();
    }
    include('includes/logoutform.inc.html');
}

这里是 CONNECT 查询:

function connect($loginName){
    global $db;
    $query = "SELECT email, level, password FROM members WHERE email    = '$loginName'";
    $result = $db->query($query);
    $results = $result->fetch(PDO::FETCH_ASSOC);
    return $results;
};

最佳答案

我对函数login($loginName, $password)做了一些改动,请引用下面的代码,我检查了显示logoutform.inc.html的代码不包括在内。

function login($loginName, $password) {
$results = connect($loginName);
if ((isset($_SESSION['loginName'])) === $result['email'] && (isset($_SESSION    ['password'])) === $result['password']) 
{var_dump($loginName);
print "Welcome, $loginName";}

 else {

     echo "Sorry. You are not in our database";
  }
include('includes/logoutform.inc.html');

 if ( 'a' == $results['level'] )  {
     header('Location: /tires/admin/home.php');
 } 
 elseif ( 'm' == $results['level'] ) {
     header('Location: /tires/member/home.php');
 }
 else $level = '?'; 

 }

关于php - 使用 PHP 和 MySQL 登录到管理员 - 成员(member)网站 - 登录不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758328/

相关文章:

mysql - 删除表数据后如何自动加1

php - 为什么我无法运行此查询?

php - 使用 ajax 从 Controller 调用函数的新路由或其他方法? Laravel 5.2, Ajax

php - 在 Woocommerce 结帐页面中隐藏优惠券通知表单

php - AJAX/PHP异步计算

mysql - 存储单个数字的最佳数据类型?

PHP/MySQL 奇怪的问题影响仅当用户登录时从数据库中获取

Java : How to deal with multiple sessions in the servlet

php - 在 mysqli 中多次使用相同的 Binder

php - 在 linux mint 32 位操作系统中配置 xampp