GRY-Online.pl --> Archiwum Forum

php, $_SESSION, problem

22.11.2009
18:26
smile
[1]

mikmac [ Senator ]

php, $_SESSION, problem

ok, w skrocie:


Prosty plik php, counter, ktory sie zwieksza za kazdym razem jak odswiezymy strone. Resetuje sie dopiero po wylaczeniu przegladarki.
Tak dzialaja sesje w php i u czytajacego ten tekst "zapewne" tez dziala.

To jak wytlumaczyc, ze na jednej sieci (neostrada) na dowolnym komputerze pod tym routerem to W OGOLE nie dziala? Umnie dziala, u niego nie. Szczerze to kompletnie mi to sypie projekt serwisu z sesja, bo nie potrafie wytlumaczyc zjawiska i nie wiem jak powszechne jest "niedzialanie" sesji.

kod pliku to:
<?php
session_start();
$_SESSION['count'] ? $_SESSION['count']++ : $_SESSION['count'] = "1";
echo $_SESSION['count'];
?>
<br /> Od¶wież strone, licznik będzie rósł.


Pytanie: dlaczego "czasem" nie dziala i jak temu zaradzic?

22.11.2009
18:49
[2]

Cappo [ Senator ]

A ciasteczka są włączone? bez tego ani rusz.

22.11.2009
18:54
[3]

mikmac [ Senator ]

Cappo -->
ee a to session dziala na ciasteczkach? Myslalem, ze ten plik jest zapisywany w katalogu php na serwerze....

22.11.2009
18:55
[4]

maviozo [ man with a movie camera ]

mikmac->dla każdego usera?:)

22.11.2009
19:01
[5]

Moby7777 [ Generaďż˝ ]

Jak użyszkodnik ma zmienne IP i nie jest identyfikowany przez cookie no to jak chcesz go rozpoznać?

22.11.2009
19:01
[6]

mikmac [ Senator ]

maviozo -->
a nie? nie jest to taki chwilowy plik do czasu "rozlaczenia" sie usera?

Kurde wytlumaczcie mi to jak krowie na rowie. Co prawda nie mam serwera php tylko korzystam z platnych kont, ale jak pamietam to w pliku php.ini ustawia sie sciezke zapisu plikow session. No to chyba jest sciezka serwera nie?

Wydawalo mi sie, ze session jest wykonywane po stronie serwera, zreszta jak caly kod php. No to jak php mialby wykonac kod: pyta usera zo zmienne array session aby wykonac kod.

moby7777 -->
aa chyba kapuje, tak wiec sama tablica session zostaje na serwerze, ale w cookie laduje identyfikator tak? Wiec zmienna session powstaje, tylko co odswiezenie strony gubi sie tak?
A zmienne IP to chyba nei tedy droga, bo przeciez IP nie jest az tak zmienne aby sie zmieniac pomiedzy odswiezeniami strony ;)

No dobra to jak przekazywac zmienne pomiedzy stronami U KAZDEGO usera?

22.11.2009
19:07
[7]

kamyk_samuraj [ Legend ]

mikmac -> ale identyfikator sesji jest pprzekazywany w ciasteczku

22.11.2009
19:14
[8]

Cappo [ Senator ]

Z tego co się orientuje w ciasteczku zapisywany jest numer PHPSESSID -> obrazek, na jego podstawie identyfikowany jest użytkownik.

Wklep sesje + php do wujka googla i na pewno znajdziesz ładnie opisane.


Testować możesz sobie lokalnie na kompie, zainstaluj WAMPa(masz php,mysql i apache w jedenym) -> (na viście trzeba podłubać przy zabezpieczeniach)


php, $_SESSION, problem - Cappo
22.11.2009
19:28
[9]

mikmac [ Senator ]

dobra, po malu ogarniam, tylko dalej nie wiem jak to obejsc. Wyczytalem tu:


ze taki problem wystepuje (tylko?) na combo Vista + IE7 - akurat na tych kompach gdzie nie dziala jest IE7 oraz XP oraz Vista.
Dodalem do kodu PHP:
Header("Cache-control: no-store, no-cache, must-revalidate, private");

ale nic to nie zmienilo, dalej nie wiem jak to obejsc.

Wazna sprawa, bo kod nie ma dzialac aby tylko dzialal, tylko ma dzialac dla kazdego i nei bardzo wiem jak obejsc ten problem.

22.11.2009
20:50
[10]

mikmac [ Senator ]

wciaz nie rozwiazalem problemu i nie mam zadnego pomyslu...
doczytalem, ze to problem z nieprzekazywaniem sessionID z cookie do serwera (badz w ogole nie zapisywanie session cookie).


Edit: na komputerze gdzie to zainstalowalem dorzucilem Chrome google... i dalej nie dziala :/ Czyli nie jest to bezposredni problem przegladarki.
Teraz juz kompletnie zglupialem.

W akcie desperacji: czy router moze zblokowac przekazywanie cookie na zewnatrz? Jakis zaawansowany, stary model linksysa, ale nie pamietam co na nim ustawialem.

22.11.2009
20:54
[11]

maviozo [ man with a movie camera ]

A gdybyś olał sesje w php i to samo zrobił tylko za pomocą ciasteczek z ważnością powiedzmy 15 minut?

Moze zapytaj też tutaj:
https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=9012594&N=1

23.11.2009
08:41
[12]

Moby7777 [ Generaďż˝ ]

