Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z logowaniem na stronie
Forum PHP.pl > Forum > Przedszkole
tomek200
Mój kod wygląda tak:
  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. ?>


A w plikach sprawdzam logowanie za pomocą:
  1. if(!isset($_SESSION['logged']))
  2. {
  3. header('Location: login1.php');
  4. die();
  5. }

mam tak zabezpieczone wszystkie pliki strony. I w tym problem bo jak wchodze w zakładki na stronie to kieruje mnie na strone logowania. czy jest jakis sposób żeby na strone logowania przekierowywało tylko wtedy kiedy ktos chce wejść z bezpośredniego linku a nie z odnośnika na stronie.
Rysh
Zobacz co siedzi w zmiennej $_SERVER i pokombinuj sobie.
SpiritCode
Jedno pytanie. Masz w podstronach coś takiego jak session_start()?
tomek200
Nie
SpiritCode
Więc tak. Każdy plik powinien na samiuśkim początku mieć

Dzięki temu tablica $_SESSION jest przechowywana.

Zrób tak i sprawdź
com
przed chwila miałeś temat o tej samej treści, pisz w jednym i nie duplikuj wink.gif
tomek200
Wywala błąd: "Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\logowanie\galery1.php on line 4"
Terrorizer
Na początku kazdej podstrony dodaj sobie coś takiego:
  1. <?php
  2. ?>
Dodaj to nawet przed samym <html>, dosłownie na samej górze
EDIT: Syntax error jest spowodowany pewnie jakimś brakiem średnika na końcu linijki albo niedomkniętym nawiasem
SpiritCode
com poprzedni temat miał 3 razy biggrin.gif

tomek200 jak wygląda kod do 4 linii w galery1.php
com
czarodziej.gif w 3 lini masz bład wink.gif

poproszę kod wink.gif
tomek200
  1. <?php
  2.  
  3. if(!isset($_SESSION['logged']))
  4. {
  5. header('Location: login1.php');
  6. die();
  7. }
  8.  
  9. ?>
com
brakuje ; wiedziałem biggrin.gif
Terrorizer
Tylko dodaj ten średnik na końcu 2 linii, a nie w 4 biggrin.gif
tomek200
Dobra nie ma błędu ale znowu przekierowuje do logowania. sad.gif
com
no bo zapewne nie jesteś zalogowany wink.gif
SpiritCode
A w tym logowaniu dodałeś session_start? biggrin.gif
tomek200
Zalogowałem się i przekierowało mnie na strone index1.php (Czyli tak jak powinno). Ja chciałem wejść w odnosnik "Galeria" na stronie i zamiast na strone galery1.php przekierowało mnie na strone login1.php.
SpiritCode
Ale mówisz że w logowaniu też est magiczne session_start()?
tomek200
Tak
Terrorizer
Wrzuć w index1 coś takiego i podaj co się wyświetla
  1. <?php
  2. var_dump($_SESSION);
  3. ?>

Będziemy mieli pewność, czy jesteś zalogowany w indexie.
Jeśli tak, to będzie trzeba zerknąć na całość kodu galerii, może jest tam jakaś linijka która cię wyrzuca
tomek200
Troche sam pokombinowałem i działa. I dodałem pliki logout.php z taka zawartością.
  1. <?php
  2.  
  3. if(!isset($_SESSION['logged']))
  4. {
  5. header('Location: login1.php');
  6. die();
  7. }
  8.  
  9. ?>
Terrorizer
Czytałem opinie, że samo session destroy nie jest czasem wystarczające i powinno się dodatkowo dla pewności przypisać do sesji pusty array, a dopiero potem dać session_destroy
  1. $_SESSION = array();
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.