Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Dynamczne linki+ case
Forum PHP.pl > Forum > Przedszkole
daros17
Cześć mam taki kod:
  1. $get =($_GET['site']);
  2.  
  3. switch($get) {
  4. case '':
  5. if(isset($_SESSION['login'])) { //jesli istnieje sesja z loginem
  6. include('glowna1.php');
  7. }
  8. else
  9. {
  10. include('glowna.php');
  11. }
  12. break;
  13. case 'rejestracja':
  14. include('rejestracja.php');
  15. break;
  16. case 'logowanie':
  17. include('logowanie.php');
  18. break;
  19. case 'przypomnij':
  20. include('przypomnij.php');
  21. break;
  22. /*
  23. case 'edytuj_profil':
  24. include('edytuj_profil.php');
  25. */
  26. case 'wyloguj':
  27. include('inc/wyloguj.php');
  28.  
  29. break;
  30.  


Wszystko pięknie działa po zalogowaniu pokazuje mi co innego dla użytkownika a co innego dla gościa, ale jak zrobić aby były trzy warianty czyli.
1. user ze statusem 0
2. admin ze statusem 1
3. gosc

Każdy widzi co innego.

Tutaj fragment kodu odpowiedzialnego za logowanie
  1. $connection = mysql_query("select * from users WHERE login ='$login' AND pass ='$pass'")or die (mysql_error());
  2.  
  3. while ($connection && $rekord = mysql_fetch_assoc($connection))
  4. $loginzbazy = $rekord['login'];
  5. $haslozbazy = $rekord['pass'];
  6. $statuszbazy = $rekord['status'];
  7. if($login != $loginzbazy || $pass != $haslozbazy) {
  8. echo 'Niepoprawny login lub/i haslo!';
  9. } elseif($login == $loginzbazy && $pass == $haslozbazy) {
  10. $_SESSION['login'] = $loginzbazy;i
  11. $_SESSION['pass'] = $haslozbazy;
  12. $_SESSION['status'] = $statuszbazy;
  13.  
  14. echo 'Zostałes poprawnie zalogowany <b>'.$_SESSION['login'].'</b>!';
  15.  
  16. echo '<a href="/quattro/logowanie/index.php">Przejdz na strone glowna</a>';
  17. } else {
  18. echo 'Blad';
  19. }
  20.  
  21. }
  22. }


Mógłbym na końcu kodu odpowiedzialnego dać if, który by odróżniał admina od usera a następnie przenosił admina do strony admin/index.php a usera jedynie do index.php ale jednak wolałbym aby obydwoje przechodzi do index.php i każdy widział co innego.

Jeszcze mam drugie pytanie jak zrobić link z dwoma zmiennymi czyli index.php?site=profil=login
Ghost_78
co do pierwszego pytania:
to w index.php mozesz zrobic za pomoca if lub case pokazywanie odpowiednich rzeczy (najlepiej includujac odpowiednie skrypty)
np:
  1. // index,php
  2. switch($_SESSION['status']){
  3. case 'admin':
  4. include('admin_part.php');
  5. break;
  6. case 'user':
  7. include('user_part.php');
  8. break
  9. default:
  10. include('guest.php');
  11. break;
  12. }

co do drugiego:
index.php?site=main&profil=1&login=czyjs_login
daros17
No nie do końca o to mi chodziło. Nad podobnym kodem myślałem, ale trochę inaczej to chcę zrobić. Może inaczej wyjaśnię.

Po zalogowaniu
user ma widzieć jedynie: edytuj profil i wyloguj - glowna1.php
admin: edytuj profil, panel admina i wyloguj - admin/index.php
gosc: logowanie, rejestracja, przypomnij haslo - glowna.php

Switch wygląda tak jak w pierwszym poście, jak tam wepchnąć to co widzi admin, bo user i gość już jest i to działa dobrze.

Czy da się w ogóle tak zrobić? Jeszcze mógłbym zrobić że admin widzi to samo co user czyli edytuj profil oraz wyloguj i jeśli dopiszę do przeglądarki np adrestrony.pl/index.php?site=admin to wówczas spr czy ma status jeden jeśli nie ma to nie zobaczy zawartości.

