2013-02-26 110 views
5

目前我工作的一個小項目的虛擬登錄/註冊頁面,現在我想添加一個頁面時,你已經登錄,這只是訪問。 所以問題是我如何創建會話或cookie並檢索它們? 以及如何阻止未登錄的用戶。如何使頁面才能訪問在PHP登錄時

我目前使用這些代碼的login.php中和member_area.php: 的login.php:

<?php 
    session_start(); 





    if(isSet($_POST['login'])) { 
     include('db.php'); 

     $username = mysql_real_escape_string($_POST['username']); 
     $password = sha1($_POST['password']); 

     $query = mysql_query("SELECT * FROM tab WHERE username='".addSlashes($username)."' AND password='".addSlashes($password)."'"); 
     $res = mysql_num_rows($query); 

     if ($res == 1) { 
      $_SESSION['username'] = $username; 
      $_SESSION['password'] = $password; 
      $_SESSION['userobj'] = mysql_fetch_assoc($query); 

      header('Location: http://localhost/member_area.php'); 
      exit; 
     } else { 
      echo 'Data does not match <br /> RE-Enter Username and Password'; 
     } 
    } else { 

?> 
    <html> 
    <head><link rel="stylesheet" type="text/css" href="css.css"></head> 
     <body> 
       <div id="div1"> 

       <a href="index.php" id="home">Home</a> 
       <a href="Login.php" id="login2">Login</a> 
       <a href="register.php" id="register">Register</a> 


     </div> 
      <table width="200" border="0" cellspacing="1" align="center"> 
       <form id="form1" method="post" action="login.php"> 
       <tr> 
        <td colspan="2"><h2>Members login</h2></td> 
       </tr> 
       <tr> 
        <td>Username: </td> 
        <td> 
         <input type="text" name="username" id="username"/> 
        </td> 
       </tr> 
       <tr> 
        <td>Password: </td> 
         <td><input type="password" name="password" id="password"/> </td> 
       </tr> 
       <tr> 
        <td colspan="2" align="center"> 
         <input type="submit" name="login" id="login" value="login" /> 
        </td> 
       </tr> 
       </form> 
      </table> 
      </body> 
    </html> 
    <?php 
    } 


?> 

Member_area.php:

<?php 

?> 
<html> 
<head><link rel="stylesheet" type="text/css" href="css.css"></head> 
    <body> 
      <div id="div1"> 

       <a href="index.php" id="home">Home</a> 
       <a href="Login.php" id="login2">Login</a> 
       <a href="register.php" id="register">Register</a> 


     </div> 
     <form action="/Log_out.php" method="get"> 
      <input type="submit" name="submit" value="Log Out." action="http://localhost/Log_out.php" id="Logout"> 
     </form> 
    </body> 
</html> 
<?php 

?> 

請注意,我對於PHP來說是全新的,所以如果可能的話,在一些方向上放置代碼。

回答

10

在Member_area.php頂部補充一點:

session_start(); 
if(!isset($_SESSION['username'])){ 
    header("Location:Login.php"); 
} 

它檢查會話是否設置與否,如果不是將用戶重定向到登錄頁面。

+0

請解釋-1 – 2013-02-26 12:02:18

+0

那麼它是某種工作,但即使我登錄登錄頁面會重定向我回頁面。是否有可能需要在登錄頁面開始會話?或者有可能會話被破壞了一些? 編輯:會話沒有啓動固定它。 – 2013-02-26 12:05:01

+0

我編輯的代碼現在嘗試,接着說:在session_start();'在頂部 – 2013-02-26 12:06:36

0
<?php 
    if(!isset($_SESSION['username'])) { 
    die("Please login"); 
} 

?> 
<html> 
<head><link rel="stylesheet" type="text/css" href="css.css"></head> 
    <body> 
      <div id="div1"> 

       <a href="index.php" id="home">Home</a> 
       <a href="Login.php" id="login2">Login</a> 
       <a href="register.php" id="register">Register</a> 


     </div> 
     <form action="/Log_out.php" method="get"> 
      <input type="submit" name="submit" value="Log Out." action="http://localhost/Log_out.php" id="Logout"> 
     </form> 
    </body> 
</html> 
<?php 

?> 

這應該是它:)

+2

'在session_start();'不加:) – 2013-02-26 12:05:09

+0

Prasanth是正確的,你忘了啓動會議,但感謝:d! – 2013-02-26 12:07:31

+0

哦,是的,我很抱歉。我完全忘了! – 2013-02-26 17:50:58

相關問題