# SESSION im Internet Explorer geht nicht!



## darko m. (12. Februar 2005)

Hallo

Ich hab so eine webseite erstellt, bei der man sich zuerst anmelden muss.
Dann wird der benutzername in ein SESSION gespeicher und auf der nächsten seite angezeigt.
z.B:
Weclome "benutzername"

Leider laufen die Sessions nur Firefox richtig. Im internet Explorer erscheint nur das.

Welcom ""

Also das heisst das er etwas mit den sessions falsch macht.
Kann jemand helfen?
Der Code sieht so aus:
//erste seite
<?php
session_start();
$_SESSION['benutzername'] = $benutzer;
?>

//zweite Seite
<?php
session_start();
echo $_SESSION['benutzername'];
?>


----------



## Timbonet (12. Februar 2005)

Ich tippe mal auf die Sicherheitseinstellungen des Internet Explorers, also eigentlich keine PHP-spezifische Frage.


----------



## bled (12. Februar 2005)

Kann es sein, dass du im IE Cookies deaktiviert hast?


----------



## Hawkster (12. Februar 2005)

tut ihr mir ma nen gefallen?

kurze erklärung was session_register eigentlich bringt.

Wenn ich session_register("user"); mach muss ich doch dann $_SESSION['user_XXX']; machen oda?

MFG Hawkster


----------



## bled (12. Februar 2005)

Also meine Referenz hier (PHP5 Referenz - Databecker) sagt, dass das zum speichern ohen $_SESSION ist.
Das ist zum Beispiel dazu gut, um eine Abwärtskompatibilität zu garantieren. ($_SESSION gibts sei PHP4.2)
Dann hat man halt zum Beispiel eine Variable, die $test heißt und in der der String "test" steht.
Normalerweise würdest du das ja jetzt so machen:
$_SESSION['test']="test";
Aber hier würde das so gemacht werden:
$test="test;
session_register(test);

Das wars eigentlich auch schon.

EDIT:
Die Session wird dann übrigens so benutzt, dass du nur $test angibst, wenn du den Wert haben willst, anstatt $_SESSION['test']


----------



## darko m. (12. Februar 2005)

Wieso läuft den das im Firefox und nicht im Internet Explorer.
Hab es scho bei meinem Bruder getestet.
Bei ihm geht es auch nicht.
(ich hab auch das PHP 5 - Referenzen von databecker).
Im Firefox liest er den benutzername immer korrekt raus.


----------



## bled (12. Februar 2005)

Wie Timbonet und ich schon geschrieben haben, könnte das mit den Sicherheitseinstellungen zutun haben.
Hast du denn schonmal nachgeschaut, ob im IE Cookies erlaubt sind?


----------



## Hawkster (12. Februar 2005)

Versuch ma folgendes:


```
<?
session_start();
session_register("test");
$_SESSION['test_name'] == "hallo";

echo $_SESSION['test_name'];
?>
```


----------



## darko m. (12. Februar 2005)

Mit "register" klappts auch nicht. (ja.. cookies sind aktiviert)


----------



## Oliver Gringel (12. Februar 2005)

Da Sessions rein serverseitig laufen (bis auf den Cookie), kann es nicht am Browser liegen.


----------



## darko m. (12. Februar 2005)

Kannst du mir dann sagen wieso das es nicht geht?
Habs noch mal probiert beim IE die Cookies immer zuzulassen ist aber nicht gegangen.
Ich habe es sogar im Internet probiert auf meiner Webseite und Lokal auf meinem PC.
(Lokal habe ich XAMPP)
Und immer ist das gleiche Resultat raus gekommen. Firefox geht, IE nicht.


----------



## than (12. Februar 2005)

Guten Abend.

Ich wollte gerade genau den selben Thread eröffnen. Ich habe ein Gästebuch selber programmiert mit einem Session überwachten Admin Bereich. Auf meinem PC (XAMPP) läuft alles wunderbar, aber im Internet - ich konnte mich ein einziges mal einloggen, danach nie mehr. Die Session wird nicht "richtig" gestartet- oder gesetzt.

Mein Session Login Script basiert auf dem Tutorial welches hier im Forum zu finden ist: http://www.tutorials.de/tutorials9684.html

