2016-10-05 4 views
0

Ich mache ein Login-System, aber ich möchte, dass sie in der Lage sein, sich abzumelden, dies hatte mich ein großes Problem auftreten, der Cookie ich möchte nicht entfernt werden nein Egal, was ich versuche, ich habe versucht, es auf viele Arten zu entfernen.PHP-Browser löscht keine Cookies

--- login.php

<!DOCTYPE html> 
<html> 
<head> 
    <title>Website</title> 
    <link rel="stylesheet" type="text/css" href="../css/style.css"/> 
</head> 
<body> 
    <header><p> Lost Story </p></header> 
    <div id="nav"> 
     <ul> 
      <li><a href="../index.php">Home</a></li> 
      <li><a href="register.php">Register</a></li> 
      <li><a href="../downloads.html">Downloads</a></li> 
      <li><a href="../forums.html">Forums</a></li> 
      <li><a href="../donate.html">Donate</a></li> 
      <li><a href="../vote.html">Vote</a></li> 
       <div id="right"> 
       <?php 
        if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) { 
        echo "<li><a href=\"logout.php\">Log Out</a></li>"; 
        } else { 
         echo "<li><a href=\"login.php\">Log in</a></li>"; 
        } 
       ?> 
       </div> 
     </ul> 
    </div> 
    <div id="content"> 
    <?php 

    echo var_dump($_COOKIE['LoggedIn']); 

    if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) { 
     echo "<label> You are already logged in, you do not need to again. </label>"; 
    } else { 
     echo "<div id=\"form\"> 
     <form action=\"login.php\" method=\"POST\"> 
      <label> 
      <br>Username:<br> 
       <input type=\"text\" name=\"name\"> 
      </label> 
      <label> 
      <br>Password:<br> 
       <input type=\"password\" name=\"pass\"> 
     </label> 
     <label> 
      <br> 
       <input type=\"submit\" name=\"submit\"> 
     </label> 
     </form> 
    </div>"; 
    } 

$LoggedIn = false; 

ERROR_REPORTING(E_ALL); 
include_once('dbconnection.php'); 

if($_SERVER['REQUEST_METHOD'] == "POST") { 

$user = htmlspecialchars($_POST['name']); 
$pass = htmlspecialchars($_POST['pass']); 

$once = false; 

if(!isset($user) || !isset($pass)) {  
    echo "<p> Please insert all the data </p>"; 
} else { 
    $sql = "SELECT * FROM persons"; 
    $result = mysqli_query($mysqli, $sql); 

    if(mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 
      if($row["username"] === $user && $row["pass"] === md5($pass)) { 
       echo "<br><label> Logged into " .$user . "</label>"; 
       $once = true; 
       $LoggedIn = true; 
       setcookie("LoggedIn", $LoggedIn == true ? $user : "", time() + (86400 * 30), "/"); 

      } 
     } 
     if($once == false) { 
      echo "<br><label>No data found, please insert correct data</label>"; 
       $once = true; 
      } 

     $once = false; 
    } else { 
    echo "No results found"; 
    } 
} 
} 
?> 

    </div> 
    </div> 
    <footer> Website copyright etc </footer> 
</body> 

Und für meine logout.php hatte ich das

<?php 

if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) { 
    setcookie('LoggedIn', '', time()-3600, '/'); 
    header("Location: ../index.php"); 
} else { 
    echo "no"; 
} 
?> 

Ich bin nicht wirklich sicher, warum es nicht entfernen will die Kekse, also hoffe ich, dass du mir helfen kannst.

+0

1: Sie brauchen nicht auf die var_dump Echo. 2: Sie haben keinen Code, um den Cookie zu löschen. – MikeVelazco

+0

@MikeVelazco Jeder stackoverflow-Post, den ich ging, sagte mir, dass ich den Cookie in der Vergangenheit setzen sollte, um ihn zu deaktivieren. –

Antwort

1

Wenn Sie Ihre Cookies löschen möchten, können Sie sie nicht einfach löschen. Sie müssen das Cookie in der Vergangenheit erstellen ...

<?php 
 
// set the expiration date to one hour ago 
 
setcookie("TestCookie", "", time() - 3600); 
 
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1); 
 
?>

+0

Ich sehe, danke für die nützlichen Informationen für die Zukunft, Sie haben ziemlich die Fähigkeit! –

-1
$past = time() - 3600; 
    setcookie("LoggedIn", gone, $past); 
    header("Location: index.php"); exit();