Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sesje na podstronach
Forum PHP.pl > Forum > Przedszkole
gosienkami
mam takie pytanko przy blokowaniem dostepu do podstron, bo mimo iz jest hasło stronka mie si enie wyswietla

logowanie do podstron:
  1. <?
  2. session_register("logowanie");
  3. if ($_SESSION['logowanie']!==0)
  4. var_dump($_SESSION);
  5. { echo "Brak dostępu do ogladania strony.";
  6. exit();}
  7. ?>


<?
include("logowaniepodstron.php");
?>

i wywołanie
array(3) { ["logowanie"]=> int(1) ["login"]=> string(2) "test" ["haslo"]=> string(2) "test" } Brak dostępu do ogladania strony.
ddiceman
o rety... moze dlatego, ze
Kod
["logowanie"]=> int(1)

a masz sprawdzanie, czy $_SESSION['logowanie'] jest ROZNE OD 0 i jesli TAK to wyswietl blad logowania?
Popraw
Kod
if ($_SESSION['logowanie']!==0)

na
Kod
if ($_SESSION['logowanie']!==1)
nospor
  1. <?php
  2. session_register("logowanie");
  3. var_dump($_SESSION);
  4. if ($_SESSION['logowanie']!==0)
  5. { echo "Brak dostępu do ogladania strony.";
  6. exit();}
  7. ?>

Dalas var_dump w ifie a wiec blok pod tym wykonywal sie niezaleznie od ifa. Przerzucilem ci var_dump wyzej
Na przyszlosc zwracaj uwage na takie pierduly
gosienkami
zmieniałam jak mowiłes i tak samo.Tak mam na stronie głownej i działa a na podstronach nie chce zeby sie otwierało okno do logowania tylko napis ze brak dostepu.
  1. <?
  2. session_register("logowanie");
  3. if ($_SESSION['logowanie']!==0){
  4.     echo 'Zostaleś zalogowany jako:' .$_SESSION['login'];
  5.     echo '<a href="logowanie.php?wylogowanie=tak">[wylogowanie]</a>';  
  6.   }else {
  7. header('location:logowanie.php');
  8.    }
  9. //session_destroy();
  10. ob_flush();?>



Cytat(ddiceman @ 11.03.2009, 12:50:17 ) *
o rety... moze dlatego, ze
Kod
["logowanie"]=> int(1)

a masz sprawdzanie, czy $_SESSION['logowanie'] jest ROZNE OD 0 i jesli TAK to wyswietl blad logowania?
Popraw
Kod
if ($_SESSION['logowanie']!==0)

na
Kod
if ($_SESSION['logowanie']!==1)
ddiceman
Wywal z podstron
  1. <?php
  2. session_register("logowanie");
  3. ?>

Bo to powinno byc (o ile juz musi byc, bo powinnas uzywac $_SESSION['logowanie']=...) tylko przy logowaniu
gosienkami
wywalone i jeszcze jak sie otwieram podstrone bezposrednio to mam tak strona + array(3) { ["logowanie"]=> int(0) ["login"]=> string(2) "ss" ["haslo"]=> string(2) "ss" } mimo wylogowania trzyma ostatnie hasło i login jak dałam na str głownej session_destroy(); to poodswiezeniu stronki blokuje wyswietlanie
ddiceman
Za http://pl.php.net/manual/pl/function.session-destroy.php" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2. // Usuń wszystkie zmienne sesyjne
  3. $_SESSION = array();
  4.  
  5. // [...]
  6.  
  7. // Na koniec zniszcz sesję
  8. ?>
gosienkami
sad.gif a na tych podstronach dalej tak samo
Pilsener
Prosiłbym o kod logowania + kod podstrony - CAŁY, bo błędów tu jest bez liku i tak sobie będziemy pisać cały dzień.
gosienkami
strona logowanie z oknem logowania
  1. <?
  2. session_register("logowanie");
  3. if(empty($_SESSION["logowanie"]))$_SESSION["logowanie"]=0;
  4.  
  5. echo '<div class="stopka">NIE MASZ UPRAWNIEN DO OGLADANIA STRONY- MUSISZ SIE ZALOGOWAC';
  6. require_once("laczenie.php");
  7. if($_GET['wylogowanie']=="tak"){
  8. $_SESSION["logowanie"]=0;
  9. echo ' Zostałeś wylogowany z serwisu';}
  10. if($_SESSION["logowanie"]!=1){
  11. }
  12. if($_POST['login']!="" and $_POST['haslo']!="")
  13. {
  14. $login=$_POST['login'];
  15. $haslo=$_POST['haslo'];
  16. $sql="SELECT * from pracownicy WHERE login like '$login' and haslo like '$haslo' ";
  17. $result=mysql_query($sql) or die('Nie mozna wykonac zapytania');
  18. $ilosc=mysql_num_rows($result);
  19. if($ilosc=="1"){
  20. $zawartosc=$login;
  21.     $_SESSION['logowanie'] = 1;
  22.           $_SESSION['login'] = $_POST['login'];
  23.           $_SESSION['haslo'] = $_POST['haslo'];
  24.     header("Location: panelik.php");
  25. }
  26. }
  27. ?>


logowanie na stronie głownej
  1. <?php
  2. if ($_SESSION['logowanie']!==0){
  3.     echo 'Zostaleś zalogowany jako:' .$_SESSION['login'];
  4.     echo '<a href="logowanie.php?wylogowanie=tak">[wylogowanie]</a>';
  5.  
  6.   }else {
  7. header('location:logowanie.php');
  8.    }
  9. ?>


logowanie na podstonach

  1. <?
  2. var_dump($_SESSION);
  3. if ($_SESSION['logowanie']!==0)
  4. { echo "Brak dostępu do ogladania strony.";
  5. exit();}
  6. ?>
Pilsener
1. Na stronie logowania nie widzę session_start
2. Hasła nie trzyma się w sesji, chyba, że zależy nam na tym, aby użytkownicy stracili zaufanie do naszego serwisu
3. Po co w zapytaniu LIKE?
4. Nie filtrujesz danych odbieranych z formularza
5. Nie filtrujesz danych wysyłanych do bazy - 5 minut i ktoś wyjmie wszystkie hasła
6. Ustawiasz logowanie=1, a potem sprawdzasz, czy jest różne od 0 by zalogować - sprawdza się, czy klucz pasuje do zamka a nie odwrotnie:
  1. <?php
  2. if($_SESSION['logowanie']==1){echo 'pasuje';}else{die('nie pasuje');}
  3. ?>
- i chcesz sprawdzać tylko wartość, czy też i typ zmiennej? W Twoim przypadku 1 jako liczba to nie to samo co 1 jako tekst
7. Obsługa błędów jest włączona? Wywala jakieś błędy?

Edit:
8. Trzymasz hasła w postaci otwartego tekstu, użyj choćby md5
gosienkami
juz poprawiłam bład był tu
[color="#007700"]<?
  1. <?php
  2. if ([/color]$_SESSION['logowanie']==0) ?>

porawiłam troche do.. co chodzi z tym??
Cytat(Pilsener @ 11.03.2009, 14:48:42 ) *
4. Nie filtrujesz danych odbieranych z formularza
5. Nie filtrujesz danych wysyłanych do bazy - 5 minut i ktoś wyjmie wszystkie hasła
8. Trzymasz hasła w postaci otwartego tekstu, użyj choćby md5
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.