Prośba o poradę w sprawie skryptów do panelu administratora

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
justynasankiel
Posty: 18
Rejestracja: ndz sty 11, 2009 10:20 am

Prośba o poradę w sprawie skryptów do panelu administratora

Post autor: justynasankiel »

Witam!

Próbuję stworzyć panel administratora, w którym są strony z następującymi tabelkami: http://www.wklej.org/hash/e748d6d33e/- podgląd przebywania użytkowników oraz dane o użytkowniku: http://www.wklej.org/hash/adbf38d4ba/

Pierwsza tabelka składa się z następujących kolumn:

-checkbox,
-stan (online (obrazek)- jeśli użytkownik jest zalogowany, offline (obrazek)- jeśli użytkownik jest niezalogowany), prawdopodobnie skrypt pokazujący stan, będzie wyglądał tak:

Kod: Zaznacz cały


<?
$stan = file_get_contents("");

if (trim($stan)=="01") {
  echo "<img src="images/online.gif" border="0">";
} else {trim($stan)=="00"
  echo "<img src="images/offline.gif" border="0">";
}
?>
(W tym miejscu nie wiem, gdzie mam wstawić ten kod?)

-status (nazwa grupy sesji, np.:
0- jeśli jest niezalogowany (no),
1- może przeglądać stronę (see),
2- może przeglądać i drukować stronę (see/print),
3- może przeglądać i drukować stronę oraz dokonywać zmian (wstawiać, edytować i usuwać dane, wstawiać i usuwać wiersze w tabeli itd) (see/print/modify),
4- może przeglądać i drukować dane z wszystkich stron i wprowadzać dane tylko na określonej stronie w określonym miejscu (see/print/modify_point)
5- grupa dla wybranych osób (może przeglądać i drukować) (VIP),
6- ADMINISTRATOR (może wszystko)

Czy wprowadzić tutaj moderatora?

I dalej:

- nazwa użytkownika,
- przebywanie (godzina i data ostatniego logowania),
- pole do usuwania wiersza dla danego użytkownika,

2) Powyższa tabelka jest jednym z elementów panelu administratora i łączy się z drugą tabelką- Dane o użytkowniku, gdzie są:
- chekckbox, do zaznaczania wiersza, jeśli che się go usunąć,
- status (powiązany z wcześniejszą tabelką).
- nazwa użytkownika (powiązana z wcześniejszą tabelką),
- hasło użytkownika,
- przypomnienie (czyli odpowiedź na pytanie przypominające- może zrobić jeszcze pole z pytaniem jakie użytkownik wybrał sobie?),
- data rejestracji,
- imię,
- nazwisko,
- nr kont.;
- wyd. (określony skrót);
- fun (określony skrót);

Pod tabelkami są przyciski:
- do wstawiania i usuwania wierszy z opisem użytkownika,
- do drukowania strony,
- do zapisywania strony,
- do szukania danych o użytkowniku,
-sortowanie ma się odbywać poprzez kliknięcie w nagłówki (status, nazwa, data rejestracji, nazwisko, numer kont., wyd i fun.)- ten skrypt mam gotowy ale nie wiem dlaczego mi nie działa

Dodatkowo mam takie pytania:
- jak zrobić skrypt, który po zarejestrowaniu użytkownika wprowadzi automatycznie wszystkie dane do powyższych tabelek?
- jak zrobić skrypt, który po zalogowaniu użytkownika będzie podawał jego nazwę, stan (online/offline), poda status/prawo dostępu albo nazwę grupy (czyli print- może drukować itd.) i dalej godzinę i datę ostatniego logowania na stronie?
- w jaki sposób edytować dane o użytkowniku (jak można zrobić tak, żeby poprzez kliknięcie w przycisk edytuj z boku wiersza wypełniało się pola a po zatwierdzeniu wpisania żeby dane były umieszczane w wierszu)?
- w jaki sposób może administrator zmieniać prawa dostępu użytkowników?
- jeśli administrator chce zmieniać zawartość stron, to jak to ma robić?
- czy administrator loguje się tak samo jak zwykły użytkownik?
- w jaki sposób przy logowaniu, należy przypisać status (prawa dostępu do grup sesji?) do użytkownika, przy logowaniu?

Takie pytania mi przychodzą na myśl, nie za bardzo orientuję co jeszcze ma zawierać panel administratora ale wydaje mi się że te elementy wystarczą.

