Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Closed TopicStart new topic
> [PHP]Blokowanie linków bezpośrednich
tomek200
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 28.12.2014

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


Witam. Mam strone na której mam możliwość logowania i chce zablokować możliwość wchodzenia na strone otrzymaną po zalogowaniu poprzez bezpośrednie linki. Jeżeli strona z formulażem logowania to strona 'A' a strona otrzymana po zalogowaniu to 'B', ja chce zroibić coś takiego że jak ktoś w przeglądarce wpisze www.domena.pl/B.php to żeby pżekierowało go na strone z logowaniem czyli 'A'. PS. Sory za orto.
Go to the top of the page
+Quote Post
SpiritCode
post
Post #2





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Może spróbuj prosty warunek na istnienie sesji?

Jeśli masz użytkownika zalogowanego i jest mu przypisana sesja możesz łatwo sprawdzić czy ona istnieje.
Jeśli nie dodajesz tylko linijkę:
  1. header('Location: /A.php');
  2. die(); //zapobiega ew. wykonaniu dalszej części skryptu


To powinno rozwiązać probelm

Ten post edytował SpiritCode 29.12.2014, 11:59:34
Go to the top of the page
+Quote Post
Forti
post
Post #3





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


na stronie B.php sprawdzasz czy user jest zalogowany. Jak nie to przekierowanie na A.php.
Go to the top of the page
+Quote Post
SpiritCode
post
Post #4





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


A tak przy okazji. Trzymaj się jednego tematu. Ten jest trzecim o tym samym temacie.
Go to the top of the page
+Quote Post
tomek200
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 28.12.2014

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


  1. header('Location: /A.php');
  2. die(); //zapobiega ew. wykonaniu dalszej części skryptu


SpiritCode to dziala ale jak się loguje to też przekierowuje mnie na strone 'A'.
Dało by się zrobić że jak się logujesz to cię nie przekierowuje?

Ten post edytował tomek200 29.12.2014, 14:17:09
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jak użytkownik się zaloguje ustawiasz sesję. Plik B.php ma sprawdzic czy masz sesje. Jak masz - ok, jak nie to przekieruj na A
Go to the top of the page
+Quote Post
tomek200
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 28.12.2014

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


Nie wiem jak to zrobić jeśli ktoś będzie wiedział to moge dodać kod php logowania.
Go to the top of the page
+Quote Post
SpiritCode
post
Post #8





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Zasadniczo skoro mówisz, ze masz lgoowanie zrobione to wiesz pod jakim kluczem masz przechowywane dane o użytkowniku.

Dajmy na to kiedy ktoś się loguje ustawiasz mu klucz $_SESSION['uzytkownik'] w którym są potrzebne Ci dane o tym użytkowniku.

Wtedy wystarczy że dasz warunek:
  1. if(!isset($_SESSION['uzytkownik']) || empty($_SESSION['uzytkownik']))
  2. {
  3. header('Location: /A.php');
  4. die();
  5. }


Wyjasnienie:
Jesli nie jest ustawiony klucz 'uzytkownik' w tablicy $_SESSION lub ta komórka jest pusta
Przekieruj na /A.php
Go to the top of the page
+Quote Post
Terrorizer
post
Post #9





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Ja mam u siebie tak jak poniżej i nawet fajnie to działa mimo, że sam kod może być troche lamerski (IMG:style_emoticons/default/biggrin.gif)
Najpierw przypisujesz przy logowaniu session id, a potem:
  1. if(empty($_SESSION['id'])){
  2. header('location: logout.php');
  3. }

plik logout.php :
  1. <?php
  2. $_session['id'] = array();
  3. header('location: ../index.php');
  4. ?>


Ten post edytował Terrorizer 29.12.2014, 15:05:25
Go to the top of the page
+Quote Post
SpiritCode
post
Post #10





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


I to jest dokładnie to co ja podałem jako rozwiązanie (IMG:style_emoticons/default/wink.gif)
Żeby było ciekawiej w innym temacie autora tematu o tej samej tematyce jest już podobna odpowiedź podana
Go to the top of the page
+Quote Post
tomek200
post
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 28.12.2014

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


