![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 3 Dołączył: 2.04.2010 Ostrzeżenie: (10%) ![]() ![]() |
Hejka
Problem ma się tak: Mam stronkę opartą na sesji. Sesja zwykła, przechowuje login i hasło. Kiedy się spotka z tym kodem:
sesję szlag trafia i trzeba ją tworzyć od nowa :/ |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
zawsze na początku KAŻDEGO dokumentu : session_start();
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat zawsze na początku KAŻDEGO dokumentu : session_start(); Nie do końca. Sesjia powinna być uruchomiona tylko raz, ponieważ aplikacja później sypie informacjami o ponownym starcie sesji. Jeśli masz jakiś globalny plik, który jest ładowany za każdym razem to do niego powinieneś wrzucić start sesji. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Niemozna tak? Mam klase i nie w kazdej funkcji potrzebuje sesji, w konstruktorze tez troche niezbyt bo mam funkcje statyczne jak islogged.
Wiec session_start uzywam moze z kilka razy przy wczytaniu strony. Zawsze pod koniec funkcji koncze sesje funkcja session_write_close() Jest to zle? Wszystko dziala poprawnie. Ten post edytował jackraymund 23.08.2013, 08:44:57 -------------------- Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Mam klase i nie w kazdej funkcji potrzebuje sesji Super.... ale jak juz raz wystarowales sesje to ciagle jej zamykanie i startowanie jest totalnie bez sensu.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Owszem będzie to działać poprawnie, nie powiedziałem, że nie. Sesja jest przecież dostępna w globalnej tablicy, więc dlaczego nie uruchomić jej raz i mieć święty spokój? Każde takie uruchomienie to tylko strata czasu. Może i nie za wiele, ale przy dużym ruchu na stronie może to powodować zbędne obciążenie i wydłużyć czas ładowania.
Ten post edytował freemp3 23.08.2013, 10:56:29 -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Czyli jezeli zamienię funkcje statyczna na zwykłą, w konstruktorze dam start a w destruktorze end to sesja bedzie dzialac na calym obiekcie?
-------------------- Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Czyli jeżeli w gdziekolwiek w kodzie wywołasz start sesji to do tego momentu zmienna $_SESSION jest uzupełniana i jest dostępna w każdym miejscu w kodzie. Nie ważne czy jest to funkcja, metoda zwykła czy statyczna, konstruktor czy destruktor, jest to zmienna globalna. Zachowuje się identycznie jak zmienne $_GET oraz $_POST. Z tym wyjątkiem że one są dostępne od razu, a sesje najpierw trzeba uruchomić ręcznie. Chociaż i to nie do końca jest prawdą, bo można w konfiguracji ustawić automatyczny start sesji.
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 3 Dołączył: 2.04.2010 Ostrzeżenie: (10%) ![]() ![]() |
Widzę chłopaki się rozgadali a problem jak był tak jest....
Oczywiście mam plik globalny (trzymam tam połączenie z bazą, ważne funkcje itp.) i oczywiście mam tam session_start(); na samym początku pliku ![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
W takim razie pozostaje sprawdzić do którego momentu sesja istnieje. W kodzie który podałeś nie ma nic o sesji. Sprawdź jak wygląda zmienna $_SESSION bezpośrednio przed nim oraz za nim. Jeśli już przed nim będzie nie tak pozostaje się cofać i sprawdzać jak wygląda zmienna kilka linijek wcześniej.
-------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 3 Dołączył: 2.04.2010 Ostrzeżenie: (10%) ![]() ![]() |
cały pliczek wygląda tak:
jak widać kod wiele się nie zmienia, a po cofnięciu z niego do drugiego pliku wywala sesję całkowicie :/ |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no a temat.php startuje sesje?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 3 Dołączył: 2.04.2010 Ostrzeżenie: (10%) ![]() ![]() |
Jasne
![]() w nim też jest includowany plik globalny, bo niestety musi... |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jak rozumiem w momencie dodawania wpisy do bazy danych sesja jest jeszcze poprawna?
Może w pliku temat.php masz gdzieś resetowanie sesji i wkradła się literówka lub coś takiego? Więcej nie poradze bo nie wiem co znajduje się w pliku. Możesz spróbować śledzić sesje od momentu jej wystartowania, np wyświetlając co kilka linijek i tym sposobem sprawdzisz gdzie dokładnie leży błąd. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Taki samy problem miałem, dlatego przed każdą funkcją startowałem sesje.
Ale z teori kolegi który mi odpowiedział na pytanie, to nie powinno mieć miejsca, a jednak mamy razem podobny problem. Spróbowałem aby dać start session w konstruktorze jednak to nic nie dało, obiekt nie trzyma otwartej sesji. czyli tak na szybko przedstawienie jak to wygląda klasa.php
index.php
var_dump pokazuje pusty string, lecz gdy dam session_start(); przed uzyciem $_SESSION wtedy działa jak należy. Ten post edytował jackraymund 23.08.2013, 12:59:15 -------------------- Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat var_dump pokazuje pusty string, lecz gdy dam session_start(); przed uzyciem $_SESSION wtedy działa jak należy. No bo jak nigdzie wczesniej nie startowales sesji to niby jakim cudem ci mialo zadzialac?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
@jackraymund nie __constructor() tylko __construct(). Z poprawną nazwą konstruktora śmiga aż miło.
Ten post edytował freemp3 23.08.2013, 13:11:38 -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 3 Dołączył: 2.04.2010 Ostrzeżenie: (10%) ![]() ![]() |
z startowaniem sesji kombinowałem już w różnych kombinacjach. Jak wyrzucało, tak nadal wyrzuca :/
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
@freemp3
@nospor Jak nie? W kontruktorze wystartowałem sesje. freemp3 pisał że jeżeli gdzieś wystartuje sesje to reszta kodu będzie łapać ją, a nie łapie. To co mogę jeszcze zrobić? autosession wolałbym zostawić, bo niechce włączać sesji dla każdej podstrony @up a wyrzuca ci jakiś błąd? podaj treść błędu @down 2 raz powtórze to co napisałem ""czyli tak na szybko przedstawienie jak to wygląda" wiadome że odręcznie jakiś syntax mógł wpaść." kod pisałem odręcznie i go nie uruchamiałem, ale identycznie wygląda sprawa na serwerze. Tylko że jest poprawnie bez syntaxów a konstruktor działa Ten post edytował jackraymund 23.08.2013, 14:15:43 -------------------- Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
kamilos809 spróbuj wystartować sesję w każdym z tych plików, na początku. Jeśli to nic nie da to spróuj ją wystartować także bezpośrednio przed linijką w której się wywala. Jeśli nadal będzie pusta to znaczy, że gdzieś jest czyszczona.
@jackraymund w konstruktorze nie wystartowałeś sesji bo był błąd w jego nazwie więc nie ma bata, żeby zadziałało. Napisałem Ci, że po poprawieniu jego nazwy wszystko działa jak należy. Czytaj ze zrozumieniem. Po drugie to nie jest temat o tym gdzie i jak ładować sesje, tylko problem @kamilos809. Jeśli chcesz dalej ciągnąć temat to dobrze by było założyć oddzielny wątek bo tylko patrzeć jak jakiś mod sie zdenerwuje i polecą ostrzeżenia. -------------------- Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.
https://www.aroch.pl https://themeforest.net/user/aroch https://www.astroblog.aroch.pl https://www.4geeks.pl |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:20 |