Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Niedzialajacy header
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

dzis mam nietypowy problem. W srodku kodu dalem header z location na jakąs podstronę, po wykonaniu jakiegoś dzialania

dzialanie się wykonuje, ale header nie

u mnie w domu na kompie na wamp server header dziala i w linku po wykonaniu dzialania pokazuje się "index.php?wiadomosc=dzialaj_k(...)" a na serwerze elektroda.eu już ten header nie dziala sad.gif

na poczatku strony mam ustawione ob_start, a kod ładowany jest do indexu za pomocą includa

pomozcie!
Andaramuxo
Cytat
W srodku kodu dalem header z location na jakąs podstronę, po wykonaniu jakiegoś dzialania

Jeżeli dałeś po kodzie to się nie wykona, chyba, że dasz header refresh to wtedy tak.
piotrooo89
czekaj czekaj czyli header wykona się po wejściu na stronę bez wykonania kody?
thomson89
Cytat(Andaramuxo @ 27.06.2009, 13:28:42 ) *
Jeżeli dałeś po kodzie to się nie wykona, chyba, że dasz header refresh to wtedy tak.


Zawsze sie wykonywało. Albo na początku kodu, a jak w środku to dawało się ob_start(); na początku. I ty mi teraz mówisz że po kodzie się nie wykona? pfiu...

Ale piotro ma rację. dałem tak jak mówisz i niestety kod który ma się wykonać przed przekierowaniem się nie wykonuje sad.gif
DREEMus
A nie możesz sobie zrobić pliku goto.php?get=jakis_adres questionmark.gif
Chyba będzie prościej winksmiley.jpg

I w tym pliku masz możliwość index'owania linków, użycia, itd smile.gif
Pomyśl o tym smile.gif
thomson89
Nie rozumiem.
DREEMus
url > example.pl/goto.php?url=jakas_strona.pl

plik > goto.php
Kod
//tutaj masz swoje statystyki itp.
// przekierowanie
if( !empty( $_GET ) )
 {
   header( 'Location: http://'.$_GET['url'] );
 }
 else
   {
     header( 'Location: http://example.pl' );
   }


I masz z głowy, bo adres przekazujesz w zmiennej smile.gif
Może też być POST, wtedy adres będzie ukryty do przeniesienia smile.gif

PS. Znowu coś BB się sypie sad.gif
thomson89
No zastanowię się, ale pytanie było inne. czemu ten header nie działa? Jak to naprawić?
piotrooo89
a wywala jakiegoś errora? kodowanie pliku masz ok?
thomson89
kodowanie jest ustawione na utf8 a errorów nie wywala, nawet przy report e-all

trochę kodu
  1. <?php error_reporting(E_ALL); ob_start(); session_start(); ?>
  2. !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
  3. <meta http-equiv="Content-Type" content="text/html charset=utf-8" />
  4. //(...)
  5. </head>
  6. <body>
  7. //(...)
  8. <?php
  9. if(isset($_GET['go'])){
  10.    $go = $_GET['go'];
  11.        if($go=='index')
  12.            @include('materialy/index_ikony.txt');
  13.        if($go=='mysli' && $_GET['kat'] == 'all')
  14.            include('materialy/mysli_all.php');
  15.        if($go=='mysli' && $_GET['kat'] == 'ps')
  16.            include('materialy/mysli_ps.php');
  17.        if($go=='mysli' && $_GET['kat'] == 'sw')
  18.            include('materialy/mysli_sw.php');
  19.        if($go=='mysli' && $_GET['kat'] == 'jp')
  20.            include('materialy/mysli_jp.php');
  21.        if($go=='mysli' && $_GET['kat'] == 'op')
  22.            include('materialy/mysli_op.php');
  23.        if($go=='galery')
  24.            @include('materialy/galeria.html');
  25.        if($go=='sam')
  26.            header('Location:zaprojektuj.html');
  27.    }
  28. else include('materialy/index_ikony.txt');
  29.        
  30. ?>
  31.  
  32. //(...)


no i gdy kliknę link ikony.php?go=sam, to zostaję na tej stronie a przekierowanie nie działa

zaznaczę, iż u mnie na komputerze (wamp serv) wszystko działa poprawnie
#luq
Sprawdź czy zadziała (chodzi o dodanie spacji)
  1. <?php
  2. header('Location: zaprojektuj.html');
  3. ?>
