Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przładować stronę po prawidłowym zalogowanu się?
Forum PHP.pl > Forum > PHP
tofik1778983
Witam
Zrobiłem logowanie oparte na sesjach.
Tylko po tym jak się zaloguje aby nazwa zalogowanego użytkownika wyświetliła się w określonym przeze mnie miejscu muszę przeładować stronę (albo kliknąć gdzieś w menu..)
Uciążliwe to nie jest ale było by estetycznie gdyby było zautomatyzowane..
Pytanie jak..questionmark.gif

mortus
header()
tofik1778983
Nie mogę użyć header() gdyż strona nie przeładowuje się cała tylko podmieniana jest zawartość jednego diva.
batman
window.location.reload() w Javascript.
mike
Wszystkie podpowiedzi są błędne.
W rzeczywistości źle postępujesz dlatego masz problemy.

Zapewne władasz coś do sesji a kilka linijek niżej próbujesz coś z tej sesji odczytać. A to błąd! Zresztą masz to napisane w manualu: setcookie()
Cytat
Cookies will not become visible until the next loading of a page that the cookie should be visible for.


Przeładowanie jest jedynym rozwiązaniem. Chyba, że do wyświetlenia nie użyjesz danych wyciąganych z tablicy sesji tylko tych, które tam wkładasz.
mortus
Cytat(mike @ 30.03.2010, 21:06:44 ) *
Wszystkie podpowiedzi są błędne.
W rzeczywistości źle postępujesz dlatego masz problemy.

Zapewne władasz coś do sesji a kilka linijek niżej próbujesz coś z tej sesji odczytać. A to błąd! Zresztą masz to napisane w manualu: setcookie()

Przeładowanie jest jedynym rozwiązaniem. Chyba, że do wyświetlenia nie użyjesz danych wyciąganych z tablicy sesji tylko tych, które tam wkładasz.

@mike Z jednej strony piszesz o cookies, a z drugiej o sesji, a przecież $_SESSION to nie to samo co $_COOKIE

@tofik Logowanie u Ciebie odbywa się za pośrednictwem AJAX-a? Jeżeli tak, to w jakimś odrębnym pliku, czy w index-ie?
tofik1778983
Nie używam ciasteczek, loginy i hasła są w tablicy.

Ale zrobie tak.. najpierw sobie prostu wrzuce z wpisanej zmiennej bo chodzi o login (tu po kliknięciu 'loguj' się przeładuje) a potem po przeładowaniu z sesji.. Dzięki za podpowiedź ;]

Choć pewnie dało by się zrobić tak( ale to trzeba by w js którego nie znam) aby powiedzmy gdy się zaloguję poprawnie wyświetla się komunikat "tofik jesteś zalogowany" (tak już jest) a po np 1-3 sek. funkcja wywołała by coś jak kliknięcie w tego typu link automatycznie
<a href="index.php?id=index">przeładuj</a> (link do strony głównej)
Jak co zawsze mogę dać taki link i klikać ręcznie..

mortus <-- tylko php zadnego ajaxa czy js, całe logowanie wczytane jest do diva z odrębnego pliku.
Może dam kod
  1.  
  2. <?
  3. if ($id==zalogujxtd) {
  4.  
  5. $uzytkownicy = array(1 =>
  6. array('login' => 'qwe', 'haslo' => sha1('qwe')),
  7. array('login' => 'asd', 'haslo' => sha1('asd')),
  8. array('login' => 'zxc', 'haslo' => sha1('zxc')),
  9. );
  10.  
  11. function czyIstnieje($login, $haslo)
  12. {
  13. global $uzytkownicy;
  14. $haslo = sha1($haslo);
  15. foreach($uzytkownicy as $idd => $dane)
  16. {
  17. if($dane['login'] == $login && $dane['haslo'] == $haslo)
  18. {
  19. return $idd; // id uzytkownika z tablicy
  20. }
  21. }
  22. return false;
  23. }
  24.  
  25. // .......
  26.  
  27. if($_SESSION['uzytkownik'] > 0)
  28. {
  29. // Ktos jest zalogowany
  30. echo ' obecnie zalogowany: '. $uzytkownicy[$_SESSION['uzytkownik']]['login'];
  31. echo'<br><br> <a href="index.php?id=wylogujxtd">wyloguj się</a>';
  32. }
  33. else
  34. {
  35. // Niezalogowany
  36. if($_SERVER['REQUEST_METHOD'] == 'POST')
  37. {
  38. if(($idd = czyIstnieje($_POST['login'], $_POST['haslo'])) !== false)
  39. {
  40. // Logujemy uzytkownika, wpisal poprawne dane
  41. $_SESSION['uzytkownik'] = $idd;
  42. echo $uzytkownicy[$_SESSION['uzytkownik']]['login'].' zostałeś/aś zalogowany!<br>';
  43. echo'<br> <a href="index.php?id=wylogujxtd">wyloguj się</a>';
  44. }
  45. else { echo 'Podales nieprawidlowe dane'; }
  46. }
  47. else
  48. {
  49. echo '<form method="post" action="index.php?id=zalogujxtd">
  50. Zaloguj sie:<br>
  51. <input class="inp_pass" type="password" name="login"/><br>
  52. <input class="inp_pass" type="password" name="haslo"/><br>
  53. <input type="submit" value="loguj"/></form>';
  54. }
  55. }
  56. }
  57.  
  58.  
  59. if ($id==wylogujxtd)
  60. {
  61.  
  62. echo 'użytkownik: ';
  63. if($_SESSION['uzytkownik']=='1') { print'qwe';} else {}
  64. if($_SESSION['uzytkownik']=='2') { print'asd';} else {}
  65. if($_SESSION['uzytkownik']=='3') { print'zxc';} else {}
  66. echo'został/a wylogowany/a';
  67. }
  68.  
  69. ?>
mike
Ech, dawno już nie pisałem w PHP.
mortus
Cytat(tofik1778983 @ 30.03.2010, 20:52:10 ) *
Nie mogę użyć header() gdyż strona nie przeładowuje się cała tylko podmieniana jest zawartość jednego diva.
Skoro używasz tylko php, to strona musi przeładować się cała po naciśnięciu przycisku zaloguj. Co za problem podać w header konkretny adres, generujący tego div-a, o którego Tobie chodzi?
  1. header("Location: index.php?kontroler=pokaz&akcja=diva");
tofik1778983
Hmm no wiecie ja sie uczę php'a na błędach robiąc sobie stronę, nie wszytko ogarniam i czasem najprostsze pomysły przychodzą mi dopiero po tym jak już się zagrzebie w samo utrudnianiu sobie.. wiecie jak jest. Też często nie wiem że w taki albo inny sposób coś można zrobić ;]
Dlatego pytam
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.