Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Część strony widoczna dla grupy
Forum PHP.pl > Forum > Przedszkole
piottro1
Na wstępie informuję, że raczkuję w php wstydnis.gif ale w końcu każdy kiedyś zaczynał.
Utworzyłem stroną składającą się z:
(folder główny)
index.php
header.php
main.php
footer.php
css
includes
images
js
pages
Nagłówek i stopka są stałe, podstrony wraz z (różnym) menu wczytują się do pliku main.php, oto jego część:
CODE
<div id="content">
<?php
if(empty($_GET['page']) or $_GET['page']=="strona1") {
include("pages/index_xx.php");
} else
if(empty($_GET['page']) or $_GET['page']=="strona2") {
include("pages/strona_xx.php");
} else
.
.
.
.
if(empty($_GET['page']) or $_GET['page']=="strona42") {
include("pages/strona_17_zom.php");
} else
if(empty($_GET['page']) or $_GET['page']=="strona43") { //zajete dla rejestracji
include("includes/register.php");
} else {
echo "<p>Nie ma takiej strony</p>";
}

?>
</div>

Aby ułatwić sobie życie skorzystałem z dobrodziejstw języka php i sql, dodatkowo tworząc bazę danych i system rejestracji.
CODE
CREATE TABLE `baza`.`members` (
`id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 50 ) NOT NULL ,
`grupa` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
`status` INT NOT NULL ,
`date` TEXT NOT NULL ,
`ip` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE ( `username` ))
TYPE = MYISAM

Jakoś udało mi się w końcu to uruchomić i teraz mam możliwość dodawania użytkownków do bazy oraz możliwość logowania.
Na chwilę obecną, dzięki:
CODE
<?php
if($_SESSION['username']) {
echo 'dla zalogowanych';
}
if(!$_SESSION['username']) {
echo 'dla niezalogowanych';
}
?>
uzyskałem możliwość pokazywania treści dla zalogowanych i niezalogowanych.
Spędziłem sporo czasu szukając rozwiązania, ale do tej pory nic nie udało mi się odszukać. Dokładnie to nie wiem nawet jak zadać pytanie.

Już tłumaczę o co chodzi: nie wiem czy dobrze kombinuję, ale użytkownikom dodałem w bazie pole "grupa", wg którego chciałbym nadać im prawa do przeglądania strony, tzn. jeśli zaloguje się użytkownik z grupy o nazwie "pierwsza" to zobaczy tylko częśc strony, a jeśli zaloguje się użytkownik z grupy "druga" to zobaczy dodatkowo ukrytą część strony. Rozumiem, że trzeba się jakoś odwołać do pola "grupa", być może rozwiązanie jest banalne dla osób doświadczonych, więc liczę na ich pomoc.

Aha, w zapytaniu tworzącym tabelę na razie nie koduję haseł, wiem że to błąd, ale w chwili obecnej stronę mam na localhost.
Jeśli jest potrzeba to pokażę resztę kodu. Rozumiem również, że zapewne zawiera on błędy, ale przecież ten dział to przedszkole i chętnie skorzystam z dobrych rad doświadczonych osób.
Mam nadzieję, że dobrze wytłumaczyłem mój problem, z góry dziękuję za okazaną pomoc.
jarmiar
stwórz sobie tabele z z grupami oraz z polami odpowiadającymi konkretnemu uprawnieniu np: add_new_user z typem TINYINT(1) oraz z wartością domyślną 0. Teraz jeśli 1 to ma uprawnienie a 0 nie ma.

W tabeli z userami robisz pole id_grupy i sprawdzasz czy w tabeli z grupami o podanym id , wybrane pola ma wartosc 1 jesli tak to puszczasz dalej, a jesli nie to wyswietlasz komunikat o braku uprawnień

Napisz sobie funkcje, która to bedzie sprawdzać
aras785
Dobrze myślisz. Do tej pory wszystko Ci śmiga więc jest ok.

Do grup należy stworzyc tabele grupy w nich ID + NAZWA.
Do tabeli z user dodaj IDG - id grupy

Kolejno przy rejestracji przypisz wszystkich do jakies tam grupy np. 1 - Domyślna
Podczas logowania zapisz w sesji grupe w jakiej sie znajduje uzytkownik.

Jeśli chodzi prosty sposób to sprawdzaj, czy $_SESSION['user']['idg']==1 to pokaz to, jeśli jest np. 2 pokaż coś innego. Prosta rzecz ale na początek Ci wystarczy.

//ps. w/w rozwiązanie jest dobre, ja dałem Ci rozwiązanie na kilka grup + nazywanie ich. Ale do tego należy mieć panel
piottro1
Dzięki za szybką odpowiedź.
Zrobiłem tak:
1. Utworzyłem tabelę użytkowników, dodając pole "idg":
  1. CREATE TABLE `baza`.`members` (
  2. `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT ,
  3. `idg` TINYINT(1) DEFAULT '0' ,
  4. `username` VARCHAR( 50 ) NOT NULL ,
  5. `grupa` VARCHAR( 50 ) NOT NULL ,
  6. `email` VARCHAR( 50 ) NOT NULL ,
  7. `password` VARCHAR( 50 ) NOT NULL ,
  8. `status` INT NOT NULL ,
  9. `date` TEXT NOT NULL ,
  10. `ip` VARCHAR( 50 ) NOT NULL ,
  11. PRIMARY KEY ( `id` ) ,
  12. UNIQUE ( `username` ))
  13. TYPE = MYISAM

