2013-02-26 20 views
5

Obecnie pracuję nad małym projektem dla strony logowania/rejestracji, a teraz chcę dodać stronę, która jest dostępna tylko po zalogowaniu. Pytanie brzmi: jak utworzyć sesję lub plik cookie i je odzyskać? I jak zablokować niezalogowanych użytkowników.Jak ustawić stronę dostępną tylko po zalogowaniu?

obecnie używam te kody dla login.php i 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 

?> 

Należy pamiętać, że jestem całkowicie nowy w PHP, więc kilka wskazówek, gdzie umieścić kod z, jeśli to możliwe, trochę wyjaśnienia.

Odpowiedz

10

Dodaj ten na górze Member_area.php:

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

sprawdza, czy sesja jest ustawiona czy nie, jeśli nie będzie przekierować użytkownika do strony logowania.

+0

Proszę wyjaśnić -1 –

+0

Cóż to jest rodzaj pracy, ale nawet gdybym zalogować się na stronie logowania nastąpi przekierowanie mnie do strony. czy to możliwe, że muszę rozpocząć sesję na stronie logowania? czy jest możliwe, że sesja zostanie zniszczona? EDYCJA: Sesja nie została uruchomiona, naprawiono. –

+0

Edytowałem kod try teraz, dodano 'session_start();' na górze –

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 

?> 

że powinno być :)

+2

'session_start();' nie jest dodawane :) –

+0

Prasanth miał rację, zapomniałeś rozpocząć sesję, ale dzięki: D! –

+0

O tak, tak mi przykro. Całkowicie o tym zapomniałem! –

Powiązane problemy