Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bezwzględne wylogowanie.
Wiciu125
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Pisze właśnie stronkę która umożliwia logowanie się na stronie różnych userów. Wylogowałem sie i wszystko było ok do momentu gdy przez pomyłkę kliknąłem na przycisk wstecz swojej przeglądarki. Wyświetlił mi się komunikat "Strona wygasła" no to wcisnąłem odświerz i ujrzałem iż wylogowany przed chwilą user znów był zalogowany. Szukałem i znalazłem coś na zasadzie

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");

Według opisu te nagłówki należy umieścić w kodzie na każdej dostępnej stronie po zalogowaniu.
Jednak gdy to umieściłem w kodzie sytuacja się powtórzyła. Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
adwol
post
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Cytat
Pisze właśnie stronkę która umożliwia logowanie się na stronie różnych userów. Wylogowałem sie i wszystko było ok do momentu gdy przez pomyłkę kliknąłem na przycisk wstecz swojej przeglądarki. Wyświetlił mi się komunikat "Strona wygasła" no to wcisnąłem odświerz i ujrzałem iż wylogowany przed chwilą user znów był zalogowany. Szukałem i znalazłem coś na zasadzie

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");

Według opisu te nagłówki należy umieścić w kodzie na każdej dostępnej stronie po zalogowaniu.
Jednak gdy to umieściłem w kodzie sytuacja się powtórzyła. Proszę o pomoc.

A możesz później coś zrobić w tej sesji? Sprawdź czy to nie jest jakoś skeszowana strona (widziałem juz proxy, które olewały nagłówki sterujące keszowaniem). W jaki sposób w ogóle utrzymujesz sesje? Na cookie? Jeśli tak to sprawdź czy na pewno usuwasz je od klienta przy wylogowywaniu, czy usuwasz je z bazy oraz czy kod sprawdzający jest ok. Jeśli po odświeżeniu strony rzeczywiście dalej jesteś zalogowany to nie jest to wina nagłówków, tylko kodu.
Go to the top of the page
+Quote Post
Wiciu125
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Wiesz co, po odświerzeniu strony jestem wciąż zalogowany. Swoją stronę mam na własnym serwerze postawionym na łączy kablówki. Jeśli chodzi o nagłówki to na pewno działa mi nagłówek
header("location: index.php");

chciałem zrobić formularz logujący w jednej z ramek strony. Przy pozytywnym zalogowaniu zamiast formularz miałasię pojawić informacja kto jest aktyalnie zalogowany. Nie robiłem logowania jako nowo otwarte okno tylko zagniexdzić całą operację w tej jednej z tabel. Znaczy że pracuję na jednym skrypcie index.php a logowanie jest jako include. Może coś Ci ta informacja pomoże.
Go to the top of the page
+Quote Post
adwol
post
Post #4





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Cytat
Wiesz co, po odświerzeniu strony jestem wciąż zalogowany.

Pokaż kawałki kodu, które logują i wylogowywują użytkowników.
Go to the top of the page
+Quote Post
Wiciu125
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Tutaj następuje wybór odpowiednich działań albo formularz albo info o zalogowanym uzytkowniku


switch ($pol)
{
case(1):
Print"<FORM method=post action="$PHP_SELF?pol=2" NAME=wiciu>".
"<INPUT TYPE=text NAME=login size=13><BR>".
"<INPUT TYPE=text NAME=haslo size=13><BR>".
"<INPUT TYPE=submit VALUE=ENTER size=5></FORM>";
break;


case(2):
$serwer=mysql_connect("localhost", "xx", "xx") or die("Nie można nawiązać połączenia z serwerem".mysql_error());
$baza=mysql_select_db("xx") or die("Błąd podczas połączenia z bazą danych".mysql_error());
$zapytanie="Select * from users where login="."'".$login."'"." And haslo="."'".$haslo."'";
$polecenie=mysql_query($zapytanie) or die ("Błąd przy wykonywaniu zapytania".mysql_error());
$wynik=mysql_num_rows($polecenie);
session_register("napis");
$napis="Kartofel";

IF ($wynik<>0)
{

session_register("zlogin","zhaslo","zalogowany");
$zalogowany=$login;
$zlogin=$login;
$zhaslo=$haslo;


WHILE($row=mysql_fetch_array($polecenie))
{
SWITCH($row[4])
{
CASE("admin"):
Print "To jest administrator <br><a href=logoff.php>Wylogój</a>";
BREAK;

CASE("user"):
Print "To jest urzytkownik";
BREAK;
}
}
} ELSE {
header("location: index.php?pol=1&zalogowany=''");
}
}

