Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] logowanie kilku grup
Forum PHP.pl > Forum > Przedszkole
em-ba
Witam, chciałem wykonać logowanie, które w zależności od tego kto się loguje to będzie łączony z dopowiednią stroną.
Czy ma Ktoś pomysł jak to można wykonać?

Myślałem nad czyms takim, zeby podzielić grupy osób na tabele i w zależności od tego z jakiej kto będzie "pochodził" tabeli to zostanie mu przedstawiona właściwa strona.

Mam nadzieje, że napisałem w miare przejzyscie smile.gif

do tej pory korzystam z takiego logowania..
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5.  
  6.  if($_SESSION['zalogowany'] == 0)
  7.  {
  8. echo '<form id="LOGOWANIE" method="post" action="index.php" enctype="multipart/form-data"> <h2>Zaloguj się:</h2>
  9. <div>
  10. Login:<br />
  11. <input id ="login" type="text" name="login" maxlength="15"/><br /><br />
  12. Hasło:<br />
  13. <input id ="haslo" type="password" name="haslo" maxlength="10"/><br /><br />
  14. <input id ="zaloguj" type="submit" name="zaloguj" value="Zaloguj"/>
  15. <a href="form_rej.php"><input id ="zarejestruj" type="submit" name="zarejestruj" value="Zarejestruj"/></a>
  16. </div>
  17. </form>'; 
  18.  
  19. if (isset($_POST['login']) && isset($_POST['haslo']))
  20. {
  21.  $login = $_POST['login'];
  22.  $haslo = $_POST['haslo'];
  23.  $haslo= md5($haslo);
  24.  
  25.  $sql = "SELECT id FROM uzytkownicy WHERE login='".$login."' and haslo='".$haslo."'";
  26.  $result = mysql_query($sql) or die ('BLAD ->'. mysql_error() . '<br />'. $sql);
  27.  
  28.  if(mysql_num_rows($result) == 1) {
  29.  echo "zostałeś zalogowany jako: $login";
  30.  $_SESSION['login'] = $login;
  31.  $_SESSION['zalogowany'] = 1;
  32.  $_SESSION['czas'] = time();
  33.  header ('location: strona1.php');
  34.  }else {
  35.  echo '<div style="margin-left: 300px;"><br />
  36.  <span style="color: red; font-weight: bold;">Wpisz prawidłowy login i hasło</span></div>';
  37. }
  38. }
  39.  }
  40.  else {
  41. echo "Zostałeś zalogowany jako ".$_SESSION['login']."<br /><a href='index.php?log=wyloguj'>wyloguj</a>";
  42. $intTimeoutSeconds = 600;
  43.  
  44. if(isset($_SESSION['intLastRefreshTime']))
  45. {
  46. if(($_SESSION['intLastRefreshTime']+$intTimeoutSeconds)<time())
  47. {
  48.  header('location: index.php');
  49. }
  50. }
  51. $_SESSION['intLastRefreshTime'] = time();
  52.  }
  53.  
  54.  if ($_GET['log'] == "wyloguj") {
  55. header('location: index.php');
  56.  }
  57.  
  58. ?>
PawelC
Możesz to zrobić tak:
tabela users a w niej login, haslo, ranga. Wtedy podczas logowania skrypt sprawdzi jaką ma range, i na jej podstawie wyświetli to co dana ranga może zobaczyć.
em-ba
aha, ale to użytkownik obok loginu i hasła musiałby podawać jeszcze range?
PawelC
Nie-e, ranga zostanie domyślnie dodana jako np zwykly user i zmienić mu rangę możesz ty za pomoca panela.
em-ba
ok, rozumiem....
ale to ogołem ma być docelowo tak, ze ja nie bede zmieniał tej rangi tylko beda dodawani użytkownicy z róznych miejsc serwisu..

