Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Ciastko się nie wyświetla
merick
post 9.03.2006, 05:18:32
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Mam następujący skrypt:

  1. <? 
  2. setcookie("ciacho",TRUE); 
  3. $ciastko = $_COOKIE['ciacho']; 
  4. if($ciastko==TRUE) 
  5. echo "Byłeś już na tej stronie !!!"; 
  6. else 
  7. echo "Jeszcze cię tu nie było !!!"; 
  8. ?
  9. ?>


Według skryptu zostaje wysłane ciacho, a przy pierwszym załadowaniu strony powinno się pojawić "Jeszcze cię tu nie było exclamation.gif!", a przy każdym kolejnym załadowaniu stony "Byłeś już na tej stronie exclamation.gif!". Problem w tym, że u mnie caly czas pojawia się "Jeszcze cię tu nie było exclamation.gif!". Hmm. Nie wiem co jest źle z tym skrptem, ale jeśli ktoś ma jakiś pomysł to proszę o wskazówki. Zastanawiam się czy wogóle to ciach jest wysyłane. Mam włączoną w przeglądarce obsługę ciastek. A może serwer wymaga jakieś konfiguracji (Krasnal 2.7).
Jak widzicie jestem początkujący, a problem jest banalny.
Liczę na wskazówki i z góry dziękuję smile.gif

Ten post edytował tiraeth 9.03.2006, 13:31:00
Go to the top of the page
+Quote Post
LBO
post 9.03.2006, 07:21:12
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


1.wstaw BBcode
2.działa!
Go to the top of the page
+Quote Post
merick
post 9.03.2006, 12:34:35
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Jak wspomniałem wcześnije jestem początkujący. Nie wiem o co biega z BB codem. Możesz podać skrypt jak to ma wyglądać.
Z góry dziękuję biggrin.gif
Go to the top of the page
+Quote Post
mike
post 9.03.2006, 12:43:26
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Wyrzucam do Przedszkola
2. Bycie początkującym nie zwalnia ze znajomości Regulaminu. Popraw bbCode w pierszym poście!
3. Przeczytaj to: setcookie() a bedziesz wiedział jak poprawnie wysyłać ciastko. Są tam przykłady, które powiedzą i wszystko.
Go to the top of the page
+Quote Post
merick
post 9.03.2006, 14:04:23
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Oki, wracając do pierwszego postu. Kod który jest tam zawaryt pochodzi z kursu ze strony: kurs

Oto urywek który mnie fascynuje najbardziej

Cytat
Przykładowy skrypt z wykorzystaniem ciasteczek:


<?
setcookie("ciacho",TRUE);
$ciastko = $_COOKIE['ciacho'];
if($ciastko==TRUE)
echo "Byłeś już na tej stronie exclamation.gif!";
else
echo "Jeszcze cię tu nie było exclamation.gif!";
?> 

Powyższy skrypt wysyła ciastko do użytkownika z wartością logiczną TRUE, po czym sprawdza, czy ciastko to posiada taką wartość.
Przy pierwszej wizycie na stronie wyświetlony zostanie napis: Jeszcze cię tu nie było exclamation.gif!, mimo, iż wcześniej zostało wysłane to ciastko.
Oznacza to, że ciastko jest widoczne dopiero po ponownym przeładowaniu strony.
Następna wizyta użytkownika spowoduje wyświetlenie napisu: Byłeś już na tej stronie exclamation.gif!.


Ponieważ jest to wyrywek z kursu nie może tam być błędów. Problem polega na tym, że u mnie to nie działa. Możesz mi to wyjaśnić dlaczego? biggrin.gif
Go to the top of the page
+Quote Post
mike
post 9.03.2006, 14:11:40
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Żeby to ciastko było ważne po przeładowaniu strony, trzeba nadać mu jakś czas ważności.
Jak to zrobić? Masz to w linku podanym przeze mnie.

