2016-05-05 4 views
0

私はこのコードをPHPで書いていますが、ファイルuserarea.phpは時にはうまく動作しないことがあります。関数logout.phpと同じです。それが正しく動作していること、またはログインファイルにエラーがあることをどのようにして知ることができますか?ログアウト機能を書き込もうとします

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"); 
?> 

<?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

なぜCookieとセッションを設定していますか?セッションにこだわってみませんか? – Rasclatt

+0

'header(" location:XXX ");'がある場所であれば、1)ブラウザの出力の上に移動し、2)後に 'exit;'を追加する必要があります。 – Rasclatt

+0

また、 'ini_set( 'display_errors'、1);を入れます。 error_reporting(E_ALL);あなたのページの上部にあります。エラー/警告が表示されます。 – Rasclatt

答えて

0

userarea.phpRasclattは、クッキーとセッションを混合して一つのことで、言ったように。 unsetの配列全体または特定の配列要素の配列を$_SESSIONとしてみてください。

session_destroy()を呼び出してセッションを破棄するには、不十分である可能性があります。

正しく動作していること、または ログインファイルにエラーがあることを確認するにはどうすればよいですか?

エラーが表示されない理由は何ですか?あなたのコードは、あなたがそれらを望んでいないことを示しています。それぞれtry/catchブロックを使用し、例外をキャッチし、必要に応じてvar_dumpをキャッチします。コードに実装できる改善点がたくさんあります。

関連する問題