phpbar.de logo

Mailinglisten-Archive

[php] Wo werden Cookies gespeichert.

[php] Wo werden Cookies gespeichert.

Ralf Geschke php_(at)_phpcenter.de
Tue, 9 Apr 2002 19:02:29 +0200


On Die, 09 Apr 2002, Jochen Metzger wrote:

> Genau so machen wir das auch. Es gibt halt nur den kleinen Schönheitsfehlerm
> daß obwohl das Cookie gesetzt ist, der Server das erst auf der nächsten
> Seite
> erfährt (wir also auf der Seite, wo wir das Cookies das erste Mal setzen)

Ist doch vollkommen irrelevant, wann der Server dies erfaehrt.

> und wir somit trotzdem die session_id als GET -Variable (Parameter) anfügen
> müssen oder machen , weil wir
> das mit header-redirect nett wollen (wg. Suchmaschinen).

Ihr muesst auch anfuegen, wenn der Nutzer Cookies ablehnt. Wie
macht Ihr das denn?
Ich will mich um so'n Kram eigentlich nicht kuemmern. ;-)

Was bei der PHPLIB die Funktion purl() war, ist bei meiner
Session-Klasse die Funktion $ses->wurl() bzw. angepasst auf
die nativen PHP4-Session-Funktionen eben ausserhalb der Klasse. 

Jegliche URL, die in der Anwendung existiert, wird mit
dieser Funkton behandelt, also z.B. wurl($PHP_SELF). 
Je nach Bedarf wird die Session-ID als GET-Parameter 
angefuegt oder eben nicht. 

Natuerlich koennte man dies auch mit der Konstanten SID machen, 
aber dann muss man auf Parameter achten oder haette ein
ueberfluessiges Fragezeichen in der URL stehen, oder man 
bedient sich eines Konstrukts wie
$url . "?" . session_name() "=" session_id()  - naja, 
ist mir innerhalb des Codes viel zu umstaendlich und
fehlertraechtig. 

Falls es jemand braucht:

/**
 * Add the session id to the GET parameter in an URL.
 * This function returns the given URL with inserted session id as
 * first parameter. 
 *
 * This code is an extract of apolda web tool suite, (c) by Ralf Geschke,
 * licensed under GNU Lesser General Public Licence (LGPL).
 * A few modifications are made to use it with the native session functions,
 * and not as part of the s2lib session class.
 * 
 * _(at)_param   string $url
 * _(at)_return  string $wurl
 */
function wurl($url)
{
    if (SID == "") 
	return $url;
    $session_name = session_name();
    $session_id = session_id();
    if (preg_match("/^(.*)\?(.*)/",$url,$ma))
    {
	if (preg_match("/(.*?)&*" . $session_name . "=(.*?)(&.*|$)/",$ma[2],
		       $ma2))
	{
	    $wurl = $ma[1] . "?" . $session_name ."=" . $session_id;
	    if ($ma2[1]) $wurl .= "&" . $ma2[1];
	    $wurl .= $ma2[3];
	}
	else
	{
	    $wurl = $ma[1] . "?" . $session_name . "=" . $session_id . "&" 
		. $ma[2];
	}     
    }
    else
    {
	$wurl = $url . "?" . $session_name . "=" . $session_id;
    }
    return $wurl;
}

Beste Gruesse,
   Ralf
-- 
: www  : http://www.bttr.org  :  mail: ralf_(at)_bttr.org
: Eine Site rund um MySQL     :  http://www.bttr.org/mysql/
: Privacy now! My Public Key  :  http://www.bttr.org/geschke.asc


php::bar PHP Wiki   -   Listenarchive