Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nie mogę skasować sesji, próbowałem wszystkiego :(
-Code46-
post 16.03.2005, 01:43:13
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
Go to the top of the page
+Quote Post
scanner
post 16.03.2005, 08:28:53
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?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
-Code46-
post 16.03.2005, 12:27:45
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 sad.gif
Go to the top of the page
+Quote Post
czachor
post 16.03.2005, 12:36:42
Post #4





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


  1. <?php
  2. //z manuala
  3. // Usuń wszystkie zmienne sesyjne
  4. $_SESSION = array();
  5. // Na koniec zniszcz sesję
  6. ?>
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
Go to the top of the page
+Quote Post
-Code46-
post 16.03.2005, 12:47:44
Post #5





Goście







Tak też robiłem ale nic z tego. Sesja jest pamiętana
Go to the top of the page
+Quote Post
yavaho
post 16.03.2005, 13:47:05
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.


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
-durandal-
post 16.03.2005, 15:25:54
Post #7





Goście







ja usuwam sesje za pomoca
session_unregister(zmienna);
Go to the top of the page
+Quote Post
-Code46-
post 16.03.2005, 15:55:44
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ć sad.gif
Go to the top of the page
+Quote Post
yavaho
post 16.03.2005, 18:49:36
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.


--------------------
Książki informatyczneKsiążki biznesowe
Warsztat: notepad hardcore
Go to the top of the page
+Quote Post
-Code46-
post 16.03.2005, 18:58:36
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ć sad.gif
Go to the top of the page
+Quote Post
Darti
post 17.03.2005, 00:20:11
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
Go to the top of the page
+Quote Post
-Code46-
post 17.03.2005, 00:24:28
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ę??
Go to the top of the page
+Quote Post
Darti
post 17.03.2005, 00:34:16
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
Go to the top of the page
+Quote Post
-Code46-
post 17.03.2005, 00:44:08
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
Go to the top of the page
+Quote Post
Darti
post 17.03.2005, 01:05:46
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 smile.gif wiem tylko ze jak ustawie session.use_cookies na 0 to do ciacha mi nie dopisuje PHPSESSID z wartoscia.

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
Go to the top of the page
+Quote Post
-Code46-
post 17.03.2005, 01:12:05
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 smile.gif wiem tylko ze jak ustawie session.use_cookies na 0 to do ciacha mi nie dopisuje PHPSESSID z wartoscia.

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 sad.gif
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 10:36