![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Robię sobie logowanie z wykorzystaniem Cookies. Działa to tak, że jeżeli nie istnieje $_COOKIE['login'] skrypt wyświetla panel logowania, jednak jeżeli to ciacho istnieje wyświetlone zostają dane "zalogowany jako" itd. Jednocześnie chcę zrobić, aby jeżeli istnieje to ciasteczko powstały dwie nowe zmienne sesji. $_SESSION['zalogowano'], oraz $_SESSION['login']. Kod wygląda tak:
Kod if(isset($_COOKIE['login'])) { $_SESSION['zalogowano'] = True; $_SESSION['login'] = $_COOKIE['login']; Teoretycznie wszystko jest ok, gdy na stronie wyechuję te dwie zmienne wszystko działa. Jednak gdy wyłączę przeglądarkę, a po włączeniu wejdę na stronę to jestem zalogowany, te dwie zmienne istnieją, jednak gdy wejdę do innego pliku skrypt gubi te zmienne. Zaczynają działać dopiero, gdy "przepuszczę" skrypt przez jakiś inny plik. Np wchodzę do pliku home.php, tutaj te zmienne działają, wchodzę do skomentuj.php - zmienne nie działają. Lecz jeżeli przed wejściem do skomentuj.php "przejdę" przez plik news.php, a dopiero stąd do skomentuj.php obie zmienne działają. Co może być przyczyną ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja troche na inny temat ale dla Twojego dobra.
Podaj mi adres tej strony i uwierz mi szybko będe zalogowany bez znajomosci danych logujących. Nie mozna w ciachu trzymac info o tym czy ktos zalogowany czy nie, bo ciacho mozna baaaardzoooo latwo spreparowac. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Strona na localu. Nie bój się, wszystko jest zabezpieczone na tyle, żeby nikomu nie chciało się włamywać. Zresztą nie jest to strona banku, żebym musiał się szczególnie obawiać włamania (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ot, zwykłe logowanie do systemu komentarzy. W ciachu mam przechowane login i hasło, potem sprawdzam, czy w bazie istnieje konto z takim loginem i hasłem, a dopiero potem loguję. Nie jest to zbyt bezpieczne, ale jak już mówiłem strona jest z gatunku tych, na którą nikomu nie chciałoby się włamywać. Pomóżcie mi lepiej rozwiązać problem z tą sesją (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ten post edytował Lord17 23.06.2008, 16:28:34 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Strona na localu. Nie bój się, wszystko jest zabezpieczone na tyle, żeby nikomu nie chciało się włamywać. Zresztą nie jest to strona banku, żebym musiał się szczególnie obawiać włamania (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ot, zwykłe logowanie do systemu komentarzy. W ciachu mam przechowane login i hasło (wiem, wiem, nie jest to bezpieczne, bo wystarczy wykraść ciastko, a rozszyfrowanie md5() to łatwizna), potem sprawdzam, czy w bazie istnieje konto z takim loginem i hasłem, a dopiero potem loguję. Nie jest to zbyt bezpieczne, ale jak już mówiłem strona jest z gatunku tych, na którą nikomu nie chciałoby się włamywać. Pomóżcie mi lepiej rozwiązać problem z tą sesją (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) co ty pier*****
co ty gadasz o jakimś łamaniu md5 i wogóle... wyżej napisałem exploita w niecałą minutę... chyba o czymś to świadczy (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) co do twojego problemu to pewnie w tych innych plikach nie dałeś session_start" title="Zobacz w manualu PHP" target="_manual --edit (@ociu) Jeszcze raz zobaczę takie wygwiazdkowane słowa w Twoich postach, a dostaniesz warna. Nie posiadasz innych słów w swoim słowniku ? Ten post edytował Ociu 23.06.2008, 21:25:53 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
session_start powiadasz ? no tak się składa, że jest wszędzie, gdzie być powinno.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 535 Pomógł: 27 Dołączył: 3.05.2005 Ostrzeżenie: (20%) ![]() ![]() |
Wróżkami nie jesteśmy bo ja nie widzę tego w kodzie który podałeś.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wróżkami nie jesteśmy bo ja nie widzę tego w kodzie który podałeś. No ok, rozumiem. Podałem fragment kodu, który powinien pomóc zrozumieć w jaki sposób te $_SESSION są tworzone. Jednak jakby ktoś miał jakiś pomysł, dlaczego to nie trybi to byłbym bardzo wdzięczny za jakieś sugestie |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
no a w skrypcie co podales tego nie widac... poza tym albo wkleiles kawalek kodu z czegos albo nie objales kawalka kodu w znaczniki php
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
czego nie widać? Bo już się pogubiłem.
To jest funkcja odpowiedzialna za logowanie, z pliku funkcje.php. Jest objęta w zniaczniki PHP, tylko jest to jedynie fragment pliku |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
napewno dałeś wszedzie session_start? Zobacz co daje print_r($_SESSION);
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
session_start() na pewno jest wszędzie.
a co do print_r($_SESSION); w pliku, w którym się zalogowuje wyświetla Kod Array ( [zalogowano] => 1 [login] => Lord [haslo] => 7130095d311fc4d850cff4e82a36de9b ) jednak po wejściu w plik skomentuj.php wyświetla Kod Array ( ) czyli tak jakby gubi tą sesjęMa znaczenie, czy session_start() wpiszę przed, czy po wywołaniu funkcji? Ten post edytował Lord17 23.06.2008, 21:45:35 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 15 Dołączył: 10.12.2007 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ma znaczenie, że session_start() dajesz na początku skryptu, albo tuż po załadowaniu plików z klasami.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
session_start() jest na początku każdego pliku. Najbardziej dziwne jest, że po przejściu do jakiegokolwiek pliku "gubi" sesję, dopiero po przejściu do jeszcze innego pliku tą sesję odnajduje. Dzieje się tak tylko przy wywoływaniu $_SESSION z $_COOKIE
Ten post edytował Lord17 23.06.2008, 22:25:54 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 2 Dołączył: 23.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
ja mam tak:
poczatek pliku: Kod session_start(); ob_start(); koinec: Kod ob_flush(); stronke masz u siebie w domu czy jakis hosting darmowy? mi na paru hostingach gubilo $_SESSION i $_COOKIE |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Strona stoi na localhoście.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 2 Dołączył: 23.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
windows czy linux? jezeli windows to xampp czy czysty apache? sprawdz folder z sesjami folder "/tmp" czy masz prawa zapisywania
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tam wszystko jest ok. Sesje gubi tylko przy wywoływaniu jej ze $_COOKIE. Przy normalnym logowaniu przez formularz jest wszystko ok
Edit: Zauważyłem jeszcze jedną ciekawą rzecz. Mianowicie przy wpisaniu adresu pliku do paska adresu nie gubi sesji. Gubi ją tylko przy korzystaniu z odnośników. Ten post edytował Lord17 23.06.2008, 23:45:46 |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 8.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
session_start() jest na początku każdego pliku. Najbardziej dziwne jest, że po przejściu do jakiegokolwiek pliku "gubi" sesję, dopiero po przejściu do jeszcze innego pliku tą sesję odnajduje. Dzieje się tak tylko przy wywoływaniu $_SESSION z $_COOKIE Mam nadzieję, że wywaliłeś wszystkie session_start() z tej funkcji logującej? Jak wywołujesz tą funkcję w pliku x, ważne aby w nim na początku było session_start() wywołane. U mnie generalnie zawsze wszystko kręci się w index.php, wystarczy mi więc wywołać session_start() tylko na początku skryptu index.php. Nie ważne ile plików z klasami/funkcjami itd dołączam tam, dopóki wszystko robi się w indexie będzie ok (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie wiem jak to jest rozwiązane u Ciebie, ale zachęcam do takiego podejścia. ja mam tak: poczatek pliku: Kod session_start(); ob_start(); koinec: Kod ob_flush(); stronke masz u siebie w domu czy jakis hosting darmowy? mi na paru hostingach gubilo $_SESSION i $_COOKIE Z tego co pamiętam miałem kiedyś problem z sesjami przez ob_start - zmieniało mi SIDy, po wywaleniu obów było już ok, nie wiem jakie jest rozwiązanie na to bo nie miałem czasu szukać wtedy - może ktoś wie czemu sesje i oby się kłucą? I jak to obejść. |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Możliwe, że gubi tą sesję przez to, że za dużo razy powtarza się session_start() ? Bo przyznam się, że w przeciętnym pliku session_start() znajduje się aż trzy razy.
|
|
|
![]()
Post
#23
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Możliwe, że gubi tą sesję przez to, że za dużo razy powtarza się session_start() ? Bo przyznam się, że w przeciętnym pliku session_start() znajduje się aż trzy razy. Jak bardzo niedomyślnym trzeba być żeby nie zrozumieć czegoś co Ci piszą już kilka razy.Masz mieć tylko raz session_start() i masz je wykonać zanim wykonasz jakąkolwiek inną instrukcję. Ten post edytował mike 24.06.2008, 09:34:50 |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jak bardzo niedomyślnym trzeba być żeby nie zrozumieć czegoś co Ci piszą już kilka razy. Masz mieć tylko raz session_start() i masz je wykonać zanim wykonasz jakąkolwiek inną instrukcję. Wolałem się upewnić. Teraz jest już tylko 1 raz, ale to nie zmienia faktu, że problemu to nie rozwiązuje. Sesję gubi nadal. |
|
|
![]()
Post
#25
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Dwie strony o niczym.
Przenoszę na przedszkole i jestem bliski zamknięcia tematu. Odpowiedzi dostałeś już wystarczająco dużo, by znaleźć rozwiązanie problemu. |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dwie strony o niczym. Przenoszę na przedszkole i jestem bliski zamknięcia tematu. Odpowiedzi dostałeś już wystarczająco dużo, by znaleźć rozwiązanie problemu. Ta, to ja dziękuję za odpowiedzi, które w żaden sposób nie nakierowały mnie co jest nie tak i dlaczego sesję gubi tylko przy korzystaniu z linków, a przy wpisywaniu adresu do paska przeglądarki nie. |
|
|
![]()
Post
#27
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
1. session_start() - 1 raz na plik.
2. setcookie - ustawia ciasteczko po zalogowaniu użytkownika. 3. ciasteczko będzie widoczne dopiero po odświeżeniu strony. |
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Te wszystkie warunki są spełnione. Dobra, może jeszcze raz.
index.php - odpowiada za includowanie odpowiednich plików funkcja - funkcja odpowiadająca za logowanie, wywoływana w pliku logo.php naglowek.php - plik includeowany w każdym innym pliku. To w nim tworzone są ciacha logo.php - również includeowany w każdym pliku. Tutaj wywołuję funkcję. Przypominam tylko, że logowanie działa dobrze, gdy korzystam z formularza. Ciacho się tworzy, po wyjściu z przeglądarki i wejściu na stronę po 10 minutach nadal jestem zalogowany. Właśnie wtedy tworzę $_SESSION z ciacha (linia 80 w funkcji). print_r($_SESSION); wywala wartości sesji, czyli niby wszystko jest ok. Problemy zaczynają się przy przechodzeniu do innej podstrony i wykorzystaniu do tego celu odnośników (przy wpisaniu adresu w pasek adresu przeglądarki sesja działa), wtedy właśnie sesja jest gubiona i skrypt odnajduje ją dopiero po przejściu do jeszcze innego pliku. Mam nadzieję, że teraz ktoś będzie w stanie znaleźć jakieś lekarstwo na ten problem. Bo jak do tej pory wszystkie wskazówki wykorzystałem, jednak nic to nie daje. |
|
|
![]()
Post
#29
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
1. session_start musi być na każdej stronie na samej górze pliku.
2. Usuń @, który znajduje się przed session_start |
|
|
![]()
Post
#30
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
1. session_start musi być na każdej stronie na samej górze pliku. 2. Usuń @, który znajduje się przed session_start 1. jak jest w index.php to jest jednocześnie na górze każdego pliku, skoro includuję, nie? A jeżeli się mylę to wiedz, że sprawdziłem również sposób z wywaleniem session_start() z index.php i wklejenie do każdego pliku. Nie ma żadnej różnicy. 2. Jak usunę @ wywala mi błąd. |
|
|
![]()
Post
#31
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#32
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 24.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
I nie pomyślałeś, że może coś jest nie tak? Może byś nam go pokazał? Nie wpadłeś na to? Proszę Cię bardzo Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\p24\includes\naglowek.php:27) in C:\wamp\www\p24\cms\funkcje.php on line 91 |
|
|
![]()
Post
#33
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Koleś jest niepoważny. Zamknijcie ten wątek.
|
|
|
![]()
Post
#34
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Wybacz zwłokę w odpowiedzi, ale musiałem się pozbierać z podłogi i zmienić pieluchę. Skoro jest błąd, to się go poprawia, a nie ukrywa. tyle czasu poszło na marne.
A błąd mówi sam za siebie. Nie można używać session_start w środku, ponieważ jakiś output się wysłał do przeglądarki. edit Zgadzam się z przedmówcą. Zamykam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 01:49 |