2013-11-19 3 views
0

Я попытался написать сценарий php для входа в систему и выхода из системы. журнал работает отлично, но проблема в том, что после того, как я вышел из системы, когда я нажму кнопку возврата, он вернется на главную страницу.PHP Войти Проблемы с выходом

<?php 
//Start session 
session_start(); 

//Include database connection details 
require_once('connection.php'); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Function to sanitize values received from the form. Prevents SQL injection 
function clean($str) { 
    $str = @trim($str); 
    if(get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    return mysql_real_escape_string($str); 
} 

//Sanitize the POST values 
$username = clean($_POST['username']); 
$password = clean($_POST['password']); 

//Input Validations 
if($username == '') { 
    $errmsg_arr[] = 'Username missing'; 
    $errflag = true; 
} 
if($password == '') { 
    $errmsg_arr[] = 'Password missing'; 
    $errflag = true; 
} 

//If there are input validations, redirect back to the login form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    header("location: login.php"); 
    exit(); 
} 

//Create query 
$qry="SELECT * FROM users WHERE username='$username' AND password='$password'"; 
$result=mysql_query($qry) or die (mysql_error()); 

//Check whether the query was successful or not 
if($result) { 
    if(mysql_num_rows($result) > 0) { 
     //Login Successful 
     session_regenerate_id(); 
     $member = mysql_fetch_assoc($result); 
     $_SESSION['EmpId'] = $member['EmployeeId']; 
     $_SESSION['username'] = $member['username']; 
     $_SESSION['password'] = $member['password']; 
     session_write_close(); 
     header("location: ../MyInfo.php"); 
     //echo 'You are loged in'; 
     exit(); 
    }else { 
     //Login failed 
     $errmsg_arr[] = 'user name and password not found'; 
     $errflag = true; 
     if($errflag) { 
      $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
      session_write_close(); 
      header("location: login.php"); 
      exit(); 
     } 
    } 
}else { 
    die("Query failed"); 
} 
?> 

<?php 
session_start(); // start a session first, else you cannot destroy/unset it 
session_unset(); 
session_destroy(); // destroy all sessions 
header('location:login.php'); // redirect 
?> 

я надеюсь, и будет помогать мне спасибо

+2

Вы храните пароль в открытом виде в базе данных? –

+0

Также на сессии ?! –

+0

'if (! Isset ($ _ SESSION)) session_start(); if (! Isset ($ _ SESSION ['EmpId']) header ("location: login.php"); ' вы должны добавить этот код во все существующие файлы с этой логикой –

ответ

0

Вы можете попробовать это, добавил некоторые значения ключа в заголовке header('location:login.php?_k'.md5(tim()));

<?php 
     session_start(); // start a session first, else you cannot destroy/unset it 
     session_unset(); 
     session_destroy(); // destroy all sessions 
     header('location:login.php?_k'.md5(tim())); // redirect 
    ?> 
0

Вы Проверяется сессии действительны?

Из кода я бы

function checkIfLoggedIn() 
{ 
    if (isset($_SESSION['username'])){ 
    header("Location:index.php"); 
    } else{ 
    header("Location:login.php"); 
    } 
} 

имеют эту функцию прямо в верхней части каждой страницы

+0

Это должен быть' header (" location: login.php ");' В противном случае это ничего не делает. – putvande

+0

К сожалению, это должно быть! –

0

В верхней части каждой страницы PHP, проверьте, чтобы увидеть, если пользователь вошел в систему. Если нет, они должны быть перенаправлены на страницу входа в систему:

<?php 
     if(!isset($_SESSION['logged_in'])) : 
     header("Location: login.php"); 
?> 
Смежные вопросы