使用函数检查PHP中会话的登录状态

使用函数检查PHP中会话的登录状态,php,html,Php,Html,我想参加托福考试。因此将有一个登录按钮。当有人登录时,登录按钮将是注销按钮。但是当我登录时,登录按钮没有改变。请帮帮我 用于检查登录状态的函数我将此函数保存在lib_function.php中: <?php session_start(); ?> <?php function check_login(){ $hasil = 0; if (isset($_SESSION['email'])) { $mail = $_SESSION['email']

我想参加托福考试。因此将有一个登录按钮。当有人登录时,登录按钮将是注销按钮。但是当我登录时,登录按钮没有改变。请帮帮我

用于检查登录状态的函数我将此函数保存在lib_function.php中:

<?php session_start(); ?>

<?php 
 function check_login(){
    $hasil = 0;

    if (isset($_SESSION['email'])) {
    $mail = $_SESSION['email'];
    }
    if (isset($_SESSION['pass'])) {
    $pass = $_SESSION['pass'];
    }

    if (!empty($mail) and !empty($pass)){
        $hasil = 1;
    }

    return $hasil;
  }
 ?>
index.php:

<?php session_start();
require_once("connection.php");
?>
<?php include("lib_function.php"); ?>

<--header-->

   <?php 
            $check = check_login();

            if ($check == 1){
              echo "<a href=\"login.php\">Login</a> <strong class=\"hover\">";
            }else{
              echo "<a href=\"logout.php\">Logout</a> <strong class=\"hover\">";
            }
          ?>
这是我的登录过程:

<?php 
session_start();

    require_once("connection.php");

    $email = $_POST['email'];
    $password = $_POST['password'];

    $cekuser = mysql_query("SELECT * FROM user WHERE email = '$email'");
    $jumlah = mysql_num_rows($cekuser);
    $hasil = mysql_fetch_array($cekuser);

    if($jumlah == 0) {
        echo "<script>alert('Email has registered!'); window.location = 'index.php'</script>";
    } else {
        if($pass > $hasil['password']) {
        echo "<script>alert('Wrong password!'); window.location = 'index.php'</script>";
        } else {
        $_SESSION['email'] = $hasil['email'];
        header('location:index.php');
        }
    }
?>
试试这个:

function login($email) {
    $_SESSION['email'] = $email;
}

function is_logged() {
    return isset($_SESSION['email']);
}

function logout() {
    session_destroy();
}
检查check_login函数中是否设置了$_SESSION['pass'],但在登录过程中从未设置


设置$\u会话['pass']或删除并删除!check_login中的$pass为空。

在启动会话之前,始终尝试检查会话是否已处于活动状态。您可能还希望将默认值say NULL分配给check_login函数中的$mail&$pass变量,因为此时您正在检查$mail和$pass是否为空。如果它们根本就没有设定呢?在这种情况下,这些变量根本不存在

    <?php
    // FILE:: lib_function.php
     function check_login(){
         $hasil = 0;
         // GET THE $mail & $pass FROM SESSION; ASSIGNING A DEFAULT NULL
         // TO EACH OF THEM IF THEY ARE NOT YET SET...
         $mail  = isset($_SESSION['email']) ? $_SESSION['email']    : null;
         $pass  = isset($_SESSION['pass'])  ? $_SESSION['pass']     : null;

         if (!empty($mail) and !empty($pass)){
             $hasil = 1;
         }
         return $hasil;
     }



    // FILE:: index.php
    // START SESSION ONLY IF IT IS NOT ALREADY ACTIVE:
    if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
        session_start();
    }

    require_once("connection.php");
    include("lib_function.php");

    // HEADER HERE

    $check  = check_login();

    if ($check == 1){
        echo "<a href=\"login.php\">Login</a> <strong class=\"hover\">";
    }else{
        echo "<a href=\"logout.php\">Logout</a> <strong class=\"hover\">";
    }

 ?>

请显示登录页面代码,确保在登录之前在lib_function.php页面的顶部有session_starttag@Hosseini为什么?session_start在index.php的最顶端被调用,文件描述为“这是我的登录过程”。@VolkerK yes不需要included,但在我的注释后添加