Php 使用Cookie时注销

Php 使用Cookie时注销,php,cookies,logout,Php,Cookies,Logout,我是使用php cookies的初学者,我正在尝试使用cookies制作一个简单的登录和注销表单。一切都很好,但当我按下注销链接时,我无法注销。要注销,我必须从浏览器中删除cookies 登录页面 <?php session_start(); if (isset($_COOKIE["Email"])){ header("location: home.php"); } ?> <form method="post" action="log_in.php">

我是使用php cookies的初学者,我正在尝试使用cookies制作一个简单的登录和注销表单。一切都很好,但当我按下注销链接时,我无法注销。要注销,我必须从浏览器中删除cookies

登录页面

<?php
session_start();

if (isset($_COOKIE["Email"])){
    header("location: home.php");    
}
?>


<form method="post" action="log_in.php">   
<font size="6">Sign In</font>

Email Address: </b></font><input type="text" name="Email" id="email"  />  

password:  <input type="password" name="password" id="password"  />    

<input type="checkbox" name="rememberMe" value="1" id="check"/> Remember Me

<input type="submit" name="Login" id="sign" value="sign in" >

<?php 
include 'db.php';
if(isset($_POST['Login'])){
    $user_email = $_POST['Email'];  
    $password = $_POST['password'];

    $check_user = "SELECT * FROM user where user_email  = '$user_email' AND user_pass = '$password'";
    $run = mysql_query($check_user );

    if (mysql_num_rows($run) > 0){
        $_SESSION['Email']= $user_email;   

        $_SESSION['start'] = time(); 
        if(isset($_POST['rememberMe'])){
            $expire=time()+120;
            setcookie("Email", "Email", $expire);
        }
    else{
        $expire=time()+30;
        setcookie("Email", "Email", $expire);
    }
    echo "<script>window.open('home.php','_self')</script>";   
}
else {
    echo "<script>alert('email or password incorrect!')</script>";     
}}
?>

登录
电邮地址:
密码:
记得我吗

如果希望完全销毁会话,可以使用session_destroy()


或者,如果您只是想取消设置电子邮件,您可以使用

<?php
session_start();
if(isset($_SESSION['Email']))
  unset($_SESSION['Email']);
?>

您的主页(code)没有
会话启动()至少不在您发布的内容中;使用时需要;它不能单独工作

试一试:

旁注:
$expire
未定义
主页的
代码,因此您需要使用与其他页面相同或类似的方法

<?php
if (isset($_COOKIE["Email"])){
  echo "Welcome " . $_COOKIE["Email"] . "!<br>";
    echo '<a href="logoutForm.php">logout</a>';
}
else{
    $now = time(); // Checking the time now when home page starts.
    if ($now > $expire) { // $expire is undefined
        session_start(); // <= required
        session_destroy(); // <= does not work on its own
        header("location: log_in.php");    
    }
}

您似乎只是在取消设置电子邮件会话变量。您还使用了
$\u SESSION['start']
,因此仍处于设置状态。您可以尝试取消设置($\u会话)
取消设置所有会话变量。您的主页没有
会话_start()至少不在您发布的内容中;这是必需的。
session_start()”;在主页上,但它不起作用,我认为问题出在注销页面上在您的注销页面中;您是否尝试过取消设置($\u会话)@将取消所有会话的user3891365。@user3891365 Plus,而不是
setcookie($_SESSION['Email'],'',time()-7000000,'/')尝试设置COOKIE($_COOKIE['Email'],'',time()-7000000',/)在您的注销页面中。@user3891365我发现了另一件事;在您的主页中,
$expire
未定义,这是一个促成因素。在打开
@Darren之后,立即将错误报告添加到该文件或所有文件的顶部,看起来它们最终都很可爱!
<?php
session_start();
session_destroy();
?>
<?php
session_start();
if(isset($_SESSION['Email']))
  unset($_SESSION['Email']);
?>
<?php
if (isset($_COOKIE["Email"])){
  echo "Welcome " . $_COOKIE["Email"] . "!<br>";
    echo '<a href="logoutForm.php">logout</a>';
}
else{
    $now = time(); // Checking the time now when home page starts.
    if ($now > $expire) { // $expire is undefined
        session_start(); // <= required
        session_destroy(); // <= does not work on its own
        header("location: log_in.php");    
    }
}