Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Część strony widoczna dla grupy
piottro1
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 5.12.2010

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


Na wstępie informuję, że raczkuję w php (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
jarmiar
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


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ć
Go to the top of the page
+Quote Post
aras785
post
Post #3





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


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

Ten post edytował aras785 11.01.2013, 10:42:21
Go to the top of the page
+Quote Post
piottro1
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 5.12.2010

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


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 (IMG:style_emoticons/default/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];
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 16:49