Nun habe ich mal einen neuen Ordner im Internet (webspace) erstellt und das exakte Login Script (wie oben im Link verwiesen) gebastelt und das Problem ist dort auch. Also weiss ich das ich keine Fehler eingebaut habe.

Der Mozilla und Opera Loggen sich ein, aber im IE 6 geht es nicht.

Wäre sehr an einer Lösung interessiert. Cookies sind auch an, und die IE Sicherheutsstufen sind alle auf Standart.

Grüsse, Than


----------



## Oliver Gringel (13. Februar 2005)

Es kann nur daran liegen, dass der IE den Cookie nicht mitschickt. Warum das so ist, weiß ich auch nicht, aber es ist mit Sicherheit kein PHP-Problem, sondern ein IE-Problem.


----------



## Sven Mintel (13. Februar 2005)

Postet mal beide einen Link zu den Problemkindern.... da es definitiv ein Browserproblem ist, kann man es nur lösen, wenn man es mit dem Browser testet.

Abgesehen davon.... ihr solltet euch vielleicht prinzipiell darauf einstellen, dass man Cookies deaktivieren kann. Es bringt daher nicht viel, sich darauf zu versteifen... vielmehr solltet ihr an daran arbeiten, die SESSION's auch ohne Cookies aufrecht zu erhalten.


----------



## Oliver Gringel (13. Februar 2005)

Sven Mintel hat gesagt.:
			
		

> Abgesehen davon.... ihr solltet euch vielleicht prinzipiell darauf einstellen, dass man Cookies deaktivieren kann. Es bringt daher nicht viel, sich darauf zu versteifen... vielmehr solltet ihr an daran arbeiten, die SESSION's auch ohne Cookies aufrecht zu erhalten.


Nur leider sind Cookies die einzige Möglichkeit, die Session-ID vom Client zum Server zu übertragen, die sicherheitstechnisch tragbar und für den User zumutbar ist.


----------



## Sven Mintel (13. Februar 2005)

Dieses Argument ist gut und schön.
Ich könnte auch argumentieren.... ein Auto fährt mit Benzin. Aus Sicherheitsgründen sollte man jedoch kein Benzin im Tank haben :suspekt:


----------



## Mephiston (13. Februar 2005)

Ich habe auch ein Problem mit meinen Sessions und zwar, dass das nur funktioniert, wenn man Cookies anhat. Man kann ja aber auch per URL die Daten übertragen und somit können Cookies auch deaktiviert sein richtig? Nur konnte/wollte mir auf meine hier in einem anderen Thema gestellten Fragen keiner erklären wie ich das mache. Vielleicht kann das hier mal einer machen.
Gruß
Thorsten


----------



## Oliver Gringel (13. Februar 2005)

Das kannst du theoretisch in der php.ini einstellen, bedeutet aber ein wahnsinniges Sicherheitsrisiko, und sollte deshalb niemals verwendet werden.


----------



## Mephiston (13. Februar 2005)

Hm ok dann eine andere Frage: Bei vielen Foren wird hinter dem Dateinamen ?sid=slkdjsdkljödjsölk geschrieben. Wozu ist das dann? 
Gruß
Thorsten


----------



## Oliver Gringel (13. Februar 2005)

Das ist die Session-ID.


----------



## Mephiston (13. Februar 2005)

Ja aber wozu wird die denn genau gebraucht? Für die Übergabe von Variablen brauch man die dann wohl nicht oder?
Gruß
Thorsten


----------



## Oliver Gringel (13. Februar 2005)

Die Session-ID wird gebraucht, um eine Session einem Client zuzuordnen. Irgendwoher muss der Server ja wissen, welche Session zu welchem Client gehört.


----------



## Mephiston (13. Februar 2005)

Also wenn man ein Skript schreibt, auf das mehrere User gleichzeitig zugreifen können sollen und das mit Sessions arbeitet dann sollte man die SID mitübertragen in der URL sehe ich das richtig?
Gruß
Thorsten


----------



## Oliver Gringel (13. Februar 2005)

Nein, die Session-ID sollte man niemals in der URL übergeben. Fast alle Provider haben das auch deaktiviert.