jedni to poprostu userzy, a kolejni beda dodawani juz bezpośrednio ze storny jako pracownicy //a jest ten sam panel logowania
PawelC
możesz to rozwiązać np tak
  1. <?php
  2. ?>
  3. <?php
  4. mysql_connect(localhost,root,krasnal); // Łączenie z bazą danych
  5. mysql_select_db(krasnal);// wybranie bazy danych
  6.  
  7.  
  8.  
  9. $login = trim($_POST['login']);
  10. $haslo = trim($_POST['haslo']);
  11. $ranga=trim($_POST['ranga']);
  12. $loguj="select login,haslo,ranga from users where login='$login' and haslo='$haslo'"; 
  13. $rekordy = mysql_query($loguj);
  14. if(mysql_num_rows($rekordy)==0)// sprawdzenie czy dany użytkownik istnieje w bazie
  15. {
  16.  echo' Podany login i haslo jest błędne'; // jeżeli nie istnieje taki użytkownik to wyświetla błąd
  17.  exit;
  18. }
  19. else
  20. {
  21. $_session['ranga']=$_POST['ranga'];
  22. if($_session['ranga']=='zwykly user'){
  23. print "Twoja ranga to zwykły user"; //to co powinien widzieć zwykłu user
  24. }
  25.  
  26. if($_session['ranga']=='admin'){
  27. print "twoja ranga to admin"; // to co powinien widzieć admin
  28. }
  29.  
  30. if($_session['ranga']=='vip'){
  31. print "Twoja ranga to vip"; //to co powinien widzieć vip
  32. }
  33. }
  34. ?>

To co napisałem to tylko przykład smile.gif
em-ba
ok, dzieki, tylko mam takie pytanko...
no uzytkownicy beda mieli ta range=zwykly user i załóżmy bedzie im to nadawane automatycznie... a pracownicy?

pole z wyborem rangi dać w formularzu rej. userów jako ukryty? a w formularzu pracowników jako vip ..czy jakoś tak?

nie wiem wlasnie czy nie powinienem zrobić oddzielnej tabeli dla jednych i drugich w bazie danych... czy to nie ma znaczenia..
PawelC
w formularzu daj pole
  1. <input type="hidden" name="ranga" value="zwykly user">

A reszcie będziesz musiał sam dać rangę wyższą jak zwykły user poprzez panel, innego wyjścia niewidzę, tak będzie najbezpieczniej. Niema sensu robić odzielnej tabeli.
em-ba
ok, dzieki - spróbuję coś takiego wykonać biggrin.gif

myslalem tylko o 2 tabelach, bo wtedy bym sobie przechowywał inne dane dla userów w jednej tabeli i inne pracowników..

ale i tak dzieki za pomoc smile.gif
PawelC
Możesz zrobić tak:
Tabela users:
login,haslo i ranga

Tabela teksty:
a w niej dodatkowo kolumne ranga i wtedy będziesz przy zapytaniu do bazy dodawał warunek where ranga='tutaj ranga' i zostanie pobrany tekst dla danej rangi np
  1. <?php
  2. select * from teksty where ranga='tutaj ranga'
  3. ?>
em-ba
aha, a w tabeli "teksty" co miałoby się znaleźć oprócz tej rangi?

..nazwy podstron, które potem się zainculdują, czy jak...?
PawelC
Może być nazwa pliku który includujesz, ale lepiej dać tam teksty. Np tytul, tresc,autor etc...
i np dla zwykłych userów zrobisz tak
tytul tresc autor ranga
jakis tytul jakas tresc zosia zwykly_user
A dla pracownika tak samo tyle że w ranga np pracownik. To już twoja wola co będziesz chciał trzymać w tej bazie, dla pracowników np jakieś informacje etc...
em-ba
no dobraa, dzieki, pokombinuje coś z tym
PawelC
To jest proste, jak już masz bazę danych zaprojektowaną to reszte masz z górki. W razie problemów daj mi znać np na gg albo PW
em-ba
ok smile.gif
ja baze to mam itd wszystko działa tylko teraz chciałem wlasnie rozdzielić co się komu ma wyswietlac..
PawelC
Pracownikom np jakieś dane techniczne wszystko związane ze stroną techniczną serwisu, których niemogą zobaczyć zwykły userzy, a zwykłym userom artykuły etc...
em-ba
no tak, wlasnie o to mi chodzi
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.