![]() |
![]() ![]() |
![]() |
-Code46- |
![]()
Post
#1
|
Goście ![]() |
Załóżmy, że mam 3 pliki (apache, php i mysql postawione na localhost):
index.php - zawiera formularz logowania (metoda POST), który wywołuje skrypt czyok.php czyok.php - skrypt łączy się z bazą i sprawdza czy podany jest taki login i hasło jest poprawne. Jeśli nie to wracamy na stronę index.php. Jeśli login i hasło jest poprawne ładowany jest plik menu.php menu.php - menu główne, z którego mogą być wywoływane inne skrypty. Menu służy do zarząrzania całym systeme, np. dodawanie danych do bazy, usuwania, edytowanie i wiele innych dla zalogowanego użytkownika. logout.php - skrypt wylogowujący i ładujący strone index.php Kod <? session_unset(); setcookie ('PHPSESSID','', time()-300,'/','',0); //zniszcz cookie session_destroy(); header("location: main.php"); ?> Załóżmy, że zaloguje się do tego systemu a potem wyloguje. Kiedy zamknę przeglądarkę i otworzę ponownie, wpisze localhost/phpmyadmin/menu.php to pojawia się menu, i wyświetlany jest ostatnio zalogowany użytkownik. Można kasować dane z bazy, dodawać jednym słowem wszystko. A tak nie może być, bo po co wtedy hasło? Dopiero jak ręcznie usunę ciasteczko z przeglądarki to jest ok. Pomóżcie - błagam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
A moze tak łaskawie podasz np. wersję php, której używasz? Albo poczytasz o tym jak stosowac sesje w obecnych wersjach?
-------------------- |
|
|
-Code46- |
![]()
Post
#3
|
Goście ![]() |
Cytat(scanner @ 2005-03-16 07:28:53) A moze tak łaskawie podasz np. wersję php, której używasz? Albo poczytasz o tym jak stosowac sesje w obecnych wersjach? Wersja php 5.0.2, Apache 2.0.52. Wszystko to stoi na WindowsXP. Czytałem o sesjach i nawet kopiowałem żywcem przykłady ale to nie pomaga ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
PS. Czy tylko ja nie mam PL literek w manulu? Ten post edytował czachor 16.03.2005, 12:37:35 -------------------- how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free |
|
|
-Code46- |
![]()
Post
#5
|
Goście ![]() |
Tak też robiłem ale nic z tego. Sesja jest pamiętana
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Normalnie powinno wystarczyc
unset($_SESSION['nazwa_zmiennej']); Ale po tych komendach to juz zadna sesja nie powina byc aktywna session_unset(); session_destroy(); PS. Ja tez nie mam polskich czcionek w manualu. Przegladarka zawsze mi ustawia kodowanie na UTF-8 i musze recznie zmieniac na Europe Srodkowa. -------------------- |
|
|
-durandal- |
![]()
Post
#7
|
Goście ![]() |
ja usuwam sesje za pomoca
session_unregister(zmienna); |
|
|
-Code46- |
![]()
Post
#8
|
Goście ![]() |
Próbowałem też coś takiego
Kod <? setcookie ('PHPSESSID','', time()-300,'/','',0); //zniszcz cookie session_unset(); session_destroy(); header("location: main.php"); ?> Sesja może jest zniszczona ale ciasteczko jest na dysku. Jak usune ciasteczko (Opcje przeglądarki) to wtedy jest ok. Już nie wiem co robić ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Podejrzewam ze masz skrypt, ktory automatycznie tworzy zmienna sesyjna na podstawie obecnosci ciasteczka u klienta.
Takie cos wykorzystuje sie np podczas autologinu. Pokaz kawalek kodu w ktorym zapisujesz ciasteczko u klienta. Aby usunac ciasteczko musisz podac dokladnie jego nazwe. -------------------- |
|
|
-Code46- |
![]()
Post
#10
|
Goście ![]() |
To jest skrypt, który odbiera dane z formularza (logowania) i sprawdza login i hasło:
Kod <!--Logowanie do systemu --> <? session_start(); include "config.inc.php"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta name="pragma" content="no-cache" /> <title>Logowanie...</title> <link rel="stylesheet" type="text/css" href="autoryzacja.css" /> </head> <body> <? //Połączenie z bazą danych $conn = mysql_connect($server, $identyfikator, $haslo) or die ("Nie udało się połączyć z bazą danych! BŁĄD: ".mysql_error()); //Wybór bazy danych mysql_selectdb($baza) or die ("Nie udało się wybrać bazy! BŁĄD: ".mysql_error()); //Zapytanie o login i hasło $query = "SELECT * FROM konto WHERE login='$_POST[logid]';"; $result = mysql_query($query) or die ("Zapytanie nieudane! BŁĄD: ".mysql_error()); $query_data = mysql_fetch_row($result); //Sprawdzenie czy podany login i hasło są poprawne if (MD5($_POST[pas]) == $query_data[2]) { //Udana autoryzacja if ($query_data[3] == 0) { //Zapytanie o dane osoby zalogowanej z tabeli pracownika $query = "SELECT konto.konto_id, login, haslo, kto, imie, nazwisko FROM konto, pracownik ". "WHERE login='$_POST[logid]' AND konto.konto_id=pracownik.konto_id;"; $result = mysql_query($query) or die ("Zapytanie nieudane! BŁĄD: ".mysql_error()); $query_data = mysql_fetch_row($result); $_SESSION[uzytkownik] = $query_data[4] . " " . $query_data[5]; $_SESSION[nick] = $query_data[1]; header("location: start.php"); } else { //Zapytanie o dane osoby zalogowanej z tabeli pracownika //Zapytanie o dane osoby zalogowanej z tabeli pracownika $query = "SELECT konto.konto_id, login, haslo, kto, imie, nazwisko FROM konto, klient ". "WHERE login='$_POST[logid]' AND konto.konto_id=klient.konto_id;"; $result = mysql_query($query) or die ("Zapytanie nieudane! BŁĄD: ".mysql_error()); $query_data = mysql_fetch_row($result); $_SESSION[uzytkownik] = $query_data[4] . " " . $query_data[5]; $_SESSION[nick] = $query_data[1]; header("location: start.php"); } } else { // Zły login lub hasło ?> <br><br><br><br><br><br><br><br><br> <table width="80%" align="center" border="0" cellpadding="14"> <tr> <td><h2 class="error">Podałeś zły login lub hasło!</h2></td> </tr> <tr> <br> <td align="center"><input type="Submit" Name="Button" Value="Wróć" onClick="location.href='main.php'"></h2></td> </tr> </table> <? } //Zamknięcie połączenia z bazą danych mysql_close($conn); ?> </body> </html> Jeśli użytkownik podał dobry login i hasło uruchamiany jest plik start.php: Kod <!--Ramki--> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta name="pragma" content="no-cache" /> </head> <frameset cols="200,*" frameborder="yes" border="3"> <frame src="menu.php" name="menu" scrolling="auto" noresize /> <frame src="wizytowka.php" name="wizytowka" scrolling="auto" /> </frameset> <noframes> </html> Zawartość pliku logout.php już macie wyżęj. Najlepsze jest to, że pytałem się ludzi którzy pracują jako koderzy php i nie wiedzą co z tym zrobić ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
a może session.use_cookies w php.ini ustawic na 0? zauważyłem że nawet jak nie ustawiam zadnych cookiesow tylko robie session_start() to tworzy mi cookiesa temp'ach. Po przestawieniu powinien przekazywac nr sesji w adresie.
-------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
-Code46- |
![]()
Post
#12
|
Goście ![]() |
Cytat(Darti @ 2005-03-16 23:20:11) a może session.use_cookies w php.ini ustawic na 0? zauważyłem że nawet jak nie ustawiam zadnych cookiesow tylko robie session_start() to tworzy mi cookiesa temp'ach. Po przestawieniu powinien przekazywac nr sesji w adresie. Ale co wtedy z użytkownikami systemu, którzy zanzaczą przy logowaniu (myślę o dodaniu takiej opcji), że chcą być automatycznie logowani do systemu po wejściu na stronę?? |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Code46 @ 2005-03-16 23:24:28) Ale co wtedy z użytkownikami systemu, którzy zanzaczą przy logowaniu (myślę o dodaniu takiej opcji), że chcą być automatycznie logowani do systemu po wejściu na stronę?? to dla nich specjalnie ustawisz cookiesa (ale sesje dalej cookiesow uzywac nie powinny) -------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
-Code46- |
![]()
Post
#14
|
Goście ![]() |
Cytat(Darti @ 2005-03-16 23:34:16) Cytat(Code46 @ 2005-03-16 23:24:28) Ale co wtedy z użytkownikami systemu, którzy zanzaczą przy logowaniu (myślę o dodaniu takiej opcji), że chcą być automatycznie logowani do systemu po wejściu na stronę?? to dla nich specjalnie ustawisz cookiesa (ale sesje dalej cookiesow uzywac nie powinny) Czy jeśli mój plik logout.php (który zamieściłem na samym początku posta) usuwa sesje, to dlaczego nie chce skasować pliku coockie? Przeczytałem artykuł http://www.forum.kasart98.com/viewtopic.ph...der=asc&start=0 i jest tam taki przykład licznik.php a zawartość: Kod <? session_start(); echo session_id(); if(isset($_SESSION['ile'])) { $_SESSION['ile']++; } else { $_SESSION['ile'] = 1; } echo("<br><br> Ilość wejść na strone w ciągu trwania sesji: $ile"); print $_SESSION['ile']; ?> Jeśli mam włączoną obsługę cookies to po każdym odświeżeniu strony licznik jest zwiększany o 1. Ale jak wyłącze obsługę cookies to cały czas jest 1? Przecież korzysta z sesji?? Albo drugi przykład z tej stroniki - prosty system logowania i wylogowywania. Jak cookies włączone to po zamknięciu przeglądarki i ponownym wejściu na stronę pisze że jestem zalogowany jako test dopóki nie nacisnę wyloguj. A jak wyłącze coockies to nie pamięta.. Nie rozumiem tego |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
hmm ja tez nie kumam cookies i sesji - są głupie te mechanizmy
![]() Pozdrawiam -------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
-Code46- |
![]()
Post
#16
|
Goście ![]() |
Cytat(Darti @ 2005-03-17 00:05:46) hmm ja tez nie kumam cookies i sesji - są głupie te mechanizmy ![]() Pozdrawiam Ja już troszke to obczaiłem. session_start(); ustawia sesje, która po zakończeniu sesji (zakmnięciu przeglądarki ginie). Ale ustawienie sesji ustawia też tzw. ciasteczko sesyjne. Wystarczy je skasować. Tylko dlaczego Kod ... ... setcookie ('PHPSESSID','', time()-300,'/','',0); //zniszcz cookie Nie niszczy tego ciasteczka? Jakby niszczyło to już po problemie ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 10:36 |