Dodatkowe uwagi:
- panel chciałabym wykonać na bazie powyższych tabelek, oraz z tego co poczytałam to najlepiej w PHP ( bo javascript za bardzo do tego się nie nadaje),
- panel musi być w oddzielnym folderze, a dane użytkowników zapisywane w plikach tekstowych zabezpieczonych (tutaj nie za bardzo wiem czy md5 czy chmod- nie orientuje się w tym)

Pozdrawiam i proszę o pomoc w rozwiązaniu problemu
Ostatnio zmieniony sob sty 17, 2009 8:49 am przez justynasankiel, łącznie zmieniany 1 raz.
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: Prośba o poradę w sprawie skryptów do panelu administratora

Post autor: gorylek »

Ten "problem" jest dość obszerny. Pierwsze co mi się wrzuciło w oczy:

Kod: Zaznacz cały

0- jeśli jest niezalogowany (no),
1- może przeglądać stronę (see),
2- może przeglądać i drukować stronę (see/print),
3- może przeglądać i drukować stronę oraz dokonywać zmian (wstawiać, edytować i usuwać dane, wstawiać i usuwać wiersze w tabeli itd) (see/print/modify),
4- może przeglądać i drukować dane z wszystkich stron i wprowadzać dane tylko na określonej stronie w określonym miejscu (see/print/modify_point)
5- grupa dla wybranych osób (może przeglądać i drukować) (VIP),
6- ADMINISTRATOR (może wszystko) 
Po co rozdzielać punkty 2 i 3 ? Podobnie punkt 3, rozumie że chodzi o edycje własnych danych ? To też powinno być razem z pk 2 i 3 a jeżeli chodzi też o dane innych to masz tu najzwyklejszego moderatora.
4 i 5 też się za bardzo nie różnią.
Dodatkowo mam takie pytania:
Takie pytanie rodzi pytanie. Chcesz korzystać z bazy danych czy działać na plikach tekstowych ? Jak dobrze znasz PHP oraz SQL ? Bo wszystkie popunkty ograniczają się głównie do jednego - operacjami na danych przechowywanych w bazie/plikach. Cały trik polega na tym jak jednych dopuścić do wykonywania pewnych operacji a innych nie. Między innymi od tego masz swój "status".
- panel chciałabym wykonać na bazie powyższych tabelek, oraz z tego co poczytałam to najlepiej w PHP ( bo javascript za bardzo do tego się nie nadaje),
PHP działa po stronie serwera i tam są wszystkie dane które posiada strona. JavaScript działa po stronie przeglądarki internetowej użytkownika i dostęp ma tylko do tego co otrzyma z serwera (kod strony przede wszystkim).
- panel musi być w oddzielnym folderze, a dane użytkowników zapisywane w plikach tekstowych zabezpieczonych (tutaj nie za bardzo wiem czy md5 czy chmod- nie orientuje się w tym)
Pliki textowe to nie najlepszy pomysł, chyba że pod groźbą śmierci nie możesz korzystać z bazy danych. Uwierz mi że więcej z nimi zabawy jest jak z samą bazą. Co do zabezpieczeń md5, chmod to chyba nie wiesz o czym mówisz. md5 to algorytm szyfrowania ciągów. Raz zaszyfrowany ciąg jest w teorii nie do odczytania (w praktyce są tęczowe tablice czy tablice hash) i może wszystko od pustej spacji do encyklopedii zamienić w 32 znaki. Przydawał się do szyfrowania haseł (teraz używa się sha1, dodaje sól i robi wiele innych nieciekawych rzeczy). CHMOD z kolei to najprościej mówiąc, prawa dostępu do plików w systemach unixowych (czyt. nie w Windows).

W każdym razie jeżeli chcesz wykonać coś takiego oczym mówisz to:
~zainteresuj się językiem SQL i bazami danych (np mySQL).
~zainteresuj się w szerszym stopniu PHP (nie wiem na ile znasz ten język)
~dowiedz się co to jest CHMOD oraz MD5.

Następnie możemy Ci wyjaśnić wszystko po kolei.
justynasankiel
Posty: 18
Rejestracja: ndz sty 11, 2009 10:20 am

Re: Prośba o poradę w sprawie skryptów do panelu administratora

Post autor: justynasankiel »

Jeśli chodzi o nazwy grupy sesji, to myślę że inaczej się nie da podzielić jak poniżej:

