2013-07-07 33 views
0

後,我做了一個簡單的登錄頁面,在用戶簽訂但我仍然有一定的問題重定向用戶相同的頁面登錄

  1. 要重定向到同一頁面,即login.php中,但更改頭選項,比如用「註銷」替換「登錄」。

  2. 登錄後,如果我訪問任何其他鏈接,如「家」,「contactus」或任何其他鏈接,會話保持不能登錄,如果我甚至嘗試直到會話被銷燬。

  3. 如果你可以用任何解釋簡單的登錄項目提供,這將是巨大的。

這裏是我的登錄腳本

的header.php

<link rel="stylesheet" href="page_style.css" type="text/css" /> 
<div class="container"> 
<div id="header"> 
    <div id="header_text"> 
     <b><a href="div_tuts.php">Home</a></b> 
     <b><a href="aboutus.php">AboutUs</a></b> 
     <b><a href="register.php">Register</a></b> 
     <b><a href="login.php">SignIn</a></b>?> 
     <b><a href="contactus.php">ContactUS</a></b> 
    </div> 
</div> 

<div id="main"> 

</div> 
</div> 

的login.php

<?php 

/** 
* @author 
* @copyright 2013 
*/ 
session_start(); 
ob_start(); 
include "div_tuts.php" 


?> 
<link rel="stylesheet" href="page_style.css" type="text/css" /> 

<form action="login_check.php" method="POST" id="main"> 
<div id="loginbox"> 
Username : <input name="uname" type="text" /><br /> 
Password : <input name="pass" type="password" /><br /> 
<input name="submit" type="submit" value="LogIn" /><br /> 
<?php echo $_SESSION['error'];?> 
</div> 
</form> 
<?php session_destroy();?> 

login_check.php

<link rel="stylesheet" href="page_style.css" type="text/css" /> 
<?php 

/** 
* @author 
* @copyright 2013 
*/ 
ob_start(); 
session_start(); 
include 'config.php'; 

$username = $_POST['uname']; 
$password = $_POST['pass']; 

if(isset($username) && isset($password)) 
{ 
if(!empty($username) && !empty($password)) 
{ 
    $query = "SELECT username FROM users WHERE username = '$username' AND password = '$password'" ; 

    $query_run = mysql_query($query); 

    if($query_run) 
    { 
     $mysql_num_row = mysql_num_rows($query_run); 

     if($mysql_num_row == 0) 
     { 
      $_SESSION['error'] = "You entered Wrong username/password"; 
      header("Location: login.php"); 
     } 

     else if($mysql_num_row == 1) 
     { 
      $user_name = mysql_result($query_run,0,'username'); 
      $_SESSION['user_id'] = $user_name ; 
      header("Location: loggedin.php"); 

     } 
    } 
} 

else 
    { 

     $_SESSION['error'] = "Please provide username/password"; 
     header("Location: login.php"); 
    } 
} 
?> 

loggedin.php

<?php include "div_tuts.php"; ?> 
<div id="main" > 
<div id="loginbox"> 
<?php 

/** 
* @author 
* @copyright 2013 
*/ 
ob_start(); 
session_start(); 




if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) 
      { 
       echo $_SESSION['user_id']; 
       echo ',you are logged in <a href = "logout.php">LogOut</a>'; 
      } 
      else 
      { 
       header("Location: login.php"); 
      } 
?> 
</div> 
</div> 

回答

0

您使用mysqli而不是mysql_ *,或PDO類採取事先準備好的聲明

的優勢,爲檢查聯機,您可以使用函數

$iduser = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : NULL; 

function checkLogin($iduser){ 
if (empty($_SESSION['user_id'])) 
     header("Location: logout.php"); 
    } 
} 

function linkLogin($iduser){ 
    if(empty($_SESSION['user_id'])){ 
    $xxx = '<a href="login.php">login</a>'; 
    }else{ 
    $xxx '<a href="logout.php">logout</a>'; 
    } 
return $xxx; 
} 
+0

感謝@ Emilo :)。我更新了我的問題並提供了href部分。在PHP編碼之間放置php是不錯的做法。你能爲我改變它嗎? – wek

+0

我更新了答案,是一個不好的實踐,將php嵌入到html中 –

相關問題