----------



## Sven Mintel (13. Februar 2005)

Oliver Gringel hat gesagt.:
			
		

> Nein, die Session-ID sollte man niemals in der URL übergeben. Fast alle Provider haben das auch deaktiviert.



Erstaunlich, wie tutorials.de mit diesem Problem zurechtkommt.... hier wird die Session-ID auch per URL übermittelt(wenn man Cookies aus hat)... von negativen Auswirkungen hab ich bisher nix gehört.

Es steht doch ausser Frage, dass das nicht der optimale Weg ist, um eine Session aufrecht zu erhalten.... bloss irgendwie muss man es halt machen, wenn man  die Session braucht.

Um das anzustellen verwende [phpf]ini_set[/phpf] mit *session.use_trans_sid*


----------



## Oliver Gringel (13. Februar 2005)

Sven Mintel hat gesagt.:
			
		

> Erstaunlich, wie tutorials.de mit diesem Problem zurechtkommt.... hier wird die Session-ID auch per URL übermittelt(wenn man Cookies aus hat)... von negativen Auswirkungen hab ich bisher nix gehört.


Das wird wohl daran liegen, dass es
1. relativ unwahrscheinlich ist, dass jemand an die Session-ID kommt. Der einzig denkbare Fall wäre, dass ein User z.B. in einem Internetcafé auf Tutorials.de surft, und dabei Cookies ausgeschaltet hat. Der nächste, der sich an diesen PC setzt, geht in die Browser-History, und schon ist er bei Tutorials.de angemeldet.

2. niemanden was bringt, wenn er als anderer User bei Tutorials.de angemeldet ist. Im schlimmsten Fall macht er ein paar böse Posts, oder ändert Passwort und eMail-Adresse des Users, so dass der Account futsch ist.

Wenn er aber an den Zugang eines Moderators oder gar Administrators kommt, schaut das ganze schon anders aus. Aber ich denke mal, dass keiner der Moderatoren / Administratoren hier so blöd ist, und sich in einem Intranetcafé (oder anderem öffentlich zugänglichen Computer) auf Tutorials.de anmeldet, ohne sich wieder abzumelden.

Es hängt also grundsätzlich davon ab, wie schlimm es ist, wenn jemand anderes an einen Useraccount kommt, und wie sehr man auf die Sorgfalt der entsprechenden User vertrauen kann.

Deshalb im Zweifelsfall immer use_trans_sid abstellen.
Da es ja keinen Grund gibt, warum man Cookies deaktivieren sollte, sollte das für die User ja kein Problem darstellen.


----------



## Mephiston (13. Februar 2005)

Also mal sehen ob ich das jetzt richtig verstanden habe:

wenn ich bei mir ini_set(session.use_trans_sid,"1") mache dann wird die SID in der URL übertragen? Muss ich da sonst noch was machen?
Gruß
Thorsten


----------



## Sven Mintel (13. Februar 2005)

Theoretisch ja... praktisch gibts einen umständlicheren Weg, der das Sicherheitsproblem jedoch enorm reduziert.

Verwende in Links und Formularen die Konstante SID ...auf diese Weise wird die Session-ID nur  per GET übermittelt, wenn es über Cookies nicht geht.


----------



## darko m. (13. Februar 2005)

emm....

Kann ich den Benutzernamen auch per URL weiterleiten aber das der Benutzername auf allen seiten verfügbar ist? 
Wenn ja, wie?


----------



## Oliver Gringel (13. Februar 2005)

Das kannst du schon. Einfach den Benutzernamen immer an die URL hängen. Aber um sich diese Arbeit zu sparen, gibt es Sessions. Dann musst du dich nicht mehr um die Weitergabe kümmern.


----------



## darko m. (13. Februar 2005)

eben...
Ich schau dann mal weiter im Internet nach Lösungen.


----------



## darko m. (19. Februar 2005)

Juhuuuu...
Ich habs herausgefunden.
Ich hab bei http://www.nic.ch.vu einen Domainnamen gemietet.
Jetzt habe ich festgestellt, wenn ich direkt den Link der Seite eingebe (also nicht
den Domainname von nic.ch.vu) funktionieren die Sessions.

 ;-]


