Php 使用Cookie时注销
我是使用php cookies的初学者,我正在尝试使用cookies制作一个简单的登录和注销表单。一切都很好,但当我按下注销链接时,我无法注销。要注销,我必须从浏览器中删除cookies 登录页面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
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()使用“我尝试添加会话_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");
}
}