in5ane
Cytat(#luq @ 27.06.2009, 16:38:13 ) *
Sprawdź czy zadziała (chodzi o dodanie spacji)
  1. <?php
  2. header('Location: zaprojektuj.html');
  3. ?>


To nie ma znaczenia, aczkolwiek ładniej wygląda kod.
#luq
Cytat(in5ane @ 27.06.2009, 22:58:55 ) *
To nie ma znaczenia, aczkolwiek ładniej wygląda kod.

Możliwe, bo szczerze nie jestem pewien czy protokół HTTP nie powinien przyjmować tego w takiej formie jak ja napisałem, i można tym manipulować zmieniając jakieś ustawienia serwa, ale to takie moje gdybanie, bo nie widzę innego racjonalnego wytłumaczenia.

Sprawdź jeszcze czy warunek jest w ogóle wykonywalny. Poza tym do takich warunków jak w kodzie stosuj switcha.
thomson89
warunek jest wykonywany, sprawdziłem 2 razy, przykładowym sprawdzeniem było danie

test.php
  1. <?php
  2. Header('Loaction: test.html');
  3. ?>


i w test.html wielki czerwony napis "work" sad.gif (not work sad.gif)


danie spacji po loaction nic nie dało

no a co z tymi ustawieniami serwera mówiłeś?

sami zobaczcie

http://gl-art.domowy.elektroda.eu/test.php
erix
A co mamy zobaczyć...?

Masz w ogóle PHP włączone?
thomson89
Tak, PHP jest włączone. W tym teście dodałem phpinfo jak ktoś nie wierzy.

Macie zobaczyć że strona się nie przekierowuje.

W test.php daję header na http://gl-art.domowy.elektroda.eu/phpinfo.php.

Wejdźcie na http://gl-art.domowy.elektroda.eu/test.php i jak zobaczycie phpinfo to się będę cieszył.
nitek
Cytat(thomson89 @ 29.06.2009, 23:03:49 ) *
Wejdźcie na http://gl-art.domowy.elektroda.eu/test.php i jak zobaczycie phpinfo to się będę cieszył.


No to powodu do radości nie masz - pusta strona..
erix
Pisz do admina, bo my nie pomożemy.
thomson89
Nigdy nie umiecie pomóc jak pomoc jest naprawde potrzebna!
zegarek84
dałeś ob_start() ale nie widzę a więc dopiero po skończeniu wykonywania skryptu wykonuje się u Ciebie domyslnie ob_end_flush() - ogólnie nigdy nie możesz wysłać treści zanim nie wyślesz nagłówka - nagłówki zawsze muszą byćć wysłane pierwsze - to kiedy wyślesz treść możesz właśnie buforować ale nie za bardzo to widzę u Ciebie...

np. tam gdzie ja miałem ustaloną wcześniej treść na końcu kodu mam coś takiego co wyczyści treść:
  1. <?php
  2. if (!$modified)
  3. {
  4.    ob_end_clean();
  5.    header('HTTP/1.1 304 Not Modified');
  6. }
  7. header("ETag: $etag");
  8. if (!$modified) exit;
  9.  
  10. ?>
viking
A co w pliku test.php robi znak BOM? Zanim zaczniesz robić cokolwiek dalej lepiej żebyś zrozumiał jak wygląda transmisja w sieci: http://tworzenie-stron-www.org/strony-www/...1/protokol_http
zegarek84
żeczywiście - rozmiar strony głównej 3bajty - ale jakby ie było to wysłał treść wcześniej niż nagłówki....
nitek
faktycznie, to pewnie będzie BOM.
prawdopodobnie twój edytor nie radzi sobie z kodowaniem utf-8. zaopatrz się w jakiś, który sobie z tym poradzi..

btw.
Cytat(thomson89 @ 1.07.2009, 10:26:35 ) *
Nigdy nie umiecie pomóc jak pomoc jest naprawde potrzebna!

fajnie że doceniasz, że jednak wszyscy starają się pomóc. Tak trzymaj!
erix
Cytat
Nigdy nie umiecie pomóc jak pomoc jest naprawde potrzebna!

Nigdy ktoś nie umie poszukać, jak można coś znaleźć.

Poszukaj o BOM, było.
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.