@maviozo: niby pomysł zapisu w cookie nie jest głupi ale przecież wybitnie widać, że to właśnie z ciachami jest problem. :P

23.11.2009
16:39
[13]

mikmac [ Senator ]

no problem wciaz wystepuje na jedenj sieci lokalnej (mi znanej, zagadka jest w jak wielu sieciach jest taki problem)
niezaleznie od OS, przegladarki, zabezpieczen internetowych.

Padaczka.

No cookie samych w sobie nie lubie, bo wlasnie kazdy ma inaczej ustawione zarzadzenie cookie, z tego co kiedys myslalem, session powinno dzialac praktycznie zawsze - np dane logowania, koszyki w sklepach etc (pomijajac AJAXY, na ktory w moim przypadku nie ma miejsca).

23.11.2009
16:55
smile
[14]

maviozo [ man with a movie camera ]

mikmac->możesz jeszcze zapisywać np. IP każdego z osobna, ale czy to ekonomiczne, to chyba nie bardzo..

23.11.2009
17:06
smile
[15]

Regis [ ]

A gdybyś olał sesje w php i to samo zrobił tylko za pomocą ciasteczek z ważnością powiedzmy 15 minut?

Trzymanie w ciastkach większej ilości danych niż to absolutnie konieczne, to proszenie się o kłopoty. Im mniej user może "dotknąć", tym lepiej.


mikmac --> W ramach "debuigowania" możesz sprawdzić jeszcze dwie rzeczy:
1. Pobawić się z samodzielnym ustawianiem ciastek i zobaczyć czy faktycznie żadne się nie ustawia
2. Spróbować "ręcznie" zamknąć sesję na końcu pliku php (sprawdź w manualu jak to zrobić - wydaje mi się, że było to session_close, albo session_write_close) i zobaczyć jaki jest efekt

26.11.2009
23:33
smile
[16]

mikmac [ Senator ]

no wciaz nic nie rozwiazalem swojego problemu.

Az dziwne, ze tak malo jest info o tym na sieci, albo ja szukac nie umiem.
Przeciez prawie wszystkie systemy logowania/koszykow dzialaly kiedys a dzis jeszcze duza czesc dziala wlasnie na $_SESSION. Na zdecydowanej wiekszosci komputerow zwykly skrypt:

$_SESSION["count"] ? $_SESSION["count"]++ : $_SESSION["count"] = "1";
echo $_SESSION["count"];


dziala wysmienicie wraz z odswiezaniem strony. Latwo to sprawdzic klikajac w link na pierwszej stronie. Ale znam komputery (sieci lokalne raczej) na ktorych to NIE dziala. I nie znam odpowiedzi. Jest to niezalezne od wersji windy, przegladarki etc.

Moj skrpyt testujacy urosl juz do rozmiarow:

<html>
<head>


<?php
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
header('Content-Type: text/html; charset=iso-8859-2');

?>

<meta http-equiv="Refresh" content="1">
<meta http-equiv="Content-Language" content="pl">

<meta name="Author" content="Artheco">
<title></title></head>

<?php

$Lifetime = 3600;
$Seperator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
$DirectoryPath = dirname(__FILE__) . "‹$Seperator›SessionData";
is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) ‹
ini_set("url_rewriter.tags", "");
ini_set("session.use_trans_sid", false);



ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();



$_SESSION["count"] ? $_SESSION["count"]++ : $_SESSION["count"] = "1";
echo $_SESSION["count"];
session_write_close();
?>
<br /> Licznik sobie rosnie, bo strona się odswieza. Jak nie rosnie to dupa blada.
</html>


Ma za zadanie spelniac normy P3P, ma dawac falszywe flagi cookie, ma robic wszystko aby dzialalo - dalej nie dziala.
Jest tu tylu informatykow, naprawde nikt sie z tym nie zetknal?
Moze macie jakies swoje skrypty, ktorych dzialanie moge przetestowac na komputerze, na ktorym nie dziala NAJPROSTSZY skrypt z $_SESSION i porownam co jest nei tak...

27.11.2009
01:08
[17]

yo dawg [ 1979 ]

Jedyne co przychodzi mi do głowy to to, że session_start(); powinno być na samym początku pliku, zaraz po <?php

27.11.2009
09:56
[18]

mikmac [ Senator ]

ok, przerzucilem - nic sie nie zmienilo...

ale ten plik


dziala u wszystkich nie? Czy jest tez ktos z forum u kogo nie dziala? Tzn jest caly czas jeden.
Moze wtedy dojde do czegos...

27.11.2009
10:09
[19]

Kijano [ Generaďż˝ ]

2 pytania :

- jaka wersja PHP
- czy hosting pozwala Ci na edycję pliku php.ini

27.11.2009
10:14
[20]

hopkins [ Zaczarowany ]

Niestety nic Ci nie pomoge ale moge powiedziec, ze dziala.

27.11.2009
10:16
[21]

mikmac [ Senator ]

5.0.51 php, podobnie mysql, ale to nie ma tu znaczenia.
php.ini oczywiscie nie bezposrednio tylko prez .htaccess. Tak moge dynamicznie do polaczenia.

mam tam aktualnie takie wartosci:
php_value mmcache.enable 0
php_value mmcache.optimizer 0

27.11.2009
10:31
[22]

Kijano [ Generaďż˝ ]

Popatrzyłem na kod
wysyłasz najpierw header a potem robisz sesje ? Wywal te nagłówki.
Czy masz uprawnienia do tworzenia katalogów ?

© 2000-2025 GRY-OnLine S.A.