2013-08-30 25 views
5

pracuję na stronie internetowej i kontroli strony indeksu, jeśli użytkownik jest zalogowany lub nie z tego kawałka kodu:PHP Sprawdź, czy użytkownik jest zalogowany z funkcją

if (!$_SESSION['login'] && $_SESSION['login'] == "") { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} elseif ($_SESSION['login'] == 1) { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

Ale chcę go szukać czystsze, a potem zaczął się zastanawiać, czy to możliwe, aby osiągnąć coś takiego z funkcją:

checklogin($_SESSION['login']); 

nie mam dużego doświadczenia z funkcji, więc przepraszam, jeśli moje pytanie wygląda głupio, więc dzięki z góry.

+0

Nie martw się, oba opisy, które wysłałeś, są całkowicie poprawne. To od ciebie zależy, jak skonstruować swój kod i gdzie umieścić logikę. Ale musi to być * gdzieś *. Więc jeśli chcesz tylko tę funkcję (jak w drugim przykładzie), logika z poprzedniego przykładu będzie musiała być * wewnątrz * tej funkcji. Nie może po prostu odejść. Powinieneś ponownie użyć istniejącego środowiska uwierzytelniania, gdy tylko jest to możliwe, ponieważ naprawdę jest skomplikowany. Na przykład spójrz na https://github.com/delight-im/PHP-Auth, który jest zarówno agnostyczny, jak i agnostyczny. – caw

Odpowiedz

6

Spróbuj

if(check_login()) { 
    echo 'You are in!'; 
} else { 
    header('Location: login.php'); 
    exit; 
} 

function check_login() { 
    if(isset($_SESSION['login'] && $_SESSION['login'] != '') { 
     return true; 
    } else { 
     false; 
    } 
} 
3

Wystarczy użyć empty:

if (empty($_SESSION['login'])) { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} else { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

Albo skraplać go:

include_once $_SERVER['DOCUMENT_ROOT'].(empty($_SESSION['login']) ? "/login/" : "/main/"); 
2

Jest to, czego potrzebujesz:

function userCheck() 
{ 
    return (isSet($_SESSION['login']) && $_SESSION['login']); 
} 

if(userCheck()) 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
else 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
1

Pomijając fakt, czy Twoje podejście ma sens, myślę, że zrobi to, czego się spodziewać:

function checklogin($login){ 
     if (!$login && $login == "") { 
      include_once($_SERVER['DOCUMENT_ROOT'] . "/path/"); 
     } 
} 


// **** call to the function 

     checklogin($_SESSION['login']); 

// **** 
0

Można użyć tej funkcji:

function checklogin() { 
    return (isset($_SESSION['login'])) ? true : false; 
} 

następnie na stronach chcesz sprawdź, czy użytkownik jest zalogowany czy nie, możesz:

if(checklogin() === true){ 
    //here you would put what you want to do if the user is logged in 
} else { 
    //this would be executed if user isn't logged in 
    header('Location: protected.php'); 
    exit(); 
    //the above would redirect the user 
} 
Powiązane problemy