Mam proźbe, daje kod logowania jeśli ktos wie to niech go zedytuje weług powyrzszych wskazań.
  1. <?PHP
  2. function checkPass($user, $pass)
  3. {
  4.  
  5. if(!$fd = @fopen("passwords.txt", "r")) return false;
  6. while (!feof ($fd)){
  7. $line = trim(fgets($fd));
  8. if(($pos = strpos($line, ":"))===false) continue;
  9.  
  10. $tempUser = substr($line, 0, $pos);
  11. if($tempUser != $user) continue;
  12.  
  13. $tempPass = substr($line, $pos + 1, strlen($line) - $pos);
  14.  
  15. if($tempPass != $pass) continue;
  16. else{
  17. fclose($fd);
  18. return true;
  19. }
  20. }
  21. fclose($fd);
  22. return false;
  23. }
  24. if(!isSet($_POST["haslo"]) || !isSet($_POST["user"])){
  25. include('error.html');
  26. exit();
  27. }
  28. if(checkPass($_POST["user"], $_POST["haslo"])){
  29. include("index1.php");
  30. }
  31. else{
  32. include('error.html');
  33. }
  34. ?>

Z góry dziękuje. PS. to nie jest mój autorski kod.
Go to the top of the page
+Quote Post
Forti
post
Post #12





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


ale to jest brzydkie... z neta pobrałeś i to stary skrypt ;]

  1. <?PHP
  2. function checkPass($user, $pass)
  3. {
  4.  
  5. if(!$fd = @fopen("passwords.txt", "r")) return false;
  6. while (!feof ($fd)){
  7. $line = trim(fgets($fd));
  8. if(($pos = strpos($line, ":"))===false) continue;
  9.  
  10. $tempUser = substr($line, 0, $pos);
  11. if($tempUser != $user) continue;
  12.  
  13. $tempPass = substr($line, $pos + 1, strlen($line) - $pos);
  14.  
  15. if($tempPass != $pass) continue;
  16. else{
  17. fclose($fd);
  18. return true;
  19. }
  20. }
  21. fclose($fd);
  22. return false;
  23. }
  24. if(!isSet($_POST["haslo"]) || !isSet($_POST["user"])){
  25. include('error.html');
  26. exit();
  27. }
  28. if(checkPass($_POST["user"], $_POST["haslo"])){
  29. $_SESSION["logged"] = true;
  30. include("index1.php");
  31. }
  32. else{
  33. include('error.html');
  34. }
  35. ?>


i teraz wszędzie sprawdzaj:

  1. if ($_SESSION["logged"] = true) {
  2. //zalogowany
  3. } else {
  4. // nie zalogowany
  5. }
Go to the top of the page
+Quote Post
SpiritCode
post
Post #13





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Hehe. Czy ja dobrze widzę logowanie z pliku?

A co do warunków - w Twoim przypadku szybszą metodą będzie:

  1. if(!isset($_SESSION['logged']))
  2. {
  3. // przekierowanie ktore wczesniej podalem.
  4. }


I daj to najlepiej na poczatku kazdej podstrony z ktorej chcesz przrkierowac niezalogowanych
Go to the top of the page
+Quote Post
tomek200
post
Post #14





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 28.12.2014

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


Dzięki wszystkim, już działa. Tamat Zamykam.
Go to the top of the page
+Quote Post
com
post
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Forti

  1. if ($_SESSION["logged"] === true)
jak juz (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Forti
post
Post #16





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Cytat(com @ 29.12.2014, 17:01:49 ) *
Forti

  1. if ($_SESSION["logged"] === true)
jak juz (IMG:style_emoticons/default/wink.gif)


nie koniecznie
Go to the top of the page
+Quote Post
Turson
post
Post #17





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Koniecznie
Go to the top of the page
+Quote Post
SpiritCode
post
Post #18





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Turson nie chciałem tego pisać bo mógł popełnić literówkę ale skoro się uprał jeszcze przy tym to tak.
EW. może jeszcze być:
  1. if ($_SESSION["logged"] == true)


dlatego uznałem brak jednego znaku przypisania za literówkę (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Terrorizer
post
Post #19





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Mógłbym zapytać z czego to wynika?
Domyślam się, że przy == przypisanie np wartości dodatniej również dałoby true np liczba 1 ?
Możliwe ,że nie wiem o czym piszę, ale staram się wczuć w temat (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
com
post
Post #20





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


zgadza się, owszem ale skoro jest tam wartość boolowska to trzeba również sprawdzić czy sa tego samego typu :
http://ideone.com/ATpeU2

a zwróciłem na to uwagę, bo jak ktoś odkopie temat to zaraz pojawia się posty czemu to nie działa (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 29.12.2014, 21:29:54
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 04:09