Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z funkcją Header
Forum PHP.pl > Forum > PHP
cichy19-
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?
TomASS
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. ?>
Jim
i spróbuj też
  1. <?php
  2. if($_POST['dalej']) {
  3. ?>
cichy19-
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. ?>
Jim
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ść.
em_pl
hm. Jak zapisujesz do cookie to chyba musisz odczytać z cookie
$_COOKIE['dla_doroslych'] ?
cichy19-
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.
thornag
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.
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.