Jak wy robicie logowania w swoich serwisach, chodzi mi czy robicie osobne logowanie dla admina i dla usera?
Ghost_78
logowanie mozesz miec jedno (i dobrze żeby tak bylo) tylko w rekordzie usera zrob sobie odpowiednie pola np user, admin (moga byc typu bool). Jezeli ktos ma miec prawa admina przypisz 1 jezeli nie to 0. Potem przy logowaniu zapisz sobie w sesji te wartosci na tej podstawie wyswietlaj odpowiednie zawartosci strony.
daros17
Struktura bazy wygląda tak:
id login pass pass2 status mail data

User ma przypisany status =0 a admin status=1

Po prawidłowym zalogowaniu każdy widzi stronę główną, ale strona główna ma mieć inne zawartości.

Dla 2 grup zrobiłem i działa ok czyli user i gość nie wiem jak wepchnąć tam admin czyli status=1

Próbowałem tak, ale cały czas i tak pokazuje napis nawet jak sesja została utracona. Czy w ogóle można tak robić?

W tej chwili mam zrobione że user i admin widzą na stronie głównej to samo, ale jeśli osoba ze statusem=1 wejdzie np w taki adres- adres.pl/admin/index.php to wówczas widzi to tylko admin a user już nie czy takie rozwiązanie jest dobre?

  1. $get = ($_GET['site']);
  2.  
  3. switch($get) {
  4. case '':
  5. if($_SESSION['status'] =1 ) { //to dla admina
  6. include(admin/index.php');
  7. }
  8. elseif (isset($_SESSION['login'])) // to dla usera
  9. {
  10. include('glowna1.php');
  11. }
  12. else
  13. {
  14. include('glowna.php'); // to dla gości
  15. }
Ghost_78
w PHP da sie robic praktycznie wszystko co wymyslisz ... trzeba tylko znalezc sposob...
co do Twojego problemu to albo nie doczytales tego co napisalem albo niezbyt jasno sie wyrazilem, albo kompletnie Cie nie zrozumialem winksmiley.jpg
ja bym to zrobil tak:
  1. // ..... tu czesc strony dostepna dla wszystkich
  2. // niech to bedzie index.php lub kazda inna strona
  3.  
  4. if ($_SESSION[status]=='0'){
  5. // tu czesc dla usera
  6. }
  7.  
  8. if ($_SESSION[status]=='1'){
  9. // tu czesc dla admina
  10. }
  11.  
  12. if (!isset($_SESSION[user])){
  13. // tu czesc dla goscia
  14. }
  15.  
  16. // .... tu reszta strony dostepna dla wszystkich
daros17
Dzięki o to mi chodziło, kod teraz wygląda tak:
Czy jest coś do poprawy, chodzi mi czy jakoś można to napisać aby nie było aż tyle kodu.

Druga sprawa w index.php zabezpieczyłem fragment w casie "admin" przez $_SESSION['status'] oraz w pliku admin/index.php również to zrobiłem. Wydaje mi się że to wszystko, aby zwykły user nie wszedł do panelu admina ale wolę się upewnić.

Ostatnia sprawa czyli 2 zmienne z bazy aby był np taki link

index.pl?site=edytuj_profil=test

Bo nie wiem jak to zrobić....


  1. $get = ($_GET['site']);
  2.  
  3. switch($get) {
  4. case '':
  5. if ($_SESSION[status]=='0'){
  6. include('glowna1.php');
  7. }
  8.  
  9. if ($_SESSION[status]=='1'){
  10. include('glowna2.php');
  11. }
  12.  
  13. if (!isset($_SESSION[login])){
  14. include('glowna.php');
  15. }
  16. break;
  17. case 'rejestracja':
  18. include('rejestracja.php');
  19. break;
  20. case 'logowanie':
  21. include('logowanie.php');
  22. break;
  23. case 'przypomnij':
  24. include('przypomnij.php');
  25. break;
  26. /*
  27. case 'edytuj_profil':
  28. include('edytuj_profil.php');
  29. */
  30.  
  31. case 'wyloguj':
  32. include('inc/wyloguj.php');
  33. break;
  34. case 'admin':
  35. if ($_SESSION[status]=='1'){
  36. include('admin/index.php');
  37. }
  38. else
  39. {
  40. echo 'Nie masz uprawnien do ogladania tej strony';
  41. echo 'Wroc na poprzednia strone <a href="/quattro/logowanie/index.php">Strona glowna</a>';
  42. break;
  43. }
  44. }
Ghost_78
aby przeslac 2 zmienne lub wiecej w GET musisz je oddzielić '&'
czyli: index.pl?site=edytuj&profil=test
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.