Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Dynamczne linki+ case
daros17
post
Post #1





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


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

Ten post edytował daros17 16.11.2010, 23:59:59
Go to the top of the page
+Quote Post
Ghost_78
post
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


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


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
daros17
post
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


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?
Go to the top of the page
+Quote Post
Ghost_78
post
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


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.


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
daros17
post
Post #5





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


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. }


Ten post edytował daros17 17.11.2010, 19:14:38
Go to the top of the page
+Quote Post
Ghost_78
post
Post #6





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


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


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
daros17
post
Post #7





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


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. }
Go to the top of the page
+Quote Post
Ghost_78
post
Post #8





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

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


aby przeslac 2 zmienne lub wiecej w GET musisz je oddzielić '&'
czyli: index.pl?site=edytuj&profil=test


--------------------
Always look on the bright side of life ;-)
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 Aktualny czas: 20.08.2025 - 13:19