Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje - przechodzenie między stronami
Forum PHP.pl > Forum > Przedszkole
Zagiewa
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?
luck
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. }
celbarowicz
pomyłka
Zagiewa
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?
luck
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
Zagiewa
Wszystko zrozumiałem więc dzięki wielkie smile.gif
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.