[php] Sessie ID wordt niet doorgegeven via URL

Pagina: 1
Acties:
  • 459 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb iets gemaakt met sessies en dat werkt allemaal lekker. Alleen is nu het probleem zodra ik cookies uitzet, dat de sessievariabele niet automatisch doorgegeven wordt in het URL. Dit zou toch wel zo werken meen ik?

Wat doe ik verkeerd?
Ik gebruik php 4.1.2

session.use_trans_sid: 1 1

Ik krijg verder ook geen foutmelding oid. De sessie werkt gewoon niet meer. Hoe kan ik dit oplossen? Ik wil het niet overal handmatig meegaan geven in het url, omdat ik dit een lelijke oplossing vind.

Acties:
  • 0 Henk 'm!

Verwijderd

Je bent nogal beperkt in je uitleg... Heb je code? etc?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zeker :) :

PHP:
1
2
3
4
5
6
7
8
9
10
session_start();
if($grootte_sessie != $grootte)
{
    $grootte_sessie = $grootte;
    session_register("grootte_sessie"); 
}
else
{
    session_register("grootte_sessie");
}


Nu start ik op de volgende pagina ook de sessie middels session_start(); en zou dan gewoon de sessievariabelen eruit kunnen halen. Met cookies aan werkt dit prima, zodra ik ze uit zet niet. Logisch, want het sessie_id wordt niet doorgegeven. Dit kan ik onderin de taakbalk zien. Vraag is waarom hij het niet doorgeef. Ik heb in phpinfo() session.use_trans_sid op 1 staan dus zou moeten werken. Vaag. :?

