trans_sid und Headers
Mike©
- php
Moin @ All,
ich arbeite mit Sessions, da das ja leider nur funktioniert wenn Cookies gesetzt werden könne, habe ich für den Fallback die trans_sid aktiviert.
Das funktioniert auch wunderbar, allerdings nur bei Links. bei header ( "Location: blub.php" ) funktioniert das nicht. Nun habe ich mir gedacht das ich die SID halt anhänge, also so:
header("Location: blub.php?PHPSESSID=$PHPSESSID");
bzw
header("Location: blub.php?PHPSESSID=$SID");
Leider funktioniert das nicht, die Session Variablen scheinen verloren.
Allerdings habe ich mal folgendes versucht:
<?
@session_start();
echo $SID; oder echo $PHPSESSID und beide Variablen scheinen unbelegt zu sein, also keine Ausgabe.
Nun meine Frage(n): Stimmt es, das bei trans_sid und header die SID nicht übergeben wird?
Warum zeigen die echos nichts an?
Danke & regds
Mike©
Hello,
Allerdings habe ich mal folgendes versucht:
<?
@session_start();
echo $SID; oder echo $PHPSESSID und beide Variablen scheinen unbelegt zu sein, also keine Ausgabe.
Warum benutz Ihr eigentlich immer alle die alten globaleb Variablen, obwohl hier seit mindestens 18 Montaten (in der letzten Zeit seltener) diskutiert wird, dass register_globals in Zukunft per Default ausgeschaltet bleibt?
$sid = session_name().'_'.session_id();
Und das kannst Du dann anhängen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
$sid = session_name().'_'.session_id();
muss natürlich ein '=' sein.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin Tom,
$sid = session_name().'_'.session_id();
muss natürlich ein '=' sein.
ich werde das asap testen. Stimmt meine Vermutung bzgl. Headers?
regds
Mike©
Hello,
$sid = session_name().'='.session_id();
ich werde das asap testen. Stimmt meine Vermutung bzgl. Headers?
Nein, abgesehen, dass Du in einem Location-Header eine vollständige URL mit Scheme (also 'http://') angeben musst, sehe ich keine Probleme, die Parameter mit zu übergeben.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin Tom,
Nein, abgesehen, dass Du in einem Location-Header eine vollständige URL mit Scheme (also 'http://') angeben musst, sehe ich keine Probleme, die Parameter mit zu übergeben.
anscheinend nicht, den es funktioniert ohne http und ohne vollständigen Pfad. Also PHP Dateien in gleichen Verzeichnis werden so ohne weiteres gefunden.
Allerdings meinte ich nicht das Funktionieren mit angehängter SID, sondern via trans_sid. Das scheint nicht zu funktionieren.
regds
Mike©
Hello,
Nein, abgesehen, dass Du in einem Location-Header eine vollständige URL mit Scheme (also 'http://') angeben musst, sehe ich keine Probleme, die Parameter mit zu übergeben.
anscheinend nicht, den es funktioniert ohne http und ohne vollständigen Pfad. Also PHP Dateien in gleichen Verzeichnis werden so ohne weiteres gefunden.
Dazu sag ich jetzt mal nix, das überlass ich den Anderen ;-))
Allerdings meinte ich nicht das Funktionieren mit angehängter SID, sondern via trans_sid. Das scheint nicht zu funktionieren.
Nein, das Verändern von Funktionsargumenten ist fpr Trans_Sid genausowenig vorgesehen, wie das Verändern von JavaScript-Elementen. Das wäre dann nämlich der nächste Spezialfall.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Nein, abgesehen, dass Du in einem Location-Header eine vollständige URL mit Scheme (also 'http://') angeben musst, sehe ich keine Probleme, die Parameter mit zu übergeben.
anscheinend nicht, den es funktioniert ohne http und ohne vollständigen Pfad.
es ist aber trotzdem _falsch_.
Allerdings meinte ich nicht das Funktionieren mit angehängter SID, sondern via trans_sid. Das scheint nicht zu funktionieren.
nein, natürlich nicht.
bei der konfigurationsoption url_rewriter_tags sind doch die stellen angegeben, wo die SID automatisch angehängt wird ...
gruß,
wahsaga
Moin wahsaga,
deine Ansagen wie immer kurz und präzise ;-)
es ist aber trotzdem _falsch_.
Nun, ich wollte vermeiden, bei einer Änderung des Hosts die Scripte anpassen zu müßen. Allerdings könnte ich das ja über eine Variable regeln.
nein, natürlich nicht.
bei der konfigurationsoption url_rewriter_tags sind doch die stellen angegeben, wo die SID automatisch angehängt wird ...
Sorry, ich vergaß wohl zu sagen, das der WebServer ein IIS ist. IMHO gibt es dort keine url_rewrite_tags
regds
Mike©
hi,
Nun, ich wollte vermeiden, bei einer Änderung des Hosts die Scripte anpassen zu müßen. Allerdings könnte ich das ja über eine Variable regeln.
jepp. in $_SERVER findest du die passenden werte, schau's dir einfach mal mit print_r() an.
Sorry, ich vergaß wohl zu sagen, das der WebServer ein IIS ist. IMHO gibt es dort keine url_rewrite_tags
doch - das ist eine konfigurationsoption von PHP, ob apache, IIS oder huselgnumpf als webserver ist egal.
gruß,
wahsaga
Moin wahsaga,
doch - das ist eine konfigurationsoption von PHP, ob apache, IIS oder huselgnumpf als webserver ist egal.
du hast (wie meistens) Recht. Ich habe das bei phpinfo() gefuden:
url_rewriter.tags: a=href,area=href,frame=src,input=src,form=,fieldset=
Kann ich das auf "Header" erweitern und wenn ja wie?
regds
Mike©
hi,
url_rewriter.tags: a=href,area=href,frame=src,input=src,form=,fieldset=
Kann ich das auf "Header" erweitern und wenn ja wie?
ich würde vermuten, nein.
header() ist ja kein "tag", das im erzeugten output vorkommt - den durchsucht PHP nämlich, um zu schauen, wo die SID ggf. anzuhängen ist - sondern ein PHP-befehl. da wären wir ja quasi schon bei selbstmodifizierendem code, wenn das ginge ;-)
an per location-header "aufgerufene" URLs musst du m.E. die SID ggf. immer manuell anhängen.
gruß,
wahsaga
Hi!
$sid = session_name().'_'.session_id();
muss natürlich ein '=' sein.
Ein kleiner Tipp am Rande:
http://de2.php.net/manual/de/ref.session.php#session.constants
Grüße
Andreas
Hello,
$sid = session_name().'_'.session_id();
muss natürlich ein '=' sein.
Ein kleiner Tipp am Rande:
http://de2.php.net/manual/de/ref.session.php#session.constants
Wenn Du 'SID' meinst, die ist nur geladen, wenn keine Session-ID empfangen wurde (über Cookie) und nur vorhanden, wenn eine Session gestartet wurde, also auch, wenn gerade eben eine Session gestartet wurde.
In diesem Falle würde das wahrscheinlich passen, aber es ist keine allgemeingülige Lösung für die Ermittlung des Name-Value-Paares der aktiven Session.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom!
http://de2.php.net/manual/de/ref.session.php#session.constants
Wenn Du 'SID' meinst, die ist nur geladen, wenn keine Session-ID empfangen wurde (über Cookie) und nur vorhanden, wenn eine Session gestartet wurde, also auch, wenn gerade eben eine Session gestartet wurde.
In diesem Falle würde das wahrscheinlich passen, aber es ist keine allgemeingülige Lösung für die Ermittlung des Name-Value-Paares der aktiven Session.
Ja, exakt dieses steht unter dem oben genannten Link. Mir ist bisher noch kein andere Einsatzzweck bekannt, wo ich "session_name=session_id" brauchte, als der vom AP genannte. Wenn man die Konstante SID dann an Links/Location-Header hängt, hat es den Vorteil, dass die ID wirklich nur angehängt wird, wenn es sein muss (ohne Cookies). Ich mache das halt immer damit ;-)
Grüße
Andreas
Hi!
Wenn Du 'SID' meinst, die ist nur geladen, wenn keine Session-ID empfangen wurde (über Cookie)
Nein, die Konstante hat in diesem Fall den Wert ''. Was ich wie gesagt sinnvoll finde.
Grüße
Andreas
Hello,
Wenn Du 'SID' meinst, die ist nur geladen, wenn keine Session-ID empfangen wurde (über Cookie)
Nein, die Konstante hat in diesem Fall den Wert ''. Was ich wie gesagt sinnvoll finde.
Wieso nein?
Du sags doch das gleiche. Die Konstante ist nur geladen, wenn im Request keine Session-ID zum eingestellten Sessionnamen gefunden werden konnte. Angelegt ist sie aber.
angelegt --> Eine Variable existiert, ~ Adresse und Typ wurden vergeben
geladen --> Die Variable enthält einen gültigen Wert
zweiteres lässt sich in reinen Kompilersystemen nur dann feststellen, wenn man dem Wertebereich des Typs mindestens einen Wert entzieht (wie z.B. beim guten alten FAT), der keinen Wert, sondern einen Steuerschlüssel darstellt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi!
angelegt --> Eine Variable existiert, ~ Adresse und Typ wurden vergeben
geladen --> Die Variable enthält einen gültigen Wert
Gut, habe "nicht geladen" anders interpretiert.
Grüße
Andreas
Moin @ All,
mit einer Kombination aus Tom's und wahsaga's Antworten habe ich das jetzt so gelöst, und es funktioniert wunderbar.
<?
@session_start();
$sid = session_name().'='.session_id();
....
header("Location: http://$_SERVER[HTTP_HOST]/einstellungen.php?$sid");
....
Danke an alle.
regds
Mike©