Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze skryptem uwierzytelniania
Forum PHP.pl > Forum > Przedszkole
thekozak
Witam. Mam taki kod jak ponizszy. Na serwerze offline w domu (Apache 1.3.27 z php 4.3.0) wszystko dzialalo prawidlowo, ale na serwerze unixowym (niestety nie jestem w stanie podac wersji) online juz nie bardzo. Problem pojawia sie w chwili, gdy klikam na jakis link (sa to linki, ktore uruchamiaja ten sam skrypt, ale z roznymi parametrami wysylanymi metoda GET). Po kliknieciu na link pojawia sie ponownie ekran logowania i zawartosci nie da sie obejrzec. Czy ktos moze wie dlaczego? Jesli byloby to potrzebne, to moge pokazac kod do ktoregos z pozostalych plikow tego skryptu.

  1. <?php
  2. if(isset($HTTP_POST_VARS['uzytkownik']) && isset($HTTP_POST_VARS['haslo']))
  3. {
  4. // jeżeli użytkownik właśnie podjął próbę zalogowania
  5. $uzytkownik = $HTTP_POST_VARS['uzytkownik'];
  6. $haslo = $HTTP_POST_VARS['haslo'];
  7. $logpass = @ file(&#092;"../../logpass.txt\", \"r\");
  8. $ilosc = count($logpass);
  9. $wiersz = explode(&#092;":\", $logpass[$j]);
  10. $login = $wiersz[0];
  11. $password = $wiersz[1];
  12. if( $uzytkownik == $login && $haslo == $password ) {
  13. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  14. $HTTP_SESSION_VARS['prawid_uzyt'] = $uzytkownik;
  15. break; }
  16. else { continue; }
  17. }
  18. if(isset($HTTP_SESSION_VARS['prawid_uzyt'])) {
  19. //uzytkownik zalogowany
  20. //wyswietlanie zawartosci
  21. require_once('funkcje_galerii.php');
  22. $katalog = $HTTP_GET_VARS['name'];
  23. wyswietl_naglowek();
  24. $tyt = tytul($katalog);
  25. function wyswietl_tytul($tyt)  {  
  26. print '<font size=\"5\"><b>'.$tyt.'</b></font><br><br>' ; }
  27. require('funkcje.php');
  28. wyswietl_stopke(); }
  29. else {
  30. echo '<b>Zaloguj się</b><br><br>' ;
  31. if(isset($uzytkownik)) {
  32. // jeżeli próba logowania była nieudana
  33. echo '<br><br><br><br><b>Zalogowanie niemożliwe</b><br>'; }
  34. else {
  35. // nie było próby logowania lub nastąpiło wylogowanie
  36. echo '<br><br><br><br><b>Użytkownik niezalogowany.</b><br>'; }
  37. // tworzenie formularza logowania
  38. echo '<form method=\"post\" action=\"index.php?name=null\"><table>'; // itd...
  39. }
  40. ?>



P.S. Po konsultacji ze znajomymi okazalo sie, ze ten problem wystepuje chyba tylko w przegladarce IE w wersji 6.0, bo w IE 5 i Mozilli wszystko dziala.
invx
moze zamien HTTP_*_VARS na nowsze POST i GET
thekozak
tzn. ze zamiast HTTP_GET_VARS mam wpisywac _GET, a zamiast HTTP_POST_VARS - _POST. Moge sprobowac, ale chetnie bym sie dowiedzial jaka jest miedzy tymi wyrazeniami roznica.
invx
HTTP_*_VARS uzywalo sie kieys, teraz jest ono jus przestarzale i uzywa sie _GET i _POST, pozatym HTTP_*_VARS nie byly superglobalne
thekozak
Dzieki za info, ale niestety sama ta zamiana nie pomogla. Moze problem tkwi w obsludze sesji. Bo efekt jest taki, ze przegladarka IE 6 tak jakby nie zapamietuje, ze uzytkownik juz sie zalogowal i kaze mu sie logowac jeszcze raz. Co ciekawe inne przegladarki (Mozilla, IE 5) dzialaja normalnie.
hwao
Sproboj dac zaraz po
  1. <?php
  2. header(&#092;"Cache-control: private\");
  3. ?>
thekozak
Nie jestem pewien, czy wstawilem to w odpowiednim miejscu (w kodzie z pierwszego postu te cztery linijki umiescilem zaczynajac od linii 43).
Po wstawieniu tego kodu pojawil sie po zalogowaniu komunikat:
Warning: Cannot modify header information - headers already sent by (output started at /home/antares/scr/lkozl/pierwotni/imprezy/naglowek.php:4) in /home/antares/scr/lkozl/pierwotni/imprezy/index.php on line 45

Natomiast po kliknieciu na jakis link wyrzuca do okna logowania tak jak poprzednio, ale pokazuje jeszcze nastepujacy komunikat:
Warning: Cannot modify header information - headers already sent by (output started at /home/antares/scr/lkozl/pierwotni/imprezy/index.php:32) in /home/antares/scr/lkozl/pierwotni/imprezy/index.php on line 45
ActivePlayer
To zrób tak:

  1. <?php
  2. header(&#092;"Cache-control: private\"); // TUTAJ TO WSTAW 
  3. if(isset($HTTP_POST_VARS['uzytkownik']) && isset($HTTP_POST_VARS['haslo']))
  4. {
  5. // jeżeli użytkownik właśnie podjął próbę zalogowania
  6. $uzytkownik = $HTTP_POST_VARS['uzytkownik'];
  7. $haslo = $HTTP_POST_VARS['haslo'];
  8. $logpass = @ file(&#092;"../../logpass.txt\", \"r\");
  9. $ilosc = count($logpass);
  10. $wiersz = explode(&#092;":\", $logpass[$j]);
  11. $login = $wiersz[0];
  12. $password = $wiersz[1];
  13. if( $uzytkownik == $login && $haslo == $password ) {
  14. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  15. $HTTP_SESSION_VARS['prawid_uzyt'] = $uzytkownik;
  16. break; }
  17. else { continue; }
  18. }
  19. if(isset($HTTP_SESSION_VARS['prawid_uzyt'])) {
  20. //uzytkownik zalogowany
  21. //wyswietlanie zawartosci
  22. require_once('funkcje_galerii.php');
  23. $katalog = $HTTP_GET_VARS['name'];
  24. wyswietl_naglowek();
  25. $tyt = tytul($katalog);
  26. function wyswietl_tytul($tyt)  {  
  27. print '<font size=\"5\"><b>'.$tyt.'</b></font><br><br>' ; }
  28. require('funkcje.php');
  29. wyswietl_stopke(); }
  30. else {
  31. echo '<b>Zaloguj się</b><br><br>' ;
  32. if(isset($uzytkownik)) {
  33. // jeżeli próba logowania była nieudana
  34. echo '<br><br><br><br><b>Zalogowanie niemożliwe</b><br>'; }
  35. else {
  36. // nie było próby logowania lub nastąpiło wylogowanie
  37. echo '<br><br><br><br><b>Użytkownik niezalogowany.</b><br>'; }
  38. // tworzenie formularza logowania
  39. echo '<form method=\"post\" action=\"index.php?name=null\"><table>'; // itd...
  40. }
  41. ?>
hwao
  1. <?php
  2. header(&#092;"Cache-control: private\"); // TUTAJ TO WSTAW 
  3. ?>

Misi byc wylane na poczatku sammy przed jakimkolwiek htm;'em itp.
Jezeli nie moesz dac tego na samym paczatku to daj
  1. <?php
  2. ?>

w 1 linijce kodu ( koniecznie na samym poczatku )
thekozak
A moze to kwestia zabezpieczen przegladarki IE 6. Moze nie przepuszcza cookiesow. Czy jest jakas metoda, zeby to obejsc?
Dabroz
Przekazuj ID sesji w URL'ach, np:

  1. <?php
  2. $url= 'www.server.pl/strona.php?sid='.session_id();
  3. ?>
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.