Autor Zpráva
quatzael
Profil
Ahoj, mám prosím jeden rychlej dotaz.
Když budu mít ve scriptu třikrát po sobě zadanej header, nějak takto:

header("Location: /sranka1/index.php", true, 303);
header("Location: /sranka2/index.php", true, 303);
header("Location: /sranka3/index.php", true, 303);

Můžu se spolehnout, že to vždy přesměruje na stranka1 a ostatní bude ignorovat?
Alphard
Profil
Proč bys to dělal?

RFC to zakazuje „A sender MUST NOT generate multiple header fields with the same field name in a message unless either the entire field value for that header field is defined as a comma-separated list [i.e., #(values)] or the header field is a well-known exception (as noted below).“
Chování bude nedefinované, nemůžeš se na to spolehnout.

juriad [#5]:
Dobrá připomínka, zapomněl jsem, že PHP dělá před odesláním hlaviček ještě tuto mezivrstvu.
Fisir
Profil
Reaguji na quatzaela:
Ne.
TomášK
Profil
Ne, porušuješ protokol (Location header může být v odpovědi jen jednou).
juriad
Profil
quatzael:
Je to přesně naopak. Tím true říkáš, že nahrazuješ předchozí hodnotu hlavičky Location, tedy by se měla odeslat jen ta poslední, nikoli ta první.
quatzael
Profil
Mám tam ve skutečnosti nějaký podmínky if a úplně to nejde vyřešit pomocí elseif, protože je to různě v includovaných skriptech.
Nějak takto:

if (neco) header("Location: /sranka1/index.php", true, 303);
header("Location: /sranka2/index.php", true, 303);



Ještě by to asi šlo vyřešit tím, že bych za každý ten header dal exit;, ne? Může to tak být?
Keeehi
Profil
quatzael:
Ještě by to asi šlo vyřešit tím, že bych za každý ten header dal exit;, ne? Může to tak být?
Dost často se to tak dělá.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: