Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesje - przechodzenie między stronami
Zagiewa
post 18.04.2010, 06:25:51
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Witam. Mam jedno pytanko. Mam formularz który po wpisaniu poprawnego loginu i hasła przenosi mnie do panelu administracyjnego gdzie na samym początku mam coś takiego:
  1. <?php
  2. $_SESSION['username'] = $_POST['login'];
  3. $_SESSION['userpass'] = $_POST['pass'];
  4. $_SESSION['authuser'] = 0;
  5.  
  6. if (($_SESSION['username'] == 'qwe') and
  7. ($_SESSION['userpass'] == 'asdl')) {
  8. $_SESSION['authuser'] = 1;
  9. }
  10. else {
  11. echo "przepraszam ale nie masz uprawnien do przegladania tej strony.";
  12. exit();
  13. }
  14. ?>

Na stronie tej mam już linki do różnych opcji. Na każdej z tych podstron z opcjami mam coś takiego:
  1. <?php
  2.  
  3. if (($_SESSION['username'] == 'qwe') and
  4. ($_SESSION['userpass'] == 'asdl')) {
  5. $_SESSION['authuser'] = 1;
  6. }
  7. else {
  8. echo "przepraszam ale nie masz uprawnien do przegladania tej strony.";
  9. exit();
  10. }
  11.  
  12. ?>

Ale problem się pojawia gdy na jednej z takich stron umieszczę link o nazwie "wstecz" który cofnie mnie z podstrony z jakąś tam opcją panelu do strony głównej panelu. Wtedy od razu dostaje komunikat o tym, że nie mam uprawnień bo na nowo pobiera on dane ze zmiennych $_POST. Jak to obejść abym mógł cofać się do głównej strony tego panelu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
luck
post 18.04.2010, 10:08:14
Post #2





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Spróbuj czegoś takiego:
  1. if(isset($_POST['login']) && isset($_POST['pass'])) {
  2. $_SESSION['username'] = $_POST['login'];
  3. $_SESSION['userpass'] = $_POST['pass'];
  4. header('Location: index.php'); /* Przejscie do strony glownej panelu, zeby przegladarka nie pytala o odswiezenie strony po kliknieciu przycisku wstecz na podstronach */
  5. }
  6. $_SESSION['authuser'] = 0;
  7.  
  8. if (($_SESSION['username'] == 'qwe') and
  9. ($_SESSION['userpass'] == 'asdl')) {
  10. $_SESSION['authuser'] = 1;
  11. }
  12. else {
  13. echo "przepraszam ale nie masz uprawnien do przegladania tej strony.";
  14. exit();
  15. }


--------------------
Go to the top of the page
+Quote Post
celbarowicz
post 18.04.2010, 12:15:17
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


pomyłka

Ten post edytował celbarowicz 18.04.2010, 12:20:37
Go to the top of the page
+Quote Post
Zagiewa
post 18.04.2010, 19:33:46
Post #4





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


luck dzięki działa smile.gif chociaż nie wiem czy rozumiem dlaczego... tongue.gif
Pierwszy warunek sprawia, że jeżeli zostały przesłane wartości login i hasło, dodaj te wartości do zmiennych, a następnie przejść do strony głównej panelu? Jak to może działać?tongue.gif a kiedy odbywa się sprawdzanie czy dane są poprawne?

Tym header mi trochę namieszałeś haha:P

Mam jeszcze jedno pytanko. Właśnie czytam sobie o funkcji header i znalazłem na tej stronie http://webmade.org/porady/header-wysylanie-naglowka.php artykuł właśnie o nagłówkach gdzie autor wspomina aby dla bezpieczeństwa używać funkcji die() albo exit(). Znam te funkcje ale zanim je zastosuje w moim kodzie mam jedno pytanie. Jeśli kod natrafi na taką funkcję zatrzyma całość zarówno czytanie kodu php jak i html? czy bardziej się to sprawdza w przypadku samego php?

Ten post edytował Zagiewa 18.04.2010, 19:44:46
Go to the top of the page
+Quote Post
luck
post 18.04.2010, 20:21:28
Post #5





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Po kolei:
Bardzo dobrze rozumiesz - pierwszy warunek sprawdza, czy wysłano login i hasło. Jeśli wysłano to przypisuje go do zmiennych sesji. Header po prostu przekierowuje użytkownika na stroną index.php. Dzięki temu po wciśnięciu "wstecz" w przeglądarce nie ma pytania o ponowne przesłanie informacji. Najlepiej sprawdź organoleptycznie wersję "z" i "bez" przekierowania funkcją header winksmiley.jpg
Druga sprawa to exit lub die po wysłaniu nagłówka typu "Location". Również masz rację - zalecane jest jego stosowanie. Po prostu przekierowując użytkownika na inną stronę za pomocą funkcji "header" jednocześnie rozumiemy, że reszta kodu nie zostanie wykonana. Gdyby jednak coś miało pójść nie tak i przekierowanie nie nastąpiło, skrypt zostanie dzięki tym poleceniom zatrzymany w następnej linijce. Dzięki temu mamy pewność, że nic się nie wysypie.
Sorki, jeśli piszę dziś trochę niejasno, ale już trochę zmęczony jestem winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Zagiewa
post 19.04.2010, 13:44:21
Post #6





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

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


Wszystko zrozumiałem więc dzięki wielkie smile.gif
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:32