Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> logowanie php+mysql -> user+admin
-Gość_Yokashin-
post 8.05.2006, 10:16:46
Post #1





Goście







Witam,

Szukam sposobu na logowanie na mojej stronie.
Potrzebuję aby na stronie była możliwość przeglądania części zasobów jako gość, części jako user i panelu administracyjnego jako admin.

Rejestracja zwykłych użytkowników działa na mojej stronie poprawnie i tu nie muszę nic poprawiać.

Logowanie administratora zrobiłem na oddzielnym module logowania, sięgającym po dane do tej samej tabeli mysql, gdzie znajdują się dane userów.
Administrator po zalogowaniu otrzymuje swoją sesję, na której może otworzyć link "Administracja stroną". I tem moduł też działa wyśmienicie.

Problem mam z tym, że pliki do logowania są 2 dwóch różnych miejscach na stronie.

logowanie usera:
../logowanie.php

logowanie admina:
../administracja/logowanie_admin.php

Jeżeli użytkownik wejdzie na link do logowanie dla administratora i tam się zaloguje używając swojego loginu i hasła to uzyskuje sesję admina sadsmiley02.gif

Potrzebuję pomocy w sprawie modyfikacji mojego modułu do logowania, tak aby na admina mógł zalogować się tylko jeden - konkretny user z bazy danych...



moje pliki:

tabela "users"
  1. CREATE TABLE `users` (
  2. `username` varchar(20) NOT NULL DEFAULT '',
  3. `first_name` varchar(20) NOT NULL DEFAULT '',
  4. `last_name` varchar(20) NOT NULL DEFAULT '',
  5. `email` varchar(20) NOT NULL DEFAULT '',
  6. `password` varchar(20) NOT NULL DEFAULT '',
  7. `registration_date` date NOT NULL DEFAULT '0000-00-00',
  8. `user_id` int(4) NOT NULL AUTO_INCREMENT,
  9. PRIMARY KEY (`user_id`)
  10. )


plik logowania usera - logowanie.php

  1. <?php
  2. if (isset($_POST['submit'])) {
  3. require_once ('mysql_connect.php');
  4. function escape_data ($data) {
  5. global $dbc;
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data, $dbc);
  10. }
  11. $message = NULL;
  12. if (empty($_POST['username'])) {
  13. $u = FALSE;
  14. $message .= '<p>Zapomniałe&para; wprowadzić nazwę użytkownika!</p>';
  15. } else {
  16. $u = escape_data($_POST['username']);
  17. }
  18.  
  19. if (empty($_POST['password'])) {
  20. $p = FALSE;
  21. $message .= '<p>Zapomniałe&para; wprowadzić hasło!</p>';
  22. } else {
  23.  $p = escape_data($_POST['password']);
  24. }
  25.  
  26. if ($u && $p) { 
  27. $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
  28. $result = @mysql_query ($query);
  29. $row = mysql_fetch_array ($result, MYSQL_NUM); 
  30. if ($row) { 
  31.  
  32.  
  33. session_name ('IDTwojejSesji');
  34. ini_set ('session.use_cookies', 0);
  35. $_SESSION['first_name'] = $row[1];
  36. $_SESSION['user_id'] = $row[0];
  37. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/zalogowany.php?" . SID);
  38. exit();
  39.  
  40. } else {
  41. $message = '<p>Wprowadzona przez Ciebie nazwa uzytkownika i haslo nie zgadzaja sie z naszymi
     danymi.</p>'
    ; 
  42. }
  43. } else {
  44. $message .= '<p>Spróbuj jeszcze raz.</p>';
  45. }
  46. }
  47. $page_title = 'Logowanie';
  48.  
  49. if (isset($message)) {
  50. echo '<font color="red">', $message, '</font>';
  51. }
  52. ?>