2. Dodałem tabelę grup:
  1. CREATE TABLE `baza`.`groups` (
  2. `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT ,
  3. `nazwa_grupy` VARCHAR( 50 ) NOT NULL ,
  4. PRIMARY KEY ( `id` ))
  5. TYPE = MYISAM

3. W pliku rejestracji:
- dodałem "idg" w zapytaniu:
  1. $query = mysql_query("INSERT INTO members
  2. (idg, username, grupa, email, password, status, date, ip)
  3. VALUES ('$_POST[idg]', '$_POST[username]','$_POST[grupa]','$_POST[email]','$_POST[password]','$_POST[status]','$date','$ip')")

- i dodałem input:
  1. <input type="text" name="idg" hidden="hidden" size="2" value="0">


Tak więc mam dodane pole do tabeli użytkowników i mam tabelę dla grup.
Cytat("aras785")
//ps. w/w rozwiązanie jest dobre, ja dałem Ci rozwiązanie na kilka grup + nazywanie ich. Ale do tego należy mieć panel
dodałem kilka grup. Używam takiego zapytania:
  1. INSERT INTO `groups` (`id`, `nazwa_grupy`) VALUES ('', 'new_user')
  2. INSERT INTO `groups` (`id`, `nazwa_grupy`) VALUES ('', 'level_1')
  3. INSERT INTO `groups` (`id`, `nazwa_grupy`) VALUES ('', 'level_2')

Do tej pory wszytko poszło dobrze rolleyes.gif
Cytat("aras785")
Podczas logowania zapisz w sesji grupe w jakiej sie znajduje uzytkownik.

Może pokarzę mój plik check_login.php:
  1. <?php
  2. // przekierowanie na adres loklany
  3. header("Location: ../index.php");
  4. ?>
  5. <?php
  6. // Check if he wants to login:
  7. if (!empty($_POST[username]))
  8. {
  9. require_once("connect.php");
  10.  
  11. // Check if he has the right info.
  12. $query = mysql_query("SELECT * FROM members
  13. WHERE username = '$_POST[username]'
  14. AND password = '$_POST[password]'")
  15. or die ("Error - Couldn't login user...<br />
  16. <a href='../index.php'>Please try again.</a>");
  17.  
  18. $row = mysql_fetch_array($query)
  19. or die ("Błąd - niepoprawny login lub hasło..<br />
  20. <a href='../index.php'>Please try again.</a>");
  21.  
  22. if (!empty($row[username])) // he got it.
  23. {
  24. $_SESSION[username] = $row[username];
  25. echo "Witamy $_POST[username]! Zostałeś poprawnie zalogowany.<br /><a href='../index.php'>Przejdź na stronę główną</a><br /><a href='logout.php'>Wyloguj</a>";
  26. exit();
  27. }
  28. else // bad info.
  29. {
  30. echo "Error - Couldn't login user.<br />
  31. <a href='../index.php'>Please try again.</a>";
  32. exit();
  33. }
  34. }
  35.  
  36. ?>
Czy muszę jakoś przerobić to zapytanie?
  1. $query = mysql_query("SELECT * FROM members
  2. WHERE username = '$_POST[username]'
  3. AND password = '$_POST[password]'")

np na coś takiego (chyba błądzę i babola robie):
  1. $query = mysql_query("SELECT * FROM members
  2. WHERE username = '$_POST[username]'
  3. AND password = '$_POST[password]'
  4. AND idg = '$_POST[idg]'")


i dodać coś po tym?
  1. $_SESSION[username] = $row[username];

np
  1. $_SESSION[username] = $row[username];
  2. $_SESSION[idg] = $row[idg];
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.