Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z funkcją Header
cichy19-
post 12.09.2006, 17:54:10
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


Witam,

Używam takiego kodu:

  1. <?php
  2. if($_POST[dalej]) {
  3.  $link_powrot = "Location: ".$_SESSION[dla_doroslych]."";
  4.  
  5.  Header($link_powrot);
  6.  exit;
  7. }
  8. ?>


Coś jest z nim chyba nie tak bo nie przechodzi na inną stronę.

Wie ktoś może co może być źle?
Go to the top of the page
+Quote Post
TomASS
post 12.09.2006, 19:54:31
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


a sprawdzałeś czy if się wykonuje?
Co masz w $_SESSION[dla_doroslych]? Nie powinno być:
  1. <?php
  2. $link_powrot = "Location: ".$_SESSION['dla_doroslych']."";
  3. ?>
?

Może spróbuj:
  1. <?php
  2. if($_POST[dalej]) {
  3.  Header("Location: ".$_SESSION['dla_doroslych']);
  4.  exit;
  5. }
  6. ?>


Ten post edytował TomASS 12.09.2006, 19:54:54


--------------------
Go to the top of the page
+Quote Post
Jim
post 12.09.2006, 20:58:28
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

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


i spróbuj też
  1. <?php
  2. if($_POST['dalej']) {
  3. ?>
Go to the top of the page
+Quote Post
cichy19-
post 12.09.2006, 21:08:52
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


Niestety nic z tego nie działa. Cały czas pozostaje na tej samej stronie.

Cały kod wygląda tak:

  1. <?php
  2. if(!$_POST['akcja']) {
  3.  include "header.php";
  4.  include "restrict.html";
  5.  include "footer.php";
  6.  exit;
  7. }
  8.  
  9. if($_POST['akcja'] == 'dalej') {
  10.  if($_POST['zapisz'] == 1) {
  11. setcookie("dla_doroslych",mysql_result($res,0,"id"),time()+(3600*24*365));
  12.  }
  13.  
  14.  Header("Location: ".$_SESSION['dla_doroslych']."");
  15.  exit;
  16. }
  17. ?>
Go to the top of the page
+Quote Post
Jim
post 12.09.2006, 21:21:27
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

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


sprawdź czy w ogóle wchodzi do tego if'a, prymitywne debugowanie:
  1. <?php
  2. if($_POST['akcja'] == 'dalej') {
  3.  echo '1';
  4.  
  5.  if($_POST['zapisz'] == 1) {
  6. setcookie('dla_doroslych',mysql_result($res,0,'id'),time()+(3600*24*365));
  7. echo '2';
  8.  }
  9.  
  10.  echo '3';
  11.  echo $_SESSION['dla_doroslych'];
  12.  Header('Location: '.$_SESSION['dla_doroslych']);
  13.  exit;
  14. }
  15. ?>

zobaczysz (albo nie) gdzie szukać błędu, byćmoże zmienna $_POST['akcja'] nie jest przekazywana z formularza, lub $_SESSION['dla_doroslych'] ma złą wartość.
Go to the top of the page
+Quote Post
em_pl
post 12.09.2006, 22:35:43
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 10.12.2005
Skąd: Stalowa Wola / Wroclaw

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


hm. Jak zapisujesz do cookie to chyba musisz odczytać z cookie
$_COOKIE['dla_doroslych'] ?


--------------------
Go to the top of the page
+Quote Post
cichy19-
post 13.09.2006, 08:31:43
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


if jest wykonywane. Właśnie sprawdziłem.

Link też jest dobrze zapisany w sesji, ale powraca na tą samą stronę. Nie na tą co jest w sesji.
Go to the top of the page
+Quote Post
thornag
post 13.09.2006, 10:06:47
Post #8





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


Header z malej litery gwoli czepiania sie. Do tego wlacz E_ALL wtedy prawdopodobnie ujrzysz komunikaty ze naglowki zostaly juz wyslane. Jesli bedzie tak jak mowie to zmien php.ini, albo jesli nei chces zbadz nie masz dostepu pokaze Ci kawalek manuala:

Cytat
Pamiętaj, że header() może być wywoływana jedynie do momentu nim zostanie wysłana jakakolwiek treść, tzn. znaczniki HTML, puste linie lub wynik pracy php. Jest to bardzo częsty błąd, gdzie skrypty z funkcjami include(), require() itp. mają spacje albo puste linie przed wywołaniem funkcji header(). Problem ten pojawia się również w skryptach opartych na pojedynczym pliku php/HTML.


  1. <?php
  2. /* Ten kod powoduje powstanie błędu. Proszę zauważyć, że
  3.  * ponad wywołaniem funkcji header() znajduje się jakaś treść. */
  4. header('Location: <a href="http://www.na_przyklad.com/');" target="_blank">http://www.na_przyklad.com/');</a>
  5. ?>



Notatka: Od php 4 można użyć buforowania wyjścia aby ominąć ten problem. Wszystko, co skrypt wyśle do przeglądarki zostanie zatrzymane na serwerze do momentu, kiedy pojawi się instrukcja wysłania danych. Można to zrobić za pomocą funkcji ob_start() i ob_end_flush(), lub ustawiając dyrektywę kofiguracyjną output_buffering w pliku php.ini lub w plikach konfiguracyjnych serwera.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

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: 29.06.2025 - 10:32