ugrás a tartalomhoz

Cookie tartalmának kinyerése már az első látogatásnál.

randomly · 2007. Feb. 4. (V), 21.56
Sziasztok!

Volt itt egy téma amiben meg említette valaki hogy van kerülő út.
Hogy valahogyan kilehet nyerni már az első oldalnál a kiküldött cookie tartamát.
De nem találom a linket, mikor olvastam a hozzászólást meg nem követtem a linket. :-(

köszi rand
 
1

Kerülő

janoszen · 2007. Feb. 5. (H), 01.46
Hát, a tippem az lenne, hogy egy átirányítással oldódik meg a dolog, hogy átirányítod egy cookie küldő oldalra, ami rögtön továbbdob a tényleges tartalomra. Vagy valami ilyesmit el tudok képzelni...
2

De miért? :-(

randomly · 2007. Feb. 5. (H), 08.55
Szia!

De miért vagyok ily szerencsétlen. :-)

Más, ha használom az ob_start() függvényt akkor a kimenet elött a szerver feltölti a $_COOKIE tartalmát?

Persze ha van valakinek ötlete várom. :-)

rand
3

Nem értem

janoszen · 2007. Feb. 5. (H), 12.02
Mi köze lenne az ob_start-nak a cookiekhoz? A kimenet bufferelés a PHP egy belső dolga.

Kicsit megpróbálom elmagyarázni, hogy is működik egy HTTP szinten, hogy érthető legyen, miért nem olyan egyszerű ez.

Szóval, ha valaki egy böngészőből megnyitja az oldalt, akkor elküld egy HTTP kérést a szerver felé (amiben adott esetben már ott vannak a korábban elhelyezett sütik). A válasz egyetlen egy HTTP művelet lesz, amelyikben benne van, hogy szeretnél egy sütit elhelyezni. Erre azonban már nem érkezik válasz, tőleg futási időben nem. A PHP ugyanis a két HTTP művelet között fut, azaz a bemenet már megérkezett, a kimenet meg még nem ment el.

Ahhoz, hogy lásd a sütiket, egy újabb HTTP kérésre van szükség. De ilyen lekérés lehet akár egy kép is. Tehát, bármilyen egyéb információ lekérése.

A legtöbb webes alkalmazás jól megvan anélkül, hogy rögtön az első lekérésnél látná a saját sütijeit, ezért ez nem szokott problémát okozni. Ha szükség van erre, akkor nagy valószínűséggel valamilyen tervezési hiba áll fent.

Ha viszont tényleg szeretnéd megvalósítani, akkor vagy használod a redirectes megoldást, amit mondtam, vagy AJAXolsz egyet csak azért, hogy meglegyen a süti...

A legrondább, de tuti eredményre vezető megoldás az, ha beraksz a lapodra egy splash screent, avagy nyitóoldalt (ami teljesen fölösleges a felhasználó szempontjából) és ott beállítod a sütit, majd a tényleges tartalom kiszolgálásánál visszaolvasod. Ha egy kicsit több értelmet akarsz adni a nyitólapnak, oda teheted a nyelvváltást...

Sok sikert!
4

Igen tervezés.

randomly · 2007. Feb. 5. (H), 18.05
Szia!

Ha jól értem akkor cookie tartalmát küldi mindig ha kér egy oldalt?

Igen tervezési bajom van.
Röviden szeretném tudni hogy egy megrendelés mit követett el az oldalamon mielőtt vásárló lett belőle.

De sajnos éppen az első látogatásnál üres a cookie mikor ugye létrehozom neki.
És így visszatudom követni miket nézett meg és mikor.
De pont az értékes info veszik így el hogy honnan keveredett hozzám.
Persze ha van referer érték.

rand
5

Lehetőségek

janoszen · 2007. Feb. 5. (H), 18.12
Tulajdon képpen, neked statisztika kell, méghozzá egyedi felhasználói statisztika.

Azt javaslom neked, hogy session-nel próbálkozz. A felhasználók döntő többsége elfogadja a sütiket, úgyhogy nem lesz nehéz dolgod.

Azt kell csinálni, hogy minden felhasználónak van egy "történelme". Ez azt jelenti, hogy van egy életút, hogy milyen oldalakat látogatott meg. Ezt a sessionben tárolod le. Ha pedig vásárló lesz belőle, lemented a lemezre.

Persze, itt két dologra is érdemes figyelni. Az egyik az, hogy neked szigorúan véve nem egy böngészési vonalat, hanem egy fastruktúrát kell figyelned, mert lehet, hogy több ablakban is megy egyszerre. Ehhez nagyon hasznos a referer.

A másik az, hogy az első oldal lekérésénél üres lesz a történelem, úgyhogy ott még csak épp az van, hogy belépett az oldalra. A jó hír a dologban, hogy a session tömbhöz hozzáférsz menet közben is, méghozzá azonnal.

Két buktató lehet a dologban:

1. Ki vannak kapcsolva a cookiek
2. Ki vannak kapcsolva a refererek.

Ezek közül az első a nagyobb baj, a második a kisebb.

Remélem, így már boldogulsz.