Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Panel admin
Forum PHP.pl > Forum > Przedszkole
Lampek
Witam
Chce zrobić panel admin ale tak, żeby logowanie zarówno admina jak i użytkownika odbywało się z poziomu tej samej funkcji. Myślałem tak żeby przydzielić im prawa w bazie np 1=admin, 0=user. I chodzi mi teraz o to, żę tak nie bardzo wiem jak sie za to zabrać bo przydało by się żęby użytkownik miał automatycznie w bazie przydzielone 0, adminowi mogę sam nadać już uprawnienia z poziomu bazy.
Funkcja odpowiedzialna za logowanie.
  1. <?php
  2.  
  3.  
  4.  
  5. require_once('funkcje_all.php');
  6. $nazwa_uz = $_POST['nazwa_uz'];
  7. $haslo = $_POST['haslo'];
  8. ?>
  9.  
  10. <?php
  11. if ($nazwa_uz && $haslo) {
  12.  
  13. try {
  14. loguj($nazwa_uz, $haslo);
  15.  
  16. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  17. }
  18. catch (Exception $e) {
  19.  
  20. tworz_naglowek_html('Problem:');
  21. menu_top();
  22. tworz_header();
  23. ?>
  24. <div id="content1">
  25. <?php
  26. tworz_menu();
  27. ?>
  28. </div>
  29. <div id="content2">
  30. <?php
  31. echo 'Zalogowanie niemozliwe.
  32. Nalezy byc zalogowanym aby ogladac te strone.';
  33. tworz_url('logowanie.php', 'Logowanie');
  34. ?>
  35. </div>
  36. <?php
  37. tworz_stopke();
  38. }
  39. }
  40.  
  41.  
  42. tworz_naglowek_html('Zalogowano');
  43. menu_top();
  44. tworz_header();
  45. ?>
  46. <div id="content1">
  47. <?php
  48. tworz_menu_zalog(); ?>
  49. </div>
  50.  
  51. <div id="content2">
  52. <?php
  53.  
  54.  
  55. sprawdz_prawid_uzyt();
  56.  
  57.  
  58. ?>
  59. </div>
  60. <?php
  61. tworz_stopke();
  62. ?>
  63.  
wojtek19115
Robisz w bazie pole np: ranga, w pliku np admin.php dajesz ifa na początku sprawdzającego czy $user['ranga'] = 3 ( 1,2 zostawiamy na zaś dla moderatorów) jeżeli nie wywalasz go do index.php
Poza tym masz niezły bajzel w kodzie większy niż ja kiedy się uczyłem PHP i MySQL biggrin.gif
A automatycze przydzielanie 0 w MySQl ustawiasz domyślną wartość.

Poniżej przykład z mojego 1 CMS'a
Kod
<?php
ob_start();
//**Pobieranie ustawień do BazyDanych MySQ**\\
require_once('../conf/config.php');
//**Przedłużanie lub startowanie sesji**\\
session_start();
//**pobieramy top strony**\\
require_once("./top.php");
//podłączenie dodatkowych plików
require_once('ochrona.php');

if ($uzytkownik['ranga'] == 1) echo "Witaj w panelu admina";
else header("Location: index.php");
?>

Witaj w Panelu admina

<?php
echo "<a href='$www/konto.php'>Panel Usera</a><br />";
echo " <a href='$www'>Strona główna</a>";
//**Pobieramy stopkę**\\
require_once("./dol.php");
//wyłączamy bufor
ob_end_flush();
?>
Lampek
No rozumiem o co ci chodzi, co do burdelu też sie zgadzam:P ale ja chciałem przerobić tą funkcje co zamieściłem:), a panel admina działał na zasadzie normalnego menu tylko z dodatkowymi opcjami.
Daiquiri
wojtek19115, proszę poprawnie stosować bbcode.

Albo czegoś nie rozumiem, albo chcesz modyfikować funkcję z pliku funkcje_all.php, a tego listingu nie mamy.
Lampek
funkcja_all.php jest zbiorem wszystkich funkcji typu funkcje_bazy.php, funkcje_uwierz.php itd chce zmodyfikować tak funkcje logowanie.php którą zamieściłem tak żeby sama rozpoznała ona czy zalogowana osoba to admin czy user. Myślałem zeby zrobić tak jak pisałem ranga 1 dla admina ranga 0 dla usera.
Daiquiri
No to w czym masz jeszcze problem? Nie mamy definicji funkcji, która jest odpowiedzialna za logowanie (a jak mniemam to ją chcesz modyfikować). Wykorzystaj jakieś pole ranga w bazie i na podstawie tego, za pomocą warunku ustalaj stosowne uprawnienia -> jeżeli szukasz najprostszego rozwiązania.

System uprawnień opisywał kiedyś również Zyxist - tutaj.
Lampek
To jest funkcja loguj:
  1. function loguj($nazwa_uz, $haslo) {
  2.  
  3. $lacz = lacz_bd();
  4. $lacz -> query("SET NAMES 'utf8'");
  5.  
  6. $wynik = $lacz->query("select * from uzytkownik
  7. where nazwa_uz='".$nazwa_uz."'
  8. and haslo = sha1('".$haslo."')");
  9. if (!$wynik) {
  10. throw new Exception('Logowanie nie powiodło się.');
  11. }
  12.  
  13.  
  14.  
  15. if ($wynik->num_rows>0) {
  16. return true;
  17. } else {
  18. throw new Exception('Logowanie nie powiodło się.');
  19. }
  20. }
Daiquiri
Jeżeli chcesz to zrobić w wyżej opisany sposób, to dodaj w bazie pole ranga i uzupełnij je domyślnie np. 0. Wyłuskujesz stosowną daną z zapytania SELECT i na jej podstawie ustawiasz np. zmienną $_SESSION['ranga']. Jeżeli ranga w bazie = 0 to ustawiasz $_SESSION['ranga'] = 'user' w innym przypadku ='admin'.
Lampek
No wiem o co chodzi, ale jestem naprawdę świeży w PHP i kurcze nie za bardzo wiem jak zmodyfikować ten kod :/

To co pomoże ktoś smile.gif
sada
Dodałeś już to nowe pole do bazy "range"?
Lampek
Tak
Daiquiri
No to wyłuskaj stosowne dane (ranga) z $wynik i stwórz odpowiedni warunek, coś na kształt:
  1. if($ranga == '1'){
  2. $_SESSION['ranga'] = "admin";
  3. } else {
  4. $_SESSION['ranga'] = "user";
  5. }
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.