Kezdőoldal » Számítástechnika » Weblapkészítés » Session start miért nem bir...

Session start miért nem bir indulni a headers miatt?

Figyelt kérdés

Üdv, hát próbálkozok működni a sessionnel, de a következő hibaüzenetet küldi:

" session_start(): Cannot start session when headers already sent "

Próbáltam már választ találni a neten, és csak annyit találtam , hogy elég jellemző probléma, de megoldást nem igazán találtam rá,

igazából a headers szerepét sem értem, nem ismerem.

A segitséget előre is köszönöm.

Csak érdemi, segitő választ várok. Köszönöm.



#session, #php,
2021. febr. 4. 18:56
 1/4 anonim ***** válasza:
84%

Na akkor sorban haladva építsük fel a weboldadat:

Egy weboldal úgy működik, hogy szabályos HTTP kéréseket küldesz a szerverre, amire szabályos HTTP válaszokat kapsz. Egy HTTP csomag, ami megy a két pont között, lényegében áll egy fejlécből (ez a header), és egy tartalomból (body, vagy payload, nem tudom már http-nél hogy hívják).

A header tartalmazza azokat az információkat, hogy milyen verzió megy, mit szeretnél csinálni (lekérdezés, vagy beküldés a két jellemző [GET és POST] ), mi a te IP címed, és ki a címzett (vagyis a szerver akinek küldöd a kérést). A tartalomban meg maga a html van, amit a böngésző megjelenít.

Na ez most PHP-nél hogy jelenik meg:

Kap a szerver egy kérést egy adott php fájlra, a PHP környezet lefuttatja a fájlt, és generál egy kimenetet, amit elküld -ez a kimenet egy http csomag, fejléccel, és utána mindennel amit te írsz ki.

Na most létezik egy olyan, hogy session: ez egy szerveroldali módszer arra, hogy eltároljon változókat, főleg sütik helyett használják (mert biztonságosabb és gyorsabb). Ezt a session-t, amit most mondjuk magyarul úgy fogok hívni hogy tranzakció (csak hogy megértsd, úgyhogy szakik ne kössenek bele hogy az egész más), és ezt a tranzakciót el kell indítani/inicializálni hogy működjön.

Csakhogy mi van, ha már elkezdte a PHP összerakni a HTTP választ, amikor elindítod a tranzakció-kezelőt?

Ebben az esetben módosítania kéne a megkezdett csomagon, ami felesleges munka lenne, így nem is engedi. Ez az a hibaüzenet, amit kaptál, hogy már elküldte a fejlécet, amikor piszkálni próbálod.

Ennek megoldása esetedben: azelőtt kell elindítani a "tranzakciót" vagyis session-t, hogy bármit csinálna, vagyis a kódjaid legeslegesleges-legelején, még a html tagek meg minden más előtt.

Vagyis ha megnyitsz egy fájlt, így kell kezdődnie:

<?php

session_start();

és csak ezután jöhet bármi más.

Ha továbbra sem érted, akkor írj privátban.

2021. febr. 4. 19:18
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Még azért egy apróság előző válaszához, úgy tudom az is fontos, hogy <?php előtt ne legyen semmi karakter, láthatatlan sem, azaz üres sor stb.., gondot okozhat.
2021. febr. 5. 09:55
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

#2, igazad van, első vagyok, azt már elfelejtettem leírni. Sőt, UTF8 kódolás esetén a BOM is okozhat gondot, ha van.

De majd a kérdező leírja, segített-e neki a válaszunk :)

2021. febr. 5. 13:01
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Igen, sajna anno belefutottam, csak ezért írtam..

:)

2021. febr. 5. 13:11
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!