Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cookies i PHP
Forum PHP.pl > Forum > Przedszkole
slawa
Napisalem skrypt ktroy stawia cookies. Jesli jest w osobnym pliku wszystko dziala dobrze, jesli natomiast wstawie go na moją stronę (include) skrypt nie dziala. Problem jest w tym ze nagłówek strony został juz wyslany:
Kod
Warning: Cannot modify header information - headers already sent
. NIe wiem jak to ominąc. Moze ktos ma jakis pomysł. Prosze o pomoc.
dr_bonzo
Czlowieku troche samodzielnosci: wpisz w wyszukiwarke "Cannot modify header information" i znajdziesz odpowiedz.
slawa
Przestudiowalem to co znalazlem na forum i przeczytalem artykul i niestety dalej nie moge sobie z tym poradzic. Moze ktosChodzi o to ze mam strone w której znajduje się formularz po wypelnieniu którego nastepuje przekazanie wartosci do cookies. Strona z formularzem jest jedną ze stron której zawartosc jest dolączana przy pomocy menu w momencie klikniecia na linka. Wyczytalem o jakiejs funkcji ob_flush, ale nie wiem gdzie ją umiescic:
- na początku strony głównej, na ktorej znajduje sie menu i caly layout strony?
- na początku strony ze skryptem?
- czy mam skorzystac z funkcji header, jesli tak to w jakik sposo, na co ma wskazywac ten header?

Bylbym wdzieczny za pomoc.
slawa
Wstawiam tu fragmenty moich plików, bo juz na prawde nie wiem co z tym zrobic. Moze to komus pomoze i napisze mi co i gdzie mam pozmieniac.

plik index.php, czesc odpowiedzialna za nawigacje:

  1. <? 
  2. ini_set('arg_separator.output', '&amp;');
  3. ?>
  4. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  5. <html xmlns=\"http://www.w3.org/1999/xhtml\">
  6. <head>
  7. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />
  8. <title>Techniki Internetowe</title>
  9.  
  10.  
  11. <style type=\"text/css\">
  12. <!--
  13. body{
  14. background-image: url(gfx/tlo_all.gif);
  15. margin-top: 0px;
  16. margin-bottom: 0px;
  17. text-align:center;
  18.  
  19. }
  20.  
  21. <?
  22.  
  23. $page = $_GET['page']; 
  24.  
  25. if(!isset($page)){ include(&#092;"strony/identyf_form.php\"); } 
  26. else if($page==1){ include(&#092;"strony/dodaj_uz_form.php\"); } 
  27. else if($page==2){ include(&#092;"strony/log_form.php\"); } 
  28. else if($page==3){ include(&#092;"strony/wylogowanie.php\"); } 
  29. else if($page==4){ include(&#092;"strony/przypomn_form.php\"); } 
  30. else if($page==5){ include(&#092;"strony/zmien_haslo_form.php\"); }
  31. else if($page==7){ include(&#092;"strony/logowanie_form.php\"); }
  32. else if($page==10){ include(&#092;"strony/zmien_haslo.php\"); } 
  33. else if($page==8){ include(&#092;"strony/dodaj_uz.php\"); }
  34. else if($page==9){ include(&#092;"strony/przypomnij.php\"); }
  35. else if($page==12){ include(&#092;"strony/tajna.php\"); }
  36. else if($page==13){ include(&#092;"strony/identyfik_out.php\"); } 
  37.  
  38. else echo &#092;"Taka strona nie istnieje :)\"; 
  39.  
  40. ?>


formularz z ktorego dane przekazywane sa do cookies?

  1. <? 
  2. if (isset ($cookie1) )
  3. {
  4. echo &#092;"Juz tu kiedys byles\";
  5. }
  6. else
  7. {
  8.  
  9. echo &#092;"<b>Odwiedziłeś tą stronę pierwszy raz. Podaj swoje dane.</b><br/>\";
  10. echo '<form action=\"strony/identyfik.php\" method=\"post\">';
  11. echo 'Imie: <br/><input type=\"text\" name=\"imie\"></input></br>';
  12. echo 'Nazwisko: <br/><input type=\"text\" name=\"nazwisko\"></input></br>';
  13. echo 'Wiek: <br/><input type=\"text\" name=\"wiek\"></input></br>';
  14. echo 'Wiek: <br/><input type=\"text\" name=\"licznik\"></input></br>';
  15. echo '<br/><input type=\"submit\" name=\"wyslij\" value=\"Wyślij\"></input></br>';
  16. }
  17. ?>
  18.  
  19.  
  20.  
  21. </form>


skrypt który stawia cookies

  1. <?
  2. $imie=$_POST['imie'];
  3. $nazwisko=$_POST['nazwisko'];
  4. $wiek=$_POST['wiek'];
  5. $licznik=$_POST['licznik'];
  6. setcookie (&#092;"cookie1\", \"$imie\",time()+3600*24*360);
  7. setcookie (&#092;"cookie2\", \"$nazwisko\",time()+3600*24*360);
  8. setcookie (&#092;"cookie3\", \"$wiek\",time()+3600*24*360);
  9. setcookie (&#092;"cookie4\",\"1\",time()+3600*24*360);
  10.  
  11. ?>
dr_bonzo
A kiedy jest uruchamiany skrypt do wysylania ciastek? Przed/po ktorym?
slawa
plik index.html->formularz->skrypt który stawia ciastko
Diwi
Wstaw sobie we wszystkich skryptach na początku komende
  1. <?php
  2.  
  3. // i na końcu
  4.  
  5. ?>


Już nie powinno ci wyświetlać takiego błędu

Pozdrawiam
vanike
Hmm... a ja to myślę, że problemem jest pusta linia przed kodem <? ?>
Z doświadczenia zawsze pusta linia jest początkiem transmisji, a potem już nie można zmieniać nagłówka - i to mówi ten błąd.

Pozdrawiam.
Pigula
w skrocie w pliku index.php

  1. <?php ob_start(); ?>
  2.  
  3.  
  4. </head>
  5. <?php setcookie();
  6. ?>
  7. </body>
  8. </html>
  9. <?php ob_end_flush(); ?>



nie ma sily zeby nie poszlo a potem moze kombinowac jak poprawic do potrzeb danego przypadku
dr_bonzo
slawa:
sam sobie odpowiedziales:
Cytat
plik index.html->formularz->skrypt który stawia ciastko

Wysylasz tekst do przegladarki zamin utworzysz ciasteczko:
Robisz to w index
  1. <?php
  2. <!DOCTYPE html PUBLIC &#092;"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  3. <html xmlns=&#092;"http://www.w3.org/1999/xhtml\">
  4. (...)
  5. ?>

w formularzu:
  1. <?php
  2. if (isset ($cookie1) )
  3. {
  4. echo &#092;"Juz tu kiedys byles\";
  5. }
  6. else
  7. {
  8.  
  9. echo &#092;"<b>Odwiedziłeś tą stronę pierwszy raz. Podaj swoje dane.</b><br/>\";
  10. (...)
  11.  
  12. ?>




Cytat
Wstaw sobie we wszystkich skryptach na początku komende [ob_start() i ob_flush() na koncu]


To nic nie da -- skrypty beda wypisywaly dane do przegladarki tak jak to robily do tej pory:
index -- wydrukuje swoja zawartosc kiedy napotka ob_flush() na swoim koncu; tak samo formularz.

Daj ob_start() na poczatku pierwszego skryptu i ob_flush() po tym jak utworzysz ciasteczko.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.