0- jeśli jest niezalogowany,
1- może przeglądać i drukować strony,
2- może przeglądać i drukować wszystkie strony oraz dokonywać zmian na
stronach 1,2 i 3 (wstawiać, edytować i usuwać dane, wstawiać i usuwać
wiersze w tabeli itd) ,
3- może przeglądać i drukować wszystkie strony i wprowadzać dane tylko na
stronie 4 w określonym miejscu strony 4,
4- ADMINISTRATOR (może wszystko)

Cały system chcę oprzeć o bazę danych MySQL i PHP.

Jak się tworzy tabelki w MySQL to wiem, ale nie wiem jak zapisuje się tabelkę z obrazkiem, polami select option, linkami, inputami i wierszami w bazie danych, a później wyświetla zawartość bazy i edytuje.
Nie wiem również, jeśli mam przyciski np do Wstawiania lub usuwania wiersza,edytowania wiersza i zapisywania zmian jak połączyć je z bazą danych.

Nie znalazłam czytelnych opisów lub przykładów jak można to zrobić.

Pozdrawiam
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: Prośba o poradę w sprawie skryptów do panelu administratora

Post autor: gorylek »

Rozumie że programowanie obiektowe w PHP jest Ci obce więc najpierw zapoznaj się z tym:

http://php.net.pl/manual/pl/book.mysql.php

Dowiesz się jak się połączyć, rozłączyć z bazą danych oraz jak wykonać na niej zapytanie za pośrednictwem PHP.
nie wiem jak zapisuje się tabelkę z obrazkiem
Bo się nie zapisuje. Poczytaj czym jest baza danych. Tak prosto tłumacząc, jest to zbiór tabel przechowujących informacje jakie sobie tylko życzysz. Przykładowo przechowując dane użytkownika, tworzysz tabelę która przechowuje jego ID, login, hasło oraz poziom dostępu. Gdy użytkownik się zaloguje (wprowadzi dane które zostaną porównane z tymi w bazie i jeżeli się zgadzają, stworzona zostanie dla niego zmienna sesji) to dane te są pobierane i skrypt otrzymując poziom dostępu decyduje czy dopuścić do jakiejś akcji czy nie.

Co do tabel, formularzy i tego wszystkiego o czym mówisz. Tworzysz formularz HTML i w action podajesz plik w którym jest skrypt PHP który ma coś na tych danych wykonać. Wszystkie dane są podane w tabeli $_POST o indexie takiej jak nazwa pola formularza więc jeżeli przykładowo masz pole z atrybutem name="kot" to odwołasz się do tego co jest w nim wpisane w PHP pod $_POST['kot'].

Moja sugestia. Radzę zapoznać się z językiem SQL oraz PHP. Bez dobrej znajomości tychże będzie Ci bardzo ciężko napisać powyższy skrypt. Do tego nawet jeżeli to zrobisz prawdopodobnie będzie on narażony na ataki złośliwych użytkowników.
justynasankiel
Posty: 18
Rejestracja: ndz sty 11, 2009 10:20 am

Re: Prośba o poradę w sprawie skryptów do panelu administratora

Post autor: justynasankiel »

Stworzyłam następujące tabele:

Kod: Zaznacz cały

 <?php


    //połączenie z bazą danych
    $polaczenie = mysql_connect("mysql.yoyo.pl", "xxxx", "xxxx")
           or die(mysql_error());
    mysql_select_db("db1111",  $polaczenie)  or die(mysql_error());

    //tworzy tabelę Wykazu użytkowników
    $sql =CREATE TABLE `Wykaz_uzytkownikow` (
`id` INT( 15 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`status` VARCHAR( 10 ) NOT NULL COMMENT 'Status',
`nazwa` VARCHAR( 15 ) NOT NULL COMMENT 'Nazwa',
`haslo` VARCHAR( 15 ) NOT NULL COMMENT 'Hasło',
`data_rejestracji` DATE NOT NULL COMMENT 'Data rejestracji',
`imie` VARCHAR( 15 ) NOT NULL COMMENT 'Imię',
`nazwisko` VARCHAR( 30 ) NOT NULL COMMENT 'Nazwisko',
`nr_kont` INT( 6 ) NOT NULL COMMENT 'Nr kont.',
`wydz` VARCHAR( 15 ) NOT NULL COMMENT 'Wydz.',
`fun` VARCHAR( 10 ) NOT NULL COMMENT 'Fun.'
) ENGINE = MYISAM COMMENT = 'Wykaz użytkowników';

    $wynik = mysql_query($sql,   $polaczenie) or die(mysql_error());

    //tworzy tabelę Przebywania użytkowników na moich stronach
    $sql = "CREATE TABLE `Przebywanie_uzytkownikow` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`stan` VARCHAR( 4 ) NOT NULL COMMENT 'Stan',
`status` VARCHAR( 10 ) NOT NULL COMMENT 'Status',
`nazwa` VARCHAR( 15 ) NOT NULL COMMENT 'Nazwa',
`pytanie` VARCHAR( 30 ) NOT NULL COMMENT 'Pytanie',
`odpowiedz` VARCHAR( 15 ) NOT NULL COMMENT 'Odpowiedź',
`ostatnie_logowanie` DATETIME NOT NULL COMMENT 'Ostatnie logowanie'
) ENGINE = MYISAM COMMENT = 'Podgląd przebywania użytkowinków na stronach';

    $wynik = mysql_query($sql,   $polaczenie) or die(mysql_error());
  echo $wynik;
  
  //tworzy tabelę Przebywania użytkowników na moich stronach
    $sql = 'CREATE TABLE `status_uzytkownika` ('
        . ' `id` INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, '
        . ' `status` VARCHAR(10) NOT NULL COMMENT \'Status\', '
        . ' `nazwa` VARCHAR(15) NOT NULL COMMENT \'Nazwa\''
        . ' )'
        . ' ENGINE = myisam'
        . ' COMMENT = \'Status dla użytkowników\';'; 
         
     $wynik = mysql_query($sql,   $polaczenie) or die(mysql_error());
  echo $wynik;