wylogowanie

session_start();
$_SESSION = array();
session_destroy();
header ("Location: index.php");
Go to the top of the page
+Quote Post
DeyV
post
Post #6





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




holy shit...
Ludzie - przecież kolorowanie jest takie łądne... Takie niepowtarzalne...
Nikt nie ma takiego jak my na tym forum (wiem coś o tym)
Czemu więc z tego nie KORZYSTACIE!!!!questionmark.gif?!!!!


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
kurtz
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
holy shit...
To sie zdecyduj.. albo jedno albo drugie ;p
Cytat
Ludzie - przecież kolorowanie jest takie łądne... Takie niepowtarzalne...Nikt nie ma takiego jak my na tym forum (wiem coś o tym) Czemu więc z tego nie KORZYSTACIE!!!!???!!!!
"Z jakiego kolorowania?"


Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
[Regis]
post
Post #8





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Wrocław

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


Z takiego ladnego przycisku z napisem php w oknie dodawania posta tongue.gif biggrin.gif
Go to the top of the page
+Quote Post
kurtz
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
"]Z takiego ladnego przycisku z napisem php w oknie dodawania posta :P :D
abojawiem co to jest? wogole pocoto. i tak dalej...


Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Jabol
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Cytat
Hej
Cytat
"]Z takiego ladnego przycisku z napisem php w oknie dodawania posta tongue.gif biggrin.gif
abojawiem co to jest? wogole pocoto. i tak dalej...
kurtz, kolory Ci wyłączyli i udajesz "psa ogrodnika" ;P ?
Ja osobiście nie czytam nawet większych kodów bez bbcode
Go to the top of the page
+Quote Post
kurtz
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
Ja osobiście nie czytam nawet większych kodów bez bbcode
Nie - po prostu staram sie powiedziec wszystkim imć moderatorom, że trudno jest kogokolwiek zachecic do bbcode jesli nie wie co to jest lub nigdy z tego nie korzystal/ korzystal rzadko.

Niech kazdy raz klepnie sobie "odpowiedz". w dowolnym miejscu - i teraz nigdy w zyciu nie pisalem na forum phpbb. z czym kojarzy sie napis "kod php"? mi nie bardzo z kolorowaniem skladni.


Wniosek: skoro od mieisaca czy dwoch mowie o problemie i nikt jakos nie pokwapil sie to powiem dobitniej - dopoki "gdzies" nie bedzie jasnej informacji jak uzywac bbcode i to co wogole jest (ale NIE odnosnik do FAQ) nie sadze by ktokolwiek przejmowal sie jakimstam czerownym napisem php czy code.

Dalej: banalnym pomyslem na dzien dobry jest przed textarea umiesic tresc "Aby twoje wypowiedzi byly bardziej czytelne uzywaj BBCode. Np kod php nalezy otoczac znacznikiem [php][/php] - np [php]echo $imie[/php] da [php:1:e0c9a259e1]echo $imie[/php:1:e0c9a259e1] a zapytania do bazy danych znacznikiem [sql][/sql] - np [sql:1:e0c9a259e1]SELECT Imie FROM Klienci[/sql:1:e0c9a259e1]. Wiecej o znacznikach BBCode znajdziesz w ...."

UF


Pozdrawiam i moze by wydzielic fragment wateku i przerzucic na Opinie?...


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Wiciu125
post
Post #12





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Dziękuje za uwagę ale czy mógłbym prosić o odpowiedź na temat bezwzględne wylogowanie? Jest to dla mnie istotne. Dzieki :idea:
Go to the top of the page
+Quote Post
kurtz
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
Pisze właśnie stronkę która umożliwia logowanie się na stronie różnych userów. Wylogowałem sie i wszystko było ok do momentu gdy przez pomyłkę kliknąłem na przycisk wstecz swojej przeglądarki. Wyświetlił mi się komunikat "Strona wygasła" no to wcisnąłem odświerz i ujrzałem iż wylogowany przed chwilą user znów był zalogowany.