----------



## Timbonet (19. Februar 2005)

Das liegt nur an den Sicherheitseinstellungen des IE, der dabei die Cookies von Drittanbietern blockt.


----------



## froddie (19. Februar 2005)

es liegt nicht an den cookies direkt , die der IE blockt. 
SP2 hat jetzt als Standart, dass Sessionvariablen (auch sitzungsvariablen) nicht gespeichert werden.

Hatte das selbe Prob mit 3 usern und mcih lange gewundert bis cih rausgefunden hatte, worans liegt.

Wenn ihr eure User nicht dazu "zwingen" wollt, die sitzungsvariablen freizugeben,. muss mal über die url übergeben.

Für mich is das allerdings nicht die Lösung, mir ist es zu unsicher....


----------



## Timbonet (19. Februar 2005)

Cookieverwaltung ist Sache des Browsers und nicht des Betriebssystems.


----------



## froddie (19. Februar 2005)

mag sein nur dass sp2 einiges am iegleich mitverändert  ;-) 
oder irr ich mich da (popupblocker und co?)


----------



## Tark (20. Februar 2005)

Moinsen, 

 lachwech.... ihr habt eigentlich alle Recht... wollte ich mal nur so anmerken... *fg* Zwar alle einwenig an einander vorbei....aber alle Richtig.... löl. Echt gut. 

 Ne also ich wollte das auch nur mal so mit dem IE anmerken. Das ist ein Prob von dem M$-Produkt und was auf alle Fälle auch noch verstärkt wird wenn die Domainangaben nicht richtig konfiguriert sind.... also Domain Path, Domain Name, etc. im Cookie oder als Server Var. Gänzlich abloosen wird er wenn es dann auch noch ein virtueller Server ist der mit http://Servername/~user_name/ angesprochen wird.  

   ansonsten kann ich nur sagen ihr solltet einfachmal auf folgende URL gehen: 

http://www.php.net ->Dokumentation 

   und dann dort mal die Parts 
   - Sessionverwaltung, 
 - Globale Variablen ($_GLOBALS, $_SESSION, $_HTTP_GET_VARS, $_HTTP_POST_VARS, $_POST, $_GET, $_COOKIE, etc) und dessen Geltungsbereiche
   - php.ini 

   durchlesen. Dort steht eigentlich alles schön sauber incl. Copy&Paste Comments von Usern  
   Auch was Trans_ID, SID,  PHPSESSID, etc angeht...

 Bei dieser Geschichte sollte sich jeder auch mal via phpinfo() über seine ServerVars informieren um diese Werte gegebenenfalls richtig einzustellen. Ich meine damit das ServerVars auch überschrieben werden können und für dieses Script/Session einen anderen Wert zugewiesen bekommen um solche Fehler zuvermeiden.

 gruß 
 Tark


----------



## than (6. März 2005)

froddie hat gesagt.:
			
		

> es liegt nicht an den cookies direkt , die der IE blockt.
> SP2 hat jetzt als Standart, dass Sessionvariablen (auch sitzungsvariablen) nicht gespeichert werden.
> 
> Wenn ihr eure User nicht dazu "zwingen" wollt, die sitzungsvariablen freizugeben,. muss mal über die url übergeben.


 
Ich hab die mal bei mir im IE freigegeben aber die Session bleiben dennoch nicht erhalten. Demnach würde es nicht zutreffen was Du gemeint hast, oder habe ich da etwas falsch verstanden?


----------



## matzseesi (17. Juli 2007)

Hi Leute,

Folgendes habe ich noch als Kommentar bei php.net unter der Beschreibung von Sessions gefunden:


```
********************WARNING***********************

There's a bug in Internet explorer in which sessions do not work if the name of the server is not a valid name. For example...if your server is called web_server (_ isn't a valid character), if you call a page which uses sessions like http://web_server/example.php your sessions won't work but sessions will work if you call the script like this

[IP NUMBER]/example.php

Took me a lot of time to find out why my PHP sessions worked perfectly in Firefox and Opera but they didn't work in internet explorer

***************************************************
```

Dies löste z.B.: mein Problem 

Gruß

Matz


----------

