Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Setcookie tworzy ciasteczka dopiero za drugim razem
Dyktus
post 24.03.2014, 10:10:19
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 8.08.2011
Skąd: Poznań

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


Witam.

Na początku dodam, że próbowałem już wielu rzeczy i szukałem w wielu źródłach jednak nie znalazłem rozwiązania.

1) Mam skrypt logowania, który nie tworzy mi ciasteczek. Loguje mnie, ale gdy potem wejdę na dowolną podstronę moje ciasteczka i sesje znikają. Gdy zaloguje się za drugim razem wszystko jest już ok.

Kod
    setcookie("CMS-Account-Type",$type,(time+3600*24),"/","http://www.adres.pl");
        setcookie("CMS-UserLogin",$user_from_db,(time()+3600*24),"/","http://www.adres.pl");
        setcookie("CMS-Unique-ID",md5($user_from_db),(time()+3600*24),"/","http://www.adres.pl");
        setcookie("CMS-LoginStatus",true,(time()+3600*24),"/","http://www.adres.pl");
    setcookie("CMS-PaybackID",$id_user,(time()+3600*24),"/","http://www.adres.pl");    

   $actual_adress = $_SERVER['REQUEST_URI'];
        header( 'refresh:0;url='.$actual_adress);


Z tworzeniem sesji jest podobny efekt smile.gif jest ona zapamiętana po przekierowaniu, ale gdy potem ruszę na inną podstronę to już znika.

2) Dodam, że w pliku index.php mam na początku dane

Kod
ob_start();
session_start();

//Cały kod strony

ob_end_flush();


3) Być może problem też wynika z ustawień htaccess, które mam rozwiązane w ten sposób:

Kod
RewriteEngine on
Options All -Indexes
RewriteRule ^.+(includes/.+)$ $1 [L]
RewriteRule ^.+(modules/.+)$ $1 [L]
RewriteRule ^.+(admin/.+)$ $1 [L]
RewriteRule ^.+(klasy/.+)$ $1 [L]
RewriteRule ^.+(pliki/.+)$ $1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(jpg|png|jpeg)

RewriteRule ^.*$ index.php/$1 [L]


Próbowałem użyć setcookie z trzema parametrami tj. nazwa,zawartość, data ważności i też bez efektu.

Dodatkowe informacje: w ustawieniach php sesion.save_path jest ustawione na /tmp i folder ten istnieje na moim serwerze w pliku public_html z odpowiednio ustawionymi chmodami (do dostępu).

Nie wiem czy dział przedszkole to dobry dział, problem jest pewnie banalny jednak nie znalazłem rozwiązania mojej sprawy w związku z czym chcę poradzić się bardziej zaawansowanych użytkowników.

Ten post edytował Dyktus 24.03.2014, 10:10:53
Go to the top of the page
+Quote Post
timon27
post 24.03.2014, 16:01:43
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Jak sprawdzasz istnienie cookie?
Strzelam że nie wiesz jak działa cookie.
Więc:
Gdy tworzysz cookie za pomocą setcookie to tworzone jest ciasteczko i wysyłane jest ono do użytkownika.
Zaś zmienna $_COOKIE jest pobierana przez serwer w momencie zapytania (zanim wykona się kod php).
Dlatego gdy dasz setcookie('ciasteczko','wartosc') to zmienna $_COOKIE['ciasteczko'] będzie pusta - serwer gdy był odpytywany nie dostał takiego ciasteczka.
Jeśli chcesz od razu korzystać z tego ciasteczka (co jest zbędne bo możesz to mieć w innej zmiennej) to musisz dać oprócz setcoockie kod:
  1. $_COOKIE['ciasteczko']='wartosc';
Go to the top of the page
+Quote Post
Dyktus
post 24.03.2014, 17:10:40
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 8.08.2011
Skąd: Poznań

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


Pamiętam, że jak jeszcze pół roku temu pisałem skrypt logowania to sposób ustawiania wartości ciasteczka przy pomocy setcookie działał bezproblemowo i miało ono wartość od razu ustaloną wartość.

Czy ciasteczko istnieje sprawdzam w ten sposób:

Kod
if(isset($_COOKIE['ciasteczko']){
  //do something
}else{
//brak ciasteczka
}

@edit

No i niestety nawet przypisanie potem wartości do
Kod
$_COOKIE['ciasteczko']='blabla';
nie działa poprawnie, bo mnie wylogowuje z niewiadomych powodów

Dodam jeszcze, że po zalogowaniu w przeglądarce tworzy mi się tylko ciasteczko o nazwie "_ga" co również jest dziwne.
Wyszłoby na to, że skrypt działa bo obok ciasteczek tworzę sesje, które zresztą też nie są pamiętane po pierwszym logowaniu

Ten post edytował Dyktus 25.03.2014, 10:05:35
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: 13.08.2025 - 23:12