plik logowania administratora - logowanie_admin.php

  1. <?php
  2. if (isset($_POST['submit'])) {
  3. require_once ('../mysql_connect.php');
  4. function escape_data ($data) {
  5. global $dbc;
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data, $dbc);
  10. }
  11. $message = NULL;
  12. if (empty($_POST['username'])) {
  13. $u = FALSE;
  14. $message .= '<p>Zapomniałe&para; wprowadzić nazwę użytkownika!</p>';
  15. } else {
  16. $u = escape_data($_POST['username']);
  17. }
  18.  
  19. if (empty($_POST['password'])) {
  20. $p = FALSE;
  21. $message .= '<p>Zapomniałe&para; wprowadzić hasło!</p>';
  22. } else {
  23.  $p = escape_data($_POST['password']);
  24. }
  25.  
  26. if ($u && $p) { 
  27. $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
  28. $result = @mysql_query ($query);
  29. $row = mysql_fetch_array ($result, MYSQL_NUM); 
  30. if ($row) { 
  31.  
  32.  
  33. session_name ('ID_SESJA_ADMIN');
  34. ini_set ('session.use_cookies', 0);
  35. $_SESSION['first_name'] = $row[1];
  36. $_SESSION['user_id'] = $row[0];
  37. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/zalogowany_admin.php?" . SID);
  38. exit();
  39.  
  40. } else {
  41. $message = '<p>Wprowadzona przez Ciebie nazwa uzytkownika i haslo nie zgadzaja sie z naszymi
     danymi.</p>'
    ; 
  42. }
  43. } else {
  44. $message .= '<p>Spróbuj jeszcze raz.</p>';
  45. }
  46. }
  47. $page_title = 'Logowanie';
  48.  
  49. if (isset($message)) {
  50. echo '<font color="red">', $message, '</font>';
  51. }
  52. ?>


autoryzacja usera

  1. <?php 
  2.  
  3. session_name ('IDTwojejSesji');
  4.  
  5.  
  6. if (!isset($_SESSION['first_name'])) {
  7. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "logowanie3.php");
  8. exit(); 
  9. }
  10.  
  11.  $conn=mysql_connect("localhost","root","krasnal") or die ("Nie mogę połączyć się z serwerem bazy danych");
  12.  @mysql_select_db("ic_sulkowo_borowe") or die ("Brak bazy danych");
  13. ?>


i autoryzacja admina

  1. <?php 
  2.  
  3. session_name ('ID_SESJA_ADMIN');
  4.  
  5.  
  6. if (!isset($_SESSION['first_name'])) {
  7. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "logowanie3.php");
  8. exit(); 
  9. }
  10.  
  11.  $conn=mysql_connect("mysql.ic.cz","ic_sulkowo_borow","123456") or die ("Nie mogę połączyć się z serwerem bazy danych");
  12.  @mysql_select_db("ic_sulkowo_borowe") or die ("Brak bazy danych");
  13. ?>




Proszę o gotowe rozwiązanie.
Wiem, że można zrobić dodatkowe pole w bazie mysql, przy userze, który ma być adminem i dodać strawdzanie wartości tego pola przy autoryzacji, ale niestety nie potrawię wcielić tego w życie - dopiero co zaczynam pracę z php na mojej pierwszej samodzielnej stronie sadsmiley02.gif.

pozdrawiam,
Yokashin
Go to the top of the page
+Quote Post
pirat
post 8.05.2006, 16:02:54
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.05.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Dodaj do Tabeli users pole "uprawnienia" int NULL. Userowi który ma być adminem w owym polu wpisz 1. W 28 lini pliku logowanie_admin.php znajdź
  1. <?php
  2. $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
  3. ?>


zamień na
  1. <?php
  2.  
  3. $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p') AND uprawnienia='1' ";
  4. ?>


Cytat
Proszę o gotowe rozwiązanie.

sadsmiley02.gif postaraj się następnym razem

pozdrawiam

Ten post edytował pirat 8.05.2006, 16:04:12


--------------------
Zdrowy rozsądek to rzecz, której każdy potrzebuje, mało, kto posiada, a nikt nie wie, że mu brakuje.

Czasami myślę, iż Bóg tworząc człowieka przecenił nieco swoje zdolności.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 04:23