Portál AbcLinuxu, 10. května 2025 02:36

Dotaz: PHP zjisteni hlavicky

19.3.2009 18:35 Marki
PHP zjisteni hlavicky
Přečteno: 565×
Odpovědět | Admin
ahoj vsem

nevedel by nekdo jak v PHP zjistit jaka je hlavicka aktualne nactene stranky?

priklad, kdyz z predesle stranky pouziju tohle :

header("HTTP/1.0 404 Not Found");

a v aktualni strance bych potreboval nejakou podminku

if(!HTTP/1.0 404) {

echo "Hlavicka je 404..";

}else{

echo "Hlavicka neni 404..";

}

predem dekuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

AraxoN avatar 19.3.2009 23:12 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Odpovědět | | Sbalit | Link | Blokovat | Admin

PHP je ten, kto určuje aká bude na výstupe hlavička, takže takéto testovanie nedáva zmysel. Samotný fakt, že sa spustil PHP interpret, väčšinou znamená, že sa o 404 nejedná.

Je možné v apachi nastaviť redirect 404 (a iných) na PHP skript, v takom prípade ten PHP skript dostane informáciu o pôvodnom chybovom kóde do $_SERVER["REDIRECT_STATUS"].

Amarok avatar 20.3.2009 15:51 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Vase reseni je v pouziti souboru .htaccess, prectete si o tom neco (jen pozor - ne kazdy webhosting to povoluje). Jak uz tady psal nekdo prede mnou, resit tohle pres php nejde. Info o htaccess napr tady.
GNUniverse - May the source be with you...
20.3.2009 19:26 l4m4
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Proč? Z PHP lze poslat jakoukoli opověď: 302, 404, 403, ...

Ale původní otázka fakt nedává smysl, takže těžko říci, co na ni odpovědět.
20.3.2009 21:52 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Poslat ano, ale ne ji číst, protože je to v podstatě právě PHP, kdo rozhodne o tom, jaká bude.
~ w w w w (oo)   [oo] w w w w ~
21.3.2009 13:01 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
A nelze je číst pomocí headers_list, nebo http://cz2.php.net/manual/en/function.apache-response-headers.php ? Zdá se mi, že tyto fuknce by na to mohly být.
21.3.2009 13:25 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Použiť by sa to asi dalo, ale ten skript vie, akú hlavičku poslal, takže je zbytočné, aby to zisťoval pomocou tej funkcie.
21.3.2009 14:57 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Otázka zní: proč se skript má ptát na něco, o čem sám rozhoduje s konečnou platností?
~ w w w w (oo)   [oo] w w w w ~
Amarok avatar 21.3.2009 15:52 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Ja to prave pochopil tak, ze tazatel chce pri vyskytnuti chyby 404 (page not found) spustit urcitou cast php skriptu. Cili ten .htaccess to podle me dobre vyresi, predhodi se tam proste urcita php stranka a tam skript pokracuje.
GNUniverse - May the source be with you...
21.3.2009 16:13 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Já dotaz pochopil tak, že tazatel už je ve skriptu, a snaží se poznat, jestli už situace má kód 404. Přiznávám ale, že ta možnost, že by se tam dostal přes ErrorDocument v .htaccessu mě nenapadlo :-)

Sečteno a podtrženo, z toho mála, co tazatel napsal, se dá vyvodit, že pravděpodobně chce mít .htaccess, v něm ErrorDocument nastavený na ten skript, který obsluhuje chybové i normální stavy, a chce ty stavy rozlišit. Potom by měla pomoct ta proměnná $_SERVER["REDIRECT_STATUS"].
~ w w w w (oo)   [oo] w w w w ~
Toman avatar 21.3.2009 21:01 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možný návod k řešení
Have you tried turning it off and on again? | tomaskavalek.cz | Google
23.3.2009 18:32 Marki
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to asi takto, kdyz system vyhodnoti nejakou spatnou url, tak tam mam to, aby to odeslalo header("HTTP/1.0 404 Not Found"); POZOR: neni tam Location, tak se nic nepresmerovava, ale jen se odeslou hlavicky a to ja bych potreboval zjisit, ze se odeslali a spustit tak jinou cast scriptu.. Ted to resim tak, ze kdyz odeslu hlavicky ta kzaregistruji k tomz jeste nejakou session a tu pak kontroluju jestli existuje, tak vim ze byli odeslany patricne hlavicky, ale to je takove skrabani se levou rukou na prave strane hlavy :(

myslel jsem ze to musi jit jednoduseji, a hlavne bez htaccess, ciste jen v php

dekuji
23.3.2009 19:18 Ash | skóre: 53
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Takže máte něco jako
tam mam to, aby to odeslalo header("HTTP/1.0 404 Not Found"):

if($spatneurl) {
  jen se odeslou hlavicky
  header("HTTP/1.0 404 Not Found");
}
else {
  echo "nazdar";
}

a to ja bych potreboval zjisit, ze se odeslali (ti hlavičkové)
if($se_odeslali) { // tohle jako nevíte???
  a spustit tak jinou cast scriptu..
  jinacastskriptu();
}
else {
  exit;
}
???
23.3.2009 19:35 Marki
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Ano, presne tak to je..
AraxoN avatar 23.3.2009 21:15 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky

Existuje taký sofistikovaný programátorský koncept, ktorý by sa tu dal použiť (pozor: len pre EXPERTOV!!!). Hovorí sa tomu "premenná" a funguje to ako taký šuflík, do ktorého niečo vieš uložiť a neskôr odtiaľ vybrať keď to potrebuješ. PHP tento koncept šuflíkov podporuje cez symbol $ (dolár). Ale do väčších detailov by som asi nemal zachádzať, lebo to je naozaj ťažká veda. :-D

23.3.2009 22:33 Ash | skóre: 53
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
V místě kde odesíláte hlavički :) použijte něco jako:
$hlavickove_odesli = true;
a dál ve skriptu můžete následně testovat:
if($hlavickove_odesli) {
  neco delej
}
Nebo na to "testování url" použijte nějakou metodu a finální rozhodnutí poslat/neposlat si vraťte jako návratovou hodnotu:
$hlavicki = testurl(...);

