Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie
Forum PHP.pl > Forum > PHP
rafkam
Kod
<?



if ((!$username) || (!$password)) {

    header("Location: http://localhost/show_login.html");

    exit;

}





$db_name = "test";

$table_name = "logowanie";



$connection = @mysql_connect("localhost", "", "")

    or die("Couldn't connect.");



$db = mysql_select_db($db_name, $connection)

    or die("Couldn't select database.");



$sql = "SELECT * FROM $table_name

    WHERE username = "$username" AND password = password("$password")

    ";



$result = mysql_query($sql)

        or die ("Can't execute query.");



$num = mysql_numrows($result);



if ($num != 0) {



    $cookie_name = "auth";

    $cookie_value = "ok";

    $cookie_expire = "";

    $cookie_domain = "";

    

    setcookie($cookie_name, $cookie_value, $cookie_expire, "/" , $cookie_domain, 0);

itd..

W bazie obok userów zamiescilem kolumne z levelami dostepu. Jak zrobić aby po podaniu sprawdzał oprócz login i haslo odpowiedni level i przekierowywal go na taką odpowiednia mu strone.
BzikOS
Kod
<?



if ((!$username) || (!$password)) {

    header("Location: http://localhost/show_login.html");

    exit;

}





$db_name = "test";

$table_name = "logowanie";



$connection = @mysql_connect("localhost", "", "")

    or die("Couldn't connect.");



$db = mysql_select_db($db_name, $connection)

    or die("Couldn't select database.");



$sql = "SELECT * FROM $table_name

    WHERE username = "$username" AND password = password("$password")

    ";



$result = mysql_query($sql)

        or die ("Can't execute query.");



$row = mysql_fetch_array($result);



switch($row['level']) {

     case 0:

             Header('Location: admin.php'); break;

     case 1:

             Header('Location: moderator.php'); break;

     case 2:

             Header('Location: user.php'); break;

}



...


Chyba o coś takiego Ci chodziło?
rafkam
Cytat
Chyba o coś takiego Ci chodziło?


Tak oto dzięki.
Mam jescze pytanie - jak to jest skonstruowane np: w poczcie jakiegos portalu gdzy podający login i haslo ma swoj profil - a nie jak to ja sobie wymyslilem level. Czy to ą sesje. Jakby to wyglądało w moim skrypcie ?
BzikOS
Cytat
Mam jescze pytanie - jak to jest skonstruowane np: w poczcie jakiegos portalu gdzy podający login i haslo ma swoj profil - a nie jak to ja sobie wymyslilem level. Czy to ą sesje. Jakby to wyglądało w moim skrypcie ?


Po prostu musisz poszerzyć swoją tabelę użytkowników o ustawienia jakie chcesz aby były zapisywane dla konkretnych userów, np. imie, nazwisko, adres, miasto, wiek, czy powiadamiac o zmianach na stronie, schemat, sygnatura... no po prostu indywidualne dane dla każdego użytkownika.

A sesje są po to, aby klient nie musiał się logować na każdej podstronie, więc jak najbardziej wskazane jest ich użycie smile.gif
rafkam
Cytat
Po prostu musisz poszerzyć swoją tabelę użytkowników o ustawienia jakie chcesz aby były zapisywane dla konkretnych userów, np. imie, nazwisko, adres, miasto, wiek, czy powiadamiac o zmianach na stronie, schemat, sygnatura... no po prostu indywidualne dane dla każdego użytkownika.  

A sesje są po to, aby klient nie musiał się logować na każdej podstronie, więc jak najbardziej wskazane jest ich użycie  :)

Tak myślałem.
Jęsli możesz to odpowiedz jak to się będzie miało do tego mojego skryptu. Jak wyglada ten mechanizm ktory poroenuje pozostale dane i wywala odpowiednie dla uzytkownika.

Z gory dzieki
BzikOS
Kod
<?

#plik login.php



session_start()

if ((!$username) || (!$password)) {

   header("Location: login.php");

   exit;

}



$db_name = "test";

$table_name = "logowanie";



$connection = @mysql_connect("localhost", "", "")

   or die("Couldn't connect.");



$db = mysql_select_db($db_name, $connection)

   or die("Couldn't select database.");



$sql = "SELECT * FROM $table_name

   WHERE username = "$username" AND password = password("$password")";



$result = mysql_query($sql) or die ("Can't execute query.");

if(mysql_num_rows($result) > 0) {

   $HTTP_SESSION_VARS['logeduser'] = $username;

   Header('Location: userinfo.php');

} else

   print('Logowanie nie powiodlo się');

?>





<?

#plik userinfo.php



$db_name = "test";

$table_name = "logowanie";



