2016-05-05 14 views
0

Ich schrieb diesen Code in PHP, aber die Datei userarea.php manchmal funktioniert und manchmal nicht. Gleiches mit der Funktion logout.php. Woher weiß ich, ob es korrekt funktioniert oder ob Fehler in meiner Login-Datei vorhanden sind?versuchen, Logout-Funktion schreiben

confing.php:

<?php 
$host = "localhost"; 
$database = "DOD"; 
$user = "root"; 
$pass = ""; 

session_start(); 
$connection = mysqli_connect($host , $user , $pass , $database); 

if(!$connection){ 
    die(mysqli_connect_error()); 
} 

function logeedin(){ 
    if (isset ($_SESSION[('Username')]) && isset($_COOKIE[('Username')])) 
     return TRUE; 
} 
?> 

login.php:

<?php include('confing.php'); ?> 
<html> 
<body> 
<form action="login.php" method="POST"> 
    Username : <input type="text" name="Username" /><br> 
    Password : <input type="password" name="Password" /><br> 
    Remember Me: <input type="checkbox" name="remmberme" /><br> 
    <input type="submit" name="login" value="login" /><br> 
</form> 
<?php 

if (logeedin() == TRUE){ 
    header("location : userarea.php"); 
} 

if (isset($_POST['Login'])){ 
    $Username = $_POST['Username']; 
    $Password = $_POST['Password']; 
    $Remmember = $_POST['Remmember']; 

    if(!empty($Username) && !empty($Password)){ 
     $sql = "SELECT * FROM USER WHERE Username = '$Username'"; 
     $resulet = mysqli_query($connection,$sql); 

     while ($row = mysqli_fetch_assoc($resulet)) { 
      $db_password = $row["Password"]; 

      if($db_password == $Password) 
       $login = TRUE; 
      else 
       $login = FALSE; 
     } 

     if ($login == TRUE){ 
      if(isset($Remmember)){ 
       setcookie('Username',$Username,time()+3600); 
      } 
      else { 
       $_SESSION['Username']= $Username; 
      } 

      header ("location: userarea.php"); 
     } 
     else { 
      echo "Error"; 
     } 
    } 
    else{ 
     echo "Error"; 
    } 
} 
?> 
</body> 
</html> 

logout.php

<?php 
session_start(); 
session_destroy(); 
setcookie("Username","",time()-6300); 
header("location : login.php"); 
?> 

userarea.php

<?php 
include('confing.php'); 
if(!logeedin()){ 
    header("location : login.php"); 
    exit(); 
} 
?> 
welcome<br> 
<?php echo $_SESSION['Username']; ?> 
<a href= "logout.php"> Log out </a> 
+0

Warum setzen Sie einen Cookie und eine Sitzung? Warum nicht einfach bei der Sitzung bleiben? – Rasclatt

+0

Überall dort, wo Sie eine 'header (" location: XXX ");' haben, müssen Sie 1) über eine beliebige Browserausgabe nach oben bewegen, 2) danach 'exit;' hinzufügen. – Rasclatt

+0

Setzen Sie auch 'ini_set ('display_errors', 1); error_reporting (E_ALL); 'oben auf Ihren Seiten. Sie sollten anfangen, Fehler/Warnungen zu sehen. – Rasclatt

Antwort

0

Wie Rasclatt sagte, Mischen Cookies und Session ist eine Sache. Versuchen Sie auch unset ganze oder bestimmte Array-Elemente von $_SESSION Array.

Die Sitzung durch Aufruf von session_destroy() zu zerstören ist möglicherweise nicht ausreichend.

Wie weiß ich, dass es richtig funktioniert oder wenn es irgendwelche Fehler in meiner Login-Datei?

Haben Sie herausgefunden, warum keine Fehler angezeigt werden? Ihr Code zeigt, dass Sie sie nicht möchten. Verwenden Sie try/catch Block jeweils, fangen Ausnahmen und var_dump sie bei Bedarf. Es gibt eine Menge Verbesserungen, die Sie in Ihrem Code implementieren könnten.

Verwandte Themen