2014-05-17 232 views
0

这是我db.classes登录和注销重定向后PHP

public function login($un, $pw) 
    { 
     $result = mysqli_query($this->dbh,"select username, password from users where username='$un' and password='$pw'"); 

     $count=mysqli_num_rows($result); 

     if($count==1){ 
      header("location:home.php"); 
     } 
     else { 
      echo 
      "<script type='text/javascript'> 

      alert('LOG-IN FAILED!'); 

      </script>"; 

      echo '<script language="JavaScript"> window.location.href ="index.php" </script>'; 
     } 
    } 

这是我的PHP

<?PHP 
include("db.classes.php"); 
$g = new DB(); 
$g->connection(); 

    if(isset($_POST['subBtn'])) 
     { 
      $un = $g->clean($_POST["uname"]); 
      $pw = $g->clean($_POST["pass"]); 
      $g->login($un, $pw); 
     } 

$g->close();  
?> 

这里是我的注销按钮

<div id="footer"> 
    <li id="Login"><a href="index.php">Log Out</a></li> 
</div> 

我怎样才能防止用户在退出后无需重新登录即可返回到前几页?

+0

检查会话是否为空 –

+0

登录设置会话并注销表示如果会话为空,则取消会话重定向至index.php页面 – Ramki

+0

http://www.makeitsimple.co.in/PHP_loginexmp.php –

回答

0

就在你的脚本最开头添加

session_start(); 

当登录成功后,你可以设置一个会话像

$_SESSION['login'] = true; 

,甚至存储用户数据就像他的名字或以后的操作ID。

那么你一定要确保每个页面上只添加

if($_SESSION['login'] !== true) header("location:index.php"); 

你可以取消设置会话或只是将其设置为false

$_SESSION['login'] = false; 
unset($_SESSION['login']); 

这可以优化您的需要注销至于你想....

http://krisnaordinary.wordpress.com/2010/04/24/creating-a-simple-login-logout-session-using-php/

这北极乐似乎走深一点到会话...

0
<?PHP 
session_start(); 
$_SESSION['logged_in'] = false; 

include("db.classes.php"); 
$g = new DB(); 
$g->connection(); 

if(isset($_POST['subBtn'])){ 
    $un = $g->clean($_POST["uname"]); 
    $pw = $g->clean($_POST["pass"]); 
    $g->login($un, $pw); 
} 

$g->close();  
?> 

在登录时:设置logged_in为true(如果凭据都ok)

public function login($un, $pw){ 
    $result = mysqli_query($this->dbh,"select username, password from users where username='$un' and password='$pw'"); 

    $count=mysqli_num_rows($result); 
    if($count==1){ 
     $_SESSION['logged_in'] = true; 
     header("location:home.php"); 
    } else { 
     $_SESSION['logged_in'] = false; 
     echo "<script type='text/javascript'>alert('LOG-IN FAILED!');</script>"; 
     echo '<script language="JavaScript"> window.location.href ="index.php" </script>'; 
     die(); 
    } 
} 

在 'home.php':

<?php 
session_start(); 
if(!$_SESSION['logged_in']){ 
    header('Location: index.php'); 
} 
//... 

上登出: 编辑来回答评论的问题:

退出按钮:

<div id="footer"> 
    <li id="Login"><a href="index.php?logout=1">Log Out</a></li> 
</div> 

在index.php文件(在开头):

<?php 

session_start(); 
if(isset($_GET['logout']) && $_GET['logout'] == 1){ 
    $_SESSION['logged_in'] = false; 
    header('location: index.php'); 
    die(); 
} 
+0

其中我把最后的代码放在(注销)? – jayyyyy

+0

我编辑了我的答案来回答这个问题:-) –

0

,所有的页面未公开任何事情之前应该检查会话。

例子:

<?PHP 
session_start(); 
if ($_SESSION['user_id']<1) 
    die('You must login'); //Or redirect from here 

这将防止他们回击。您可能还需要发送一些缓存头,以及:

<?PHP 
header ("Expires: Thu, 19 Nov 1981 08:52:00 GMT",true); 
header ("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0",true); 
header ("Pragma: no-cache",true); 

通常不需要缓存头,但如果问题仍然存在,可能会有帮助。