使用函数检查PHP中会话的登录状态
我想参加托福考试。因此将有一个登录按钮。当有人登录时,登录按钮将是注销按钮。但是当我登录时,登录按钮没有改变。请帮帮我 用于检查登录状态的函数我将此函数保存在lib_function.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']
<?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,但在我的注释后添加