Diskuze: session_start() a header()
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Mno, myslel jsem, že to se do obsahu nepočítá A navíc to DOCTYPE tam musí
být, ne?
ty funckce pro session a header pracují s hlavičkami HTTP. Hlavička HTTP vypadá třeba následovně:
HTTP/1.1 200 OK
Date: Thu, 05 Jun 2014 17:53:19 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=10, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
<!DOCTYPE html>
...
TO úplně první, říka, že se jedná o HTTP 1.1 a nedošlo k chybě tudiž se posílá stavový kód 200. ty další ve formátu klíč:hodnota jsou hlavičky, které nastavuješ s pomocí funkce header, tyto hlavičky musí být v dokumentu úplně první i před jeho obsahem. Pokud však mu před hlavičkami pošleš doctype, tak on už ty hlavičky nenajde, protože je hledá jenom na začátku. Funkce session používá také hlavičky a proto také musí být volána před jakýmkoliv výpisem.
Takže DOCTYPE až pod php blok?
musíš si to představit. Cokoliv je mimo blok PHP se posílá automaticky (tudfiž potom už nemůžeš poslat hlavičky). V bloku PHP se kód zpracovává a odesílat můžeš pomocí různých funkcí (např. echo, var_dump, die, ...) cokoliv ty funkce odešlou znamená, že jsi přišel o možnost posílat hlavičky. právě proto se doporučuje dát blok PHP na začátek a tam odeslat všechny hlavičky. V praxi si však všechny tyto souvislosti musíš uvědomit. Mám např 50 řádkový kód a header volám na 49 řádku. prostě těch předchozích 48 nepracuji s výstupem, který jde k uživateli.
Díky moc, pomohlo to a vše funguje skvěle
Zobrazeno 7 zpráv z 7.