[ Voor 12% gewijzigd door Verwijderd op 20-03-2003 11:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
session_start(); 
if($grootte_sessie != $grootte) 
{ 
    session_register("grootte_sessie");
    $grootte_sessie = $grootte; 
} 
else 
{ 
    session_register("grootte_sessie"); 
}

Daarnaast moet je niet vergeten in iedere hierop volgende pagina ook het volgende op te nemen:
PHP:
1
session_start();

[ Voor 5% gewijzigd door Verwijderd op 20-03-2003 11:29 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jep dat doe ik ook allemaal netjes. Anders zou het met cookies ook niet werken.

Het nut van het omdraaien van die twee regels zie ik niet helemaal.

[ Voor 32% gewijzigd door Verwijderd op 20-03-2003 11:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet die 2 regels omdraaien omdat de variabele pas geset kan worden nádat 'session_register()' is uitgevoerd...

Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Bij mij werkte het ook pas toen ik zowel trans_sid aan had staan en cookies uit:
(.htaccess in mijn webmap):
code:
1
php_value session.use_cookies 0

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 16:46

RM-rf

1 2 3 4 5 7 6 8 9

hoe heb je session.use_trans_sid aangezet, in php.ini, .htaccess of in je code zelf?

in .htaccess moet je
code:
1
php_flag session.use_trans_sid on
aangeven en in de code zelf:
code:
1
ini_set('session.use_trans_sid', true);

de laatste moet je altijd definieren alvorens je session te starten.

de "1 1" lijkt me fout, waarschijnlijk een enkele '1' als integer is al een true

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die 1 1 is van local en master in mijn phpinfo() is wel goed, check maar in phpinfo().

Ik heb session.use_cookies op On staan, maar ik wil in principe ook in eerste instantie cookies gebruiken. Mocht dit niet lukken, dan moet hij automatisch het in het URL doorgeven.

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 16:46

RM-rf

1 2 3 4 5 7 6 8 9

http://www.php.net/manual/en/ref.session.php
session.use_trans_sid boolean
session.use_trans_sid whether transparent sid support is enabled or not. Defaults to 0 (disabled).

Note: For PHP 4.1.2 or less, it is enabled by compiling with --enable-trans-sid. From PHP 4.2.0, trans-sid feature is always compiled.
als je idd 4.1.2 draait is het zeer de vraag of deze is meegecompileerd, check dus of het helpt om use_cookies uit te zetten.

wil je use_cookies niet default uitzetten kun je eerst in je code laten checken of de browser van de bezoeker cookies accepteert, door een test-cookie te zetten (setcookie retourneert een true wanneer de cookie geaccepteert is) en vervolgens ini_set() te gebruiken

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goed idee om het zo te doen, helaas werkt dit ook niet.

PHP:
1
2
3
4
5
6
7
8
9
if (!setcookie("TEST", "test"))
{
    echo "true";
    ini_set('session.use_trans_sid', true);
}
else
{
    echo "false";
}


Blijft een false geven als ik cookies uitschakel.

Hoewel ik in phpinfo() niet zie dat hij gecompileerd is met --enable-trans-sid staat wel die optie verderop in in phpinfo() session.use_trans_sid op 1. Is dit nou OK of niet?

'./configure' '--prefix=/usr' '--with-apxs=/usr/sbin/apxs' '--with-gd' '--with-gettext=/usr' '--enable-safe-mode' '--with-config-file-path=/etc/httpd' '--with-exec-dir=/usr/bin' '--with-zlib' '--enable-magic-quotes' '--with-regex=system' '--with-ttf' '--with-db' '--with-gdbm' '--with-mbstring' '--with-mbstr-enc-trans' '--enable-track-vars' '--enable-wddx=shared' '--enable-mm=shared' '--enable-xml' '--enable-ftp' '--disable-debug' '--with-libdir=/usr/lib' '--with-interbase=shared' '--with-pgsql=shared' '--with-ldap' '--with-imap'

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 20 March 2003 @ 14:24:
Goed idee om het zo te doen, helaas werkt dit ook niet.

PHP:
1
2
3
4
5
6
7
8
9
if (!setcookie("TEST", "test"))
{
    echo "true";
    ini_set('session.use_trans_sid', true);
}
else
{
    echo "false";
}


Blijft een false geven als ik cookies uitschakel.
Het klopt dat dit een False oplevert aangezien setcookie niet aangeeft of het plaatsen van het cookie geslaagd is. Dit zou je pas op de volgende pagina kunnen testen. Je zou dit kunnen doen met een redirect ("header(Location=[...])" oid) maar ik weet niet zeker of ini_set('session.use_trans_sid', true); dan wel werkt. Bij mij lukte het in ieder geval niet :| .
Ik zit op dit moment eigenlijk met precies hetzelfde probleem, dus mocht je inmiddels een oplossing hebben hoor ik het graag

btw(ik gebruik php 4.3.0)

Acties:
  • 0 Henk 'm!

Verwijderd

Als je een database gebruik, kun je de sessies toch ook gewoon in de db opslaan? Als mensen dan cookies uit hebben staan, dan heb je ook geen problemen.

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 16:46

RM-rf

1 2 3 4 5 7 6 8 9

Verwijderd schreef op 05 april 2003 @ 12:33:
Als je een database gebruik, kun je de sessies toch ook gewoon in de db opslaan? Als mensen dan cookies uit hebben staan, dan heb je ook geen problemen.
:? weet je waar je het over hebt? of roep je gewoon wat termen door elkaar in de hoop interessant over te komen?

basic session-management:
- een bezoeker bezoekt een site, daarbij krijgt hij als dat het eerste bezoek is, een sessionID toegewezen, variabelen toegewezen aan dit ID zijn gedurende de hele lifetime van de session opvraagbaar.
Dus ook over verschillende pagina's die de bezoeker bezoekt gedurende zijn bezoek van de site.

De session variables worden ofwel in een database opgeslagen of, als je basic php's eigen session gebruikt in een text-file op de server.

vereistte is enkel dat je de bezoekr kunt traceren, en daar komt het cookie kijken; het session ID wordt opgeslagen in een cookie, die bij ieder http-request van de bezoeker van de site word meegestuurd.

Heeft nu een bezoeker cookies uitstaan zal dit ID dus ook niet bewaard worden en de bezoeker bij ieder bezoek een nieuw ID toegewezen krijgen, tenzij je ook het ID in ieder request als GET-variabele meestuurt. dit is echter minder veilig (alhoewel minimaal, ook cookie-sessions zij enigszins 'open' en kunnen bij slechte toepassingen makkelijk 'gekaapt' worden) en daarbij genereert zo'n ID in ieder URL meesturen 'lelijke' url's.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

Als je 4.1.2 draait kan ik je zeer aanraden te upgraden omdat deze versie nogal buggy is mbt sessies; daarbij zou ik je willen aanraden gebruik te gaan maken van superglobals en in je php.ini register_globals op 'off' te zetten.
Als register_globals al op 'off' staat, dan kan je geen gebruik meer maken van oa session_register, maar MOET je superglobals gaan gebruiken:

PHP:
1
$_SESSION['grootte_sessie'] = $grootte;

Intentionally left blank

Pagina: 1