Pystyykö PHP:llä jotenkin pakottamaan sessiotunnuksen niin, että se tallennettaisiin aina johonkin lomakkeen hidden-kenttään evästeen sijaan?
Oletuksenahan se session_start()-funktio taitaa luoda aina evästeen käyttäjälle, mutta haluaisin laittaa sessiotunnuksen liikkumaan hidden-kenttään, että sessio toimisi myös käyttäjillä joilla ei ole evästeet päällä. En halua myöskään, että sessiotunnus liikkuu get-parametrinä, koska joku voi kädettää sen kanssa jos antaa kaverille osoiteriviltä linkin.
EDIT: Tarkemmin manuaalia lueskeltuani, kommenteissa sanotaan seuraavaa:
jounier kirjoitti:
If the page contains a form, PHP automaticaly adds a hidden field it uses to pass the SID by POST. In that case, the SID is invisible in the URL.
Ymmärsin tuon niin, että jos sivuilla on lomake, niin PHP tunkee sessiotunnuksen siihen. Ilmeisesti tuo voisi siis toimia siten, että printtaat joka sivulle formin, jonka metodi on post, ja asetat kaikki linkit lähettämään tuota tietoa eteenpäin (JavaScript / kaikki linkit buttoneiks, ehanaa). En tätä testannut, ja kuten alla mainitaankin niin sivuilla voisi olla maininta, että keksit käyttöön jos tahdot kirjautua. Tuo lomake-systeemi kun rikkoo aika pahasti Back-namiskan.
Ei ainakaan itelle tule ihan heti mieleen miten sessio-id:n saisi formiin "automaattisesti". Käsin sen voit toki tehdä, mutta miten ajattelit sivulta toiselle siirtymiset sitten toteuttaa? Aina lähettämällä formin?
Itse lähestyisin asiaa siltä kantilta, että käyttäjällä pitää olla evästeet päällä, jotta voi käyttää palvelua.
Blah, hidas... :(
Hmm... voi olla kyllä sitten parasta, että systeemin pistäisi vaatimaan evästeet.
Sekö onnistuu ihan tällä PHP:n manuaalista löytyvällä käskyllä?
session.use_only_cookies
Edit
Taitaa olla ohjelmointiputkassakin tuo asetus päällä kun ei sano kirjautuminen mitään jos kytkee selaimesta evästeet pois päältä.
Ohjelmointiputkassa ei käsittääkseni käytetä PHP:n sessioita vaan pelkästään keksejä. Itsekkään en ole vielä kertaakaan käyttänyt sessioita, vaikka PHP-koodia on jokunen vuosi tullut väännettyä. Kekseillä saa aivan saman toiminnallisuuden aikaan, eikä ole koodi niin riippuvainen PHP:n asetuksista yms.
Hmm.. entäpä jos sivuilla on paljon tilatietoa, jota pitää liikutella. Eikö silloin kannata kuitenkin käyttää sessioita? Esim. webbikaupan tuotteet tms.
Itellä on yksi webbikauppa just työn alla ja ite ajattelin tunkea kaikki tiedot kantaan. Keksiin vain se sessio-id. Mutta toki tuo sessiokin on ihan toimiva (helppo) ratkaisu tuollaisen tiedon tallentamiseen.
Ymmärsinkö nyt oikein, että tallennat sessiot suoraan kantaan, ajv? Itse kannattaisin juurikin tämmöistä lähestysmistapaa sessioiden kanssa. Ostoskorin sisällön tallentaisin suoraan keksiin. Ostosten kirjaamisessa serverille on tietysti se etu, että vaikka selain kaatuisi niin ostoslista säilyy siellä kannassa. Ostosten valinta on yleensä kuitenkin suht nopea tapahtuma.
Siis joo, tässä webbikaupassa (kuten monesti muutenkin) mulla on kannassa sessio-taulu, jonne tulee tuo sessio-id.
Edit: ja tosiaan ostoskori kantaan juuri tuon takia, jos selain sattuu kaatumaan. Ja voihan sitä selailla sit mitä porukka on meinannu ostaa ja pistää tarjous-spämmiä sen perusteella vaikka juuri kohderyhmälle :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.