使用PHP中的会话来检查登录状态的功能

时间:2016-05-25 07:02:00

标签: php html

我想做toefl测试。所以会有一个登录按钮。当有人登录时,登录按钮将是注销按钮。但是当我登录时,登录按钮没有改变。请帮帮我

检查登录状态的功能(我在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');
        }
    }
?>

3 个答案:

答案 0 :(得分:0)

您检查$_SESSION['pass']功能中是否设置了check_login,但您在登录过程中从未设置过{。}}。

设置$_SESSION['pass']或从and !empty($pass)删除check_login()

答案 1 :(得分:0)

在开始之前,始终尝试检查会话是否已处于活动状态。您还可能希望将“NULL”的默认值分配给$ mail&amp; $在check_login()函数中传递变量,因为在某一点上,你检查$ 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\">";
    }

 ?>

答案 2 :(得分:-1)

试试这个:

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

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

function logout() {
    session_destroy();
}