?>
Gdzie:


Tabela ranks:
`nazwa` - Nazwa usera,
`status` - Nazwa rangi czytelna dla PHP.
W tym miejscu nie wiem czy administator oraz moderator, będą logować się z tej samej strony logowania co wszyscy użytkownicy, czy stworzyć jeszcze jedną tabelkę dla adminów i moderatorów?

Dalej tworzę rangi lub grupę sesji:
NONE (0) - jeśli jest niezalogowany,
VIEW (1)- może przeglądać i drukować strony,
TECH (2)- może przeglądać i drukować wszystkie strony oraz dokonywać zmian na stronach wyk.html, proc.html i op.html (wstawiać, edytować i usuwać dane, wstawiać i usuwać wiersze w tabeli itd) ,
MOD_wyr(3)- może przeglądać i drukować wszystkie strony i dodatkowo wprowadzać dane tylko na stronie wyr.html w określonym miejscu strony,
ADM (4)- ADMINISTRATOR (może zmieniać wygląd strony, wprowadzac zmiany i zarządzać userami)
MDR- moderator (może zarządzać userami? czy zmieniać wygląd strony?
I dla przykładu:
INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja`, `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'ADM', 'admin', MD5('super tajne'), 'Jaki mam samochód?', 'Syrenka', `13.08.2008`, `Martin`, `Pak` , ‘12345’, `admin` , `admin`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja`, `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (
NULL , 'VIEW', 'user1', MD5('super tajne'), 'Jaki mam rower?', 'BMX', `16.11.2008`, `Daniel`, `Dan` , ‘13345’, `WWWwm` , `planownik`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (
NULL , 'MDR', 'moderator', MD5('super tajne'), 'Jaki mam dom?', 'maly', `12.06.2008` , `Pawel`, `Minek` , ‘14345’, `moderator` , `moderator`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'TECH', 'technics1', MD5('super tajne'), 'Jaki mam dlugopis?', 'pentel', `25.07.2007` , `Michal`, `Kasperek` , ‘15345’, `WWw- T` , `technics`);
);


INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'MOD_wyr', 'master', MD5('super tajne'), 'Jaką mam ksywę?', 'papkin', `20.12.2008` , `Piotrek`, `Miazga` , ‘55345’, `WWw- SG` , `master`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'VIEW', 'customer1', MD5('super tajne'), 'Jaką lubię kolor?', 'biały', `20.12.2008` , `Andrzej`, `Patafianek` , ‘44345’, `WWw- SG` , `customer`);
);

A to wszystko jest na jednej stronie z 3 podstronami, gdzie na pierwszej stronie Panelu Administratora planowałam zrobić edytowanie kodu strony (skrypt do tego nie zabardzo działa, ponieważ nie otwiera strony w okienku, a później nie zamienia strony na panel z kodem.

Kod tej strony jest taki:

http://www.wklej.org/hash/42e417fa58/

Tyle na razie zrobiłam i prosiłabym o sprawdzenie i ewentualne poprawki.

Buziaki

justynasankiel
ODPOWIEDZ