$connection = @mysql_connect("localhost", "", "")

   or die("Couldn't connect.");



$db = mysql_select_db($db_name, $connection)

   or die("Couldn't select database.");



$sql = "SELECT * FROM $table_name WHERE username = ""

          . $HTTP_SESSION_VARS['logeduser'] . """;



$result = mysql_query($sql) or die ("Can't execute query.");

$row = mysql_fetch_array($result);



print('Imie: ' . $row['imie'] . '<br>');

print('Nazwisko: ' . $row['nazwisko'] . '<br>');

print('itd...: ' . $row['itd'] . '<br>');

?>

To jest zarys idei, musisz jeszcze dostosować to do własnych potrzeb, utworzyć skrypt pozwalający klientowi zmieniać swoje dane/ustawienia, no i poczytaj o sesjach :wink:
rafkam
Cytat
<?
#plik userinfo.php

$db_name = "test";  
$table_name = "logowanie";  

$connection = @mysql_connect("localhost", "", "")  
  or die("Couldn't connect.");  

$db = mysql_select_db($db_name, $connection)  
  or die("Couldn't select database.");  

$sql = "SELECT * FROM $table_name WHERE username = ""
         . $HTTP_SESSION_VARS['logeduser'] . """;

$result = mysql_query($sql) or die ("Can't execute query.");  
$row = mysql_fetch_array($result);

print('Imie: ' . $row['imie'] . '<br>');
print('Nazwisko: ' . $row['nazwisko'] . '<br>');
print('itd...: ' . $row['itd'] . '<br>');
?>[/code]
To jest zarys idei, musisz jeszcze dostosować to do własnych potrzeb, utworzyć skrypt pozwalający klientowi zmieniać swoje dane/ustawienia, no i poczytaj o sesjach  :wink:


Czyli ten kod z pliku userinfo.php moge umiesczac w plikach do których chce aby klient mial dostęp? Np: includem?
BzikOS
Cytat
Czyli ten kod z pliku userinfo.php moge umiesczac w plikach do których chce aby klient mial dostęp? Np: includem?

Tzn. nie tak żywcem, jeśli ma być on dołączany przy pomocy include() to trzeba się upewnić w skrypcie wywołującym, czy user się zalogował i dopiero wtedy dołączać.
Przydałoby się też zabezpieczenie, przed wywołaniem tego skryptu bezpośrednio np. na poczatku userinfo.php umieścić coś takiego:

Kod
<?

if(ereg("userinfo.php", $PHP_SELF))

   Header('Location: ./');
rafkam
Cytat
Tzn. nie tak żywcem, jeśli ma być on dołączany przy pomocy include() to trzeba się upewnić w skrypcie wywołującym, czy user się zalogował i dopiero wtedy dołączać.
Przydałoby się też zabezpieczenie, przed wywołaniem tego skryptu bezpośrednio np. na poczatku userinfo.php umieścić coś takiego:

Kod
<?

if(ereg("userinfo.php", $PHP_SELF))

   Header('Location: ./');


Ok to zrozumialem, ale rowniez chodzilo mi o to czy jak juz sie user zaloguje i juz bedzie na stronie userinfo.php gdzie np znajduje sie link do jakies innej podstronki np: adresy.php - to co w tym przypadku powinnienem umiescic na poczatku w adresy.php. , aby tylko on mial do niej dostep. Jakiś includzik? - czy tu trzeba uzyc sesji wtedy?

Sorry ze tak moce, ale obiecuje ze to juz ostatni post w tej materii.
Dzieki za cierpliwosc
BzikOS
Kod
<? #adresy.php

if(empty($HTTP_SESSION_VARS['logeduser'] == True)

   Header('Location: login.php');



...

Ot i całą filozofia.
A jeszcze lepiej byłoby zrobić osobny plik z często wykorzystywanymi funkcjami i tam umieścić funkcję np. checklogin() robiącą to co wyżej napisałem, a wtedy na początku każdego pliku w którym potrzebna jest autoryzacja wpisywać:
Kod
<?

include('funkcje.php');

checklogin();



...

?>
rafkam
Cytat
Kod
<? #adresy.php

if(empty($HTTP_SESSION_VARS['logeduser'] == True)

   Header('Location: login.php');



...

Ot i całą filozofia.
A jeszcze lepiej byłoby zrobić osobny plik z często wykorzystywanymi funkcjami i tam umieścić funkcję np. checklogin() robiącą to co wyżej napisałem, a wtedy na początku każdego pliku w którym potrzebna jest autoryzacja wpisywać:
Kod
<?

include('funkcje.php');

checklogin();



...

?>


Dzięki jescze raz za wszystko.
BzikOS
No problem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.