if($hlavicki) {
  header(....)
}

if($hlavicki) {
  neco delej
}
Jinak obvyklé bylo dříve hlavičky považovat za neživotné, a hovořit o nich jako o věcech které odešly. Ale zdá se, že to je dneska věc vkusu, zvlášť když lidé umí dřív if-then-else než mama-papat :)
23.3.2009 22:08 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Buďto jsem v PHP nikdy neprogramoval, nebo se tu bavíme o tak pokročilých věcech, že jsem si jen myslel, že se v PHP jazyku a HTTP protoklu vyznám, anebo bys měl nejdřív zkusit něco jednoduššího, třeba ukládání hodnot do proměnných a pak testování hodnot proměnných v if konstrukci, nebo meleme já o voze a Ty o koze... jinak to nevidím.
~ w w w w (oo)   [oo] w w w w ~
23.3.2009 20:34 Marki
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste upresnim pojem odeslali, nechci kontrolovat ze se ted odeslali, ale ze se ted nacita stranka ktera ma hlavicku !HTTP/1.0 404

diky
23.3.2009 21:34 luky
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Tohle?

$status = 404;
header("HTTP/1.0 404 Not Found");
...
if ($status == 404)
    ...

To si snad děláš legraci.
23.3.2009 22:21 Marki
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
vzdyt rikam, ze s tim headerem jeste ukladam session, ta kjak pise luky

$status = 404; header("HTTP/1.0 404 Not Found"); ... if ($status == 404) ...

tak ja mam

$_SESSION['error'] = true; header("HTTP/1.0 404 Not Found");

if (!empty($_SESSION['error'])); {................. ....... }

ale jak jsem jiz psal.. je to neprilis dobre reseni.. proto hledam nejakou vlastni fci od php.. ale patrne nic neexistuje..
23.3.2009 22:37 Ash | skóre: 53
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Existuje, říká se tomu "proměnná".

$error = true; header("HTTP/1.0 404 Not Found");

if ($error); {................. ....... }

Samozřejmě pokud vás z nějakého obskurního důvodu zajímá i později na dalších a dalších stránkách v rámci jedné session že jste někdy v minulosti odeslal nějakou stránku s 404, pak zcela správně použijte session, PHP si takovou blbost samo od sebe pamatovat nebude, není k tomu žádný důvod.
23.3.2009 22:50 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Tak já to asi blbě chápu. Proč ukládáš do session? To potom testuješ při nějakém úplně jiném načtení té stránky?

Já to zatím chápal, že to funguje takhle nějak:

Zavolám URL www.neco.cz/tajemny_skript.php?stranka=blebleble

Tvůj tajemny_skript.php se někam podívá, jestli zná stránku blebleble. Pokud ano, spustí se ta část skriptu, která nějak zobrazí stránku blebleble. Pokud ji nezná, spustí se ta část skriptu, která Ti řekne, že tu stránku nezná.

Tzn. na uvedené URL se mi zobrazí něco jako "neznámá URL", zatímco na www.neco.cz/tajemny_skript.php?stranka=marki se mi zobrazí třeba stránka s Tvojí fotkou.

Co jsem pochopil špatně?
~ w w w w (oo)   [oo] w w w w ~
25.3.2009 19:37 moira | skóre: 30 | blog: nesmysly
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Nacita kde? V prohlizeci? Co znamena "nacita"?
Překladač ti nikdy neřekne: "budeme kamarádi"
26.3.2009 19:44 Marki
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechme teto k nicemujdouci debaty.. :-( Necham to tak jak to mam..
26.3.2009 19:58 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
Rozbalit Rozbalit vše Re: PHP zjisteni hlavicky
Ta debata je jdoucí k tomu, o co se vlastně pokoušíš, protože buďto to tu nikdo nepochopil, nebo už jsi odpovědi dostal.
~ w w w w (oo)   [oo] w w w w ~

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.