/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
session uden cookie med ini_set
Fra : Lars Bo Jensen


Dato : 24-09-02 13:13

Hvis man ikke vil bruge cookies til at lave sessions, kan man skrive

ini_set('session.use_cookies',0);

Så laves der ikke cookie per default. Manualen skriver "If you are using
cookie-based sessions, you must call session_start() before anything is
output to the browser."
(http://us.php.net/manual/en/function.session-start.php). Men selvom jeg
slår session.use_cookies fra med ini_set(), er jeg nødt til at starte min
session før alt andet output til browseren. Hvorfor?



 
 
Jesper Brunholm (26-09-2002)
Kommentar
Fra : Jesper Brunholm


Dato : 26-09-02 10:50

Jeg er sammen med Lars Bo om projektet, og vil gerne prøve at uddybe
spørgsmålet, da jeg er ret sikker på at nogen af jer ved noget om det
han har spurgt om.

Det hele går ud på at vi har lavet en søgemaskine til en database med et
par bibliografier. For at lette pagingen, og muligheden for at søge i
foregående resultat, lægger vi så hit-id's i en session-variabel.

(Dette gør selvfølgeligt at man ikke kan videregive sin
søgeresultat-URL, men det problem løser vi ad anden vej)

Vi begyndte med bare at sætte en session, men fik omgående "error -
output allready sent by..." fejl. Den fejl mente vi så at kunne føre
tilbage til at der blev brugt cookies til session-oprettelsen, så derfor
følgende:

Lars Bo Jensen wrote:
> Hvis man ikke vil bruge cookies til at lave sessions, kan man skrive
> ini_set('session.use_cookies',0);

Problemet er imidlertid persistent også efter at sessions _ikke_ skal
køre igennem cookies - og det er så her vi undrer os, da vi ikke kan se
nogen dokumentation i manualen, på at sessions skal startes før noget
andet output.
Er der en grund til at de skal det, og _skal_ de det, eller ligger
fejlen et andet sted?

> Så laves der ikke cookie per default. Manualen skriver "If you are using
> cookie-based sessions, you must call session_start() before anything is
> output to the browser."
> (http://us.php.net/manual/en/function.session-start.php). Men selvom jeg
> slår session.use_cookies fra med ini_set(), er jeg nødt til at starte min
> session før alt andet output til browseren.

pf tak for alle hints - det virker nu, men vi forstår ikke hvorfor vi er
nødt til at starte sessionen oppe i headeren. Vi vil gerne forstå også
- det er lidt frustrerende at have brugt en del tid på et problem,
manuallæsning osv, og kun være nået til en løsning, men ingen
videreførbar forståelse

Venligst

Jesper Brunholm


Martin Seebach (26-09-2002)
Kommentar
Fra : Martin Seebach


Dato : 26-09-02 12:37


"Jesper Brunholm" <nospam@brunholm-scharff.dk> wrote in message
news:amul8f$lcs$1@news.net.uni-c.dk...
> Problemet er imidlertid persistent også efter at sessions _ikke_ skal
> køre igennem cookies - og det er så her vi undrer os, da vi ikke kan se
> nogen dokumentation i manualen, på at sessions skal startes før noget
> andet output.
> Er der en grund til at de skal det, og _skal_ de det, eller ligger
> fejlen et andet sted?

Lad være med at bruge PHP sessions hvis du ikke vil have cookies. Du kan
heller ikke ændre den værdi med ini_set.

Lav i stedet en simpel tabel med kolonnerne session_id, dataname og
datavalue og lav et par funktioner til at hente og gemme en bestemt værdi
udfra navnet. Session ID laver du med uniqid (se eksempel i manualen) og
overfører manuelt som GET variabel. Så nemt er det.


--
Venlig hilsen
Martin Seebach
- min email adresse virker..



Niels Andersen (26-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 26-09-02 13:54

Jesper Brunholm wrote in <amul8f$lcs$1@news.net.uni-c.dk>:
> Det hele går ud på at vi har lavet en søgemaskine til en database med et
> par bibliografier. For at lette pagingen, og muligheden for at søge i
> foregående resultat, lægger vi så hit-id's i en session-variabel.

Det lyder som en underlig løsning. Er en søgning virkelig så kompleks, at
den ikke bare kan foretages hver gang man bladrer? Sådan gør fx. Google, og
de har da en rimelig stor database, hvor der bliver lavet nogle temmeligt
avancerede søgninger...

> (Dette gør selvfølgeligt at man ikke kan videregive sin
> søgeresultat-URL, men det problem løser vi ad anden vej)

Hvis side ét fx. ser sådan ud:
?search=søgeord
Så kunne side to se sådan her ud:
?search=søgeord&page=2
eller:
?search=søgeord&pagesize=10&page=2
jeg kan lige nævne en mere:
?search=søgeord&first=11

Alle med udgangspunkt i 10 resultater pr. side.

> Vi begyndte med bare at sætte en session, men fik omgående "error -
> output allready sent by..." fejl. Den fejl mente vi så at kunne føre
> tilbage til at der blev brugt cookies til session-oprettelsen, så derfor
> følgende:

Tjoh... Jeg ville nu bare føre den tilbage til, at i starter sessionen for
sent. :)

> Lars Bo Jensen wrote:
>> Hvis man ikke vil bruge cookies til at lave sessions, kan man skrive
>> ini_set('session.use_cookies',0);
>
> Problemet er imidlertid persistent også efter at sessions _ikke_ skal
> køre igennem cookies - og det er så her vi undrer os, da vi ikke kan se
> nogen dokumentation i manualen, på at sessions skal startes før noget
> andet output.

Det lyder godt nok lidt sjovt. Men det er ikke noget i forhold til at slå
cookies fra.
Måske er der ingen der har testet det særligt grundigt, eller også er
efterspørgslen så lille, at ingen har rettet det.

Lad bare cookies være slået til. Hvis det giver problemer, så er det ikke en
løsning at slå det fra, det er højest en omvej uden om problemet.

> Er der en grund til at de skal det, og _skal_ de det, eller ligger
> fejlen et andet sted?

Jeg kender ikke lige nogen grund, men har heller ikke forsket i det. Jeg
starter bare sessionen før output, så fungerer cookies også.


Det var ikke lige svar på jeres spørgsmål, men det er de tanker jeg gør mig,
som erfaren PHP-udvikler, og det kan måske hjælpe jer videre. :)

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste