Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Strona tylko dla admina
Forum PHP.pl > Forum > Przedszkole
edwarpan
Witam, mam rejestrację php+mysql, wszystkie konta mają takie same uprawnienia, jak zrobić aby do kilku stron miał dostęp tylko login 'admin' ?
kto$
wg mnie powinno się to zawierac w klauzuli

if(isset($_SESSION['admin']))
{
wyswietl
}
kapuch
Cytat(edwarpan @ 9.05.2010, 15:54:27 ) *
Witam, mam rejestrację php+mysql, wszystkie konta mają takie same uprawnienia, jak zrobić aby do kilku stron miał dostęp tylko login 'admin' ?

Np
  1. <?
  2. if ($_SESSION['login'] == 'admin')
  3. {
  4. strona
  5. }
  6. else
  7. {
  8. echo 'tylko dla admina';
  9. }
  10. ?>

Obejmujesz ta instrukcja cala strone, ktora chcesz tak zablokowac.

PS. Na wszelki wypadek mozna zrobic to tak:
  1. $login2=strtolower($_SESSION['login']);
  2. if ($login2 == "admin")
  3. { strona }
  4. else
  5. { zablokowane }

Zabezpieczy to przed roznica w wielkosci liter w loginie.

EDIT:
Kto$ mnie wyprzedzil smile.gif Ah ten moj refleks winksmiley.jpg
habazy
hej, zaczynam zabawę z php i potrzebuję pomocy odnośnie tego tematu posta.
chciałbym tak jak kolega aby na stronę panel_admin.php zalogował się tylko administrator o loginie np. kolo,
niestety jak zwykły user wpisz www.....pl/panel_admin.php to też widzi zawartość tej strony.

tak mnie więcej wygląda zawartość strony panel_admin.php :
  1. <?php
  2.  
  3. if (!isset($_SESSION['zalogowany']))
  4. {
  5. header('Location: logowanie_admin.php');
  6. exit();
  7. }
  8. ?>


  1. </head>
  2.  
  3. </body>
  4. </htm>


proszę o info w które miejsce wstawić któryś z kodów poprzednich postów i jak ewentualnie miałbym je zmienić
thx
dublinka
Ten kod oznacza mowiac kolokwialnie czy sesja NIE istnieje. Musisz gdzies ja zainicjowac gdzies podczas logowania. Tu jest jesli nie istnieje nastepuje przekierowanie na adres innego pliku. Wszystko ponizej tego warunku wyswietli sie jesli sesja bedzie istniala
habazy
Tak, sorki tutaj mam skrypt logowania, jak mógłbym to zainicjować ?
  1. <?php
  2.  
  3. if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
  4. {
  5. header('Location: panel_administratora.php');
  6. exit();
  7. }
  8.  
  9. require_once "connect.php";
  10.  
  11. $polaczenie = @new mysqli($host, $usery, $password, $nazwa);
  12.  
  13. if ($polaczenie->connect_errno!=0)
  14. {
  15. echo "Error: ".$polaczenie->connect_errno;
  16. }
  17. else
  18. {
  19. $login = $_POST['login'];
  20. $haslo = $_POST['haslo'];
  21.  
  22. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  23.  
  24. if ($rezultat = @$polaczenie->query(
  25. sprintf("SELECT * FROM admin WHERE login='%s'",
  26. mysqli_real_escape_string($polaczenie,$login))))
  27. {
  28. $ilu_userow = $rezultat->num_rows;
  29. if($ilu_userow>0)
  30. {
  31. $wiersz = $rezultat->fetch_assoc();
  32.  
  33. if (password_verify($haslo, $wiersz['pass']))
  34. {
  35. $_SESSION['zalogowany'] = true;
  36. $_SESSION['id'] = $wiersz['id'];
  37. $_SESSION['login'] = $wiersz['login'];
  38. $_SESSION['email'] = $wiersz['email'];
  39.  
  40. unset($_SESSION['blad']);
  41. $rezultat->free_result();
  42. header('Location: panel_admininistratora.php');
  43. }
  44. else
  45. {
  46. $_SESSION['blad'] = 'Nieprawidłowe dane';
  47. header('Location: log_admin.php');
  48. }
  49.  
  50. } else {
  51.  
  52. $_SESSION['blad'] = 'Nieprawidłowe dane';
  53. header('Location: log_admin.php');
  54.  
  55. }
  56.  
  57. }
  58.  
  59. $polaczenie->close();
  60. }
  61.  
  62. ?>
dublinka
No to wszystko masz. Gdzie lezy problem. Napisalem Ci ze wszystko za tym warunkiem bedzie dla tych ktorzy zaloguja sie bo w tym pliku ustawiasz wlasnie te sesje 'zalogowany'.
habazy
thx viking,
ale mimo to, chciałbym zostać przy moim kodzie, żeby nie dublować roboty.
dałoby się te powyższe rozwiązania wcisnąć w mój kod?
viking
A dlaczego jak są nieustawione zmienne login i haslo przekierowujesz do panelu?
habazy
viking,
admin rejestruje się z innego formularza a user z innego, dlatego admina kieruję do panel_administratra.php a w skrypcie drugim usera do panel_user.php.
gino
nie mnoży się bytów ponad potrzebę. Czy admin loguje się inaczej niż zwykły user? Też wpisuje hasło i nazwę użytkownika. Po co dwa formularze? A czy admin nie może mieć dostępu do strony gdzie przekierowujesz user-a? To Ty musisz rozeznać w kodzie, który jest który. Dlatego stosuje się odpowiednie wagi dla admina i userów ( pole w bazie danych) i jak sobie po zalogowaniu doczytasz status danego użytkownika, będziesz wiedział kto to jest. A dostęp do danej strony czy widoku realizuje się na wiele sposobów, zależnie od konstrukcji strony i czy dostęp przypisujesz w locie, czy zaczytasz z bazy to już Twoja decyzja. @viking podał Ci kod abyś zobaczył jak się to realizuje.
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.