Po kolei - przegladam twoj kod i widze ze masz ustawianie zmiennej sesyjnej zlogin - wystarczy wiec ze zeby sprawdzic czy ktos jest zalogowany sprawdzac bedziesz czy istnieje ta zmienna sesyjna. do tego pewnie juz doszedles.
druga sprawa to "odswiez" ktore znowu zalogowuje - tutaj moge tylko przypuszac. jesli odsiezasz strone na ktorej wczesniej ciebie zalogowalo to dane (login & haslo) sa ponownie wysylane do skryptu php a ten autentykuje. Aby rozwiazac tego typu problemy zamiast od razu pokazywac "to jest ..." mozesz przekierowywac na inna strone - jesli autentykacja sie powiodla na strone dla zalogowanych, jesli nie na strone dla niezalogowanych. w ten sposob odpada "odswiez" - czesto to najprtsze rozwiazanie.
Ja sugerowalbym jednak cos wydaje mi sie lepszego - zamiast niszyc sesje zostaw ja i tylko usun (unregister) zmienne zlogin itd. wowczas aby sprawdzac czy ktos jest zalogowany wystarczy ze bedziesz sprawdzal czy istnieje zmienna sesyjna. jesli nie - uzytkownik nie jest zalogowany lub go wlasnie wylogowales ;)

PS
uzywanie session_register jest odradzane. Od jakiegos czasu promowane jest np bezposrednie uzywanie $_SESSION["zmienna"] = "wartosc"; <-- w ten sposob deklarujesz zmienna sesyjna, widoczna na nastepnej stronie ;) Jest to o tyle wygodne ze nie musisz tworzyc dodatowej zmeinnej ktora zaraz przekazesz do session_register. latwiej tez troszke nad wszystkim panowac.

uf. starczy - jak cos niejasne to pytaj.

Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Wiciu125
post
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Serdeczne dzięki. Chyba o to mi chodziło. Jakby co to jescze się odezwę.
Go to the top of the page
+Quote Post
Wiciu125
post
Post #15





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Mam jeszcze jedno pytanie. Może się orientujesz w jaki sposób stworzyć szablony stron tzn żeby X-razy nie pisać tego samego kodu strony np tabele itd.
Go to the top of the page
+Quote Post
kurtz
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
Mam jeszcze jedno pytanie. Może się orientujesz w jaki sposób stworzyć szablony stron tzn żeby X-razy nie pisać tego samego kodu strony np tabele itd.
Najlatwiej:[php:1:016db6ca6e]<?php
include("./gora.inc.php");
?>
treees :)
<?php
include("./dol.inc.php");
?>[/php:1:016db6ca6e]To rozwiazanie ma jednak wady - kiedy przyrasta stron robi sie wielki balagan. Lepszym pomyslem jest rodzielenie kodu HTML od kodu php - to duzy krok do przodu :) - aby to zrobic mozesz korzystac z systemow szablonowych - na poczatek proponuje zaczac od jakis prostych - np FastTemplate, IT Templates. Artykuly o nich znjadziesz np na http://www.phpbuilder.com . Jesli chcesz i czujesz sie na silach od razu wskoczyc na glebsza wode polecam Smarty - http://smarty.php.net - to wg mnie najpotezniejszy system do szablonow gdy idzie o php - ma bardzo duze mozliwosci i sprawdza sie w dzialaniu. Ostatnio nawet uczestnicy tego forum zaczeli go uzywac ;)p. O smarty jest niewiele materialow po polsku ale na forum php znajdziesz kilka wprowadzjacych artykulow - co gdzie i jak.


Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Wiciu125
post
Post #17





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


No to dziekuję za odpowiedź.
Go to the top of the page
+Quote Post
Wiciu125
post
Post #18





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.02.2003
Skąd: Łódź

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


Chyba Cie jeszcze pomęcze. Otóż czy istnieje w php jakaś funkcja która przekierowuje na inną stronę oprócz header("Location: xxxx"); Ponieważ właśnie napisałem to co mi powiedziałeś czyli index.php jako na strcie a po nim z formularza dane do skrypty logującego , a z niego przy użyciu header przekierowanie na stronę dla zalogowanych. Jednak w tej stronie tzn dla strony dla zalogowanych po wciśnięciu wyloguj i wciśnięciu wstecz wracam do stronki gdy byłem zalogowany. Mam nadzieję że w miarę jasno się określiłem
Go to the top of the page
+Quote Post
spenalzo
post
Post #19





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


W php nie, ale w HTMLu:
[xml:1:17dc60aca1]
<meta http-equiv="Refresh" content="0; URL=strona.php">[/xml:1:17dc60aca1]


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:49