P.S.
"Ponieważ jest to wyrywek z kursu nie może tam być błędów." - skąd ten wniosek? Błędny zresztą. W wywołaniu setcookie() brak trzeciego parametru, który pomimo tego że jest opcjonalny, to jest zarazem kluczowy.
Go to the top of the page
+Quote Post
merick
post 9.03.2006, 14:33:49
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Dla potrzeb testowana mój kod wygląda teraz tak:

  1. <?php
  2.  
  3.  
  4. setcookie("ciacho",TRUE,time()+30); 
  5. $ciastko = $_COOKIE['ciacho']; 
  6. if($ciastko==TRUE) 
  7. echo "Byłeś już na tej stronie !!!"; 
  8. else 
  9. echo "Jeszcze cię tu nie było !!!"; 
  10.  
  11.  
  12. ?>


A po kolejnych przeładowaniach strony pojawia się wciąż:

Cytat
Jeszcze cię tu nie było exclamation.gif!


Dlaczego?

Ten post edytował merick 9.03.2006, 14:36:14
Go to the top of the page
+Quote Post
kszychu
post 9.03.2006, 14:36:22
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Czy testujesz to na lokalnej maszynie czy na jakimś serwerze? Jeżeli na serwerze to sprawdź datę na serwerze.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
mike
post 9.03.2006, 14:44:27
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Nie ma co się dziwić, za każdym razem ustawiasz ciacho, które bedzie ważne następnym razem. A potem znów je ustawiesz i znów będzie ważne następnym razem, ....

Wywal ten kurs, wode z mózgu Ci zrobi.
Powinieneś ustawić ciacho tylko wtedy kiedy go nie ma:
  1. <?php
  2.  
  3. $blnVisited = ( empty( $_COOKIE[ 'visited' ] ) ) ? false : $_COOKIE[ 'visited' ];
  4.  
  5. if( $blnVisited )
  6. {
  7. echo 'witaj ponownie';
  8. }
  9. else
  10. {
  11. echo 'witaj pierwszy raz';
  12. setcookie( 'visited', true, time() + 3600 ); // na godzinę
  13. }
  14.  
  15. ?>
Go to the top of the page
+Quote Post
merick
post 9.03.2006, 14:45:01
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Testuję to na na swoim kompie. Mam tu Krasnala 2.7, data chyba jest pobierana z systemu w takiej sytuacji.

Ten skrypt który mi podesłaliście wywala bład. Wygląda to tak:

Cytat
witaj pierwszy raz
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\session\session11\session.php:11) in c:\usr\krasnal\www\session\session11\session.php on line 12


Próbowałem też usuwać ciacho i od nowa wszystko i taki sam błąd wywala.

Idąc dalej zgodnie z sugestją z poprzedniego posta zmieniłem swój kod do takiej postacji:

  1. <?php
  2.  
  3. $ciastko = $_COOKIE['ciacho']; 
  4.  
  5. if($ciastko==TRUE) {
  6.  
  7. echo "Byłeś już na tej stronie !!!"; 
  8.  
  9. }
  10.  
  11. else {
  12.  
  13. setcookie("ciacho",TRUE,time()+3600); 
  14.  
  15. echo "Jeszcze cię tu nie było !!!";
  16.  
  17. }
  18.  
  19. ?>


A wynik działania wcale się nie zmienił. Wciąż wywala, że:

Cytat
Jeszcze cię tu nie było exclamation.gif!


Zgodnie z tym dochodzę do wniosku, że kod jest oki, ale ciacho nie powstaje. Mimo ustawienia przeglądarki na akceptowanie ciastek coś może powodować że nie mogą zostać utworzone. Nie wiem czy w dobrym kierunku idę. Może ma ktoś jakiś pomysł? Będę wdziękczy za każdą sugestię i pomoc. biggrin.gif

P.S. Niby przedszkolny problem, a rozwiązania wciąż brak.

Ten post edytował merick 9.03.2006, 18:44:57
Go to the top of the page
+Quote Post
mike
post 9.03.2006, 22:41:28
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Oba skrypty działają. I ten który podałes wyżej i mój.

Twoim problmem jest to że to nie jest całość Twojego skryptu. Gdzieś wcześniej prawdopodobnie wysyłasz już nagłówki a nie możesz tego robić.
Go to the top of the page
+Quote Post
merick
post 9.03.2006, 23:31:10
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.03.2006

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


Temat zakończony. Wszystkiemu był winny firewall. Wystarczyło go wyłączyć i już wszystko działa jak należy. biggrin.gif
Dzięki za dyskusję biggrin.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: 12.06.2025 - 19:17