probleme mit session in 2.2

hallo,

als erstes habe ich schonmal einen solchen post erstellt und wollte den wieder suchen. leider finde ich den aber nicht mehr. wenn denn einer finden sollte, dann bitte bitte gebt ihn mir - vielleicht ist dann mein problem gelöst.

ansonsten schreibe ich hier nochmal mein problem:

für ipshomecontrol nutze ich sessionmanagement um verschiedene usern verschiedene zugriffe zu gestatten.

früher in der 2.1 hatte ich dazu z.b. session_register(‚login‘) verwendet.

da nun aber session_register deprecated (veraltet) ist und bald entfernt wird, würde ich gerne $_SESSION[login’] verwenden.

jedoch bekomme ich immer einen „undefinied index“, google recherchen haben ergeben, das wohl „session.autostart“ aktiviert sein müssten, diese sind jedoch laut phpinfo() nicht aktiviert.

ich möchte aber in der neuen version ohne änderungen an der php.ini auskommen (da ja mittlerweile ips so komfortabel ist und die module selber lädt und php.ini anpasst), damit wäre auch probleme mit überschriebene php.ini’s gelöst (waren in der letzten zeit sehr oft).

könnt ihr mir bei meinem problem helfen?

p.s.: in der alten version hatte ich immer folgendes aktiviert in der php.ini, ich würde aber gerne wie gesagt ohne änderungen in der php.ini auskommen:

[Session]
session.save_handler = „files“
session.save_path = „E:\ip-symcon\session“
session.auto_start = 0
session.use_trans_sid = 1
session.name = „pt“

Warum die Session nicht selber starten? (PHP: session_start - Manual)

Man sollte zur Sicherheit vorher überprüfen, ob die session nicht doch schon da ist (PHP: session_id - Manual)

Geht ganz ohne Änderungen an php.ini

Tommi

die idee ist gut, aber leider geht das bei mir nicht - auch nicht mit anderen beispielen aus dem web.

ich habe eine seite1.php mit folgendem:

<?php
session_start();
$_SESSION['wert'] = 'funktioniert';
echo("Session:<br><br><a href=seite2.php?" . SID . ">Weiter</a>");
?>

dazu eine seite2.php mit folgendem:

<?php
session_start();
echo("Wert ist: " . $_SESSION['wert']);
?>

aber ich erhalte immer folgende meldung:

Notice: Undefined index: wert in C:\IP-SYMCON\web\IPSH2007R2\seite2.php  on line 3
Wert ist: 

wo ist da der denkfehler, oder ist das ein ips problem - ich meine wenigstens ein paar von den beispielen im web müssten doch gehen.

hmm, habe mal die seite1.php wie folgt geändert:

<?php
session_start();
$_SESSION['wert'] = 'funktioniert';
echo("Session:<br><br><a href=seite2.php?" . SID . ">Weiter</a>
    <br><br>Wert ist: " . $_SESSION['wert']);
?>

nun kommt:

Session:

Weiter

Wert ist: funktioniert

Also wird die Session gestartet und auch Werte reingeladen, aber auf der zweiten Seite werden die Daten nicht übergeben, oder ist die Session nicht mehr mit gestartet.

Der Link ist jedoch so: http://development/ipsh2007r2/seite2.php?PHPSESSID=7bb6022b62c3deb8061e614a2ee99ca7

und die url in der browserleiste der seite2.php ist: http://development/ipsh2007r2/seite2.php?PHPSESSID=7bb6022b62c3deb8061e614a2ee99ca7

sieht doch eigentlich alles richtig aus, oder wo mache ich den fehler?!?

edit:

strange, ich lasse mir gerade in der seite2.php die sid anzeigen, diese ist aber nicht die selbe wie in der in der adressleiste angegebene, sondern eine andere. kann es sein das die session nicht übernommen wird und neu gestartet wird?

im php manual steht jedoch „session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf, die auf der Session-ID basiert, die mit einer Anfrage, z.B. durch GET, POST oder ein Cookie, übermittelt wurde.“

habe aber die selben scripte mal auf meinem webserver getestet, da funktionieren die einwandfrei.

hmm - habt ihr noch ideen?!?

ok, habe mal die ausgaben von phpinfo() von meinem webserver und ips verglichen, die parameter die sich unterschieden habe ich mal manuel in die php.ini vom ips gehauen, waren diese parameter hier:

session.cookie_httponly = on
session.gc_divisor = 1000
session.hash_bits_per_character = 5
session.save_path = C:\IP-SYMCON\Session
session.use_only_cookies = off

nachdem testen habe ich dann rausgefunden, das es an der einstellungen „session.use_only_cookies = off“ liegt.

habe das nun wieder aus der php.ini raus und setze vor dem session_start() ein:
ini_set(‚session.use_only_cookies‘, ‚off‘);

damit geht es dann.

schreibe mal das ganze detailiert, vielleicht hilft es ja mal irgendjemanden :).

Die Sessionhandler brauchen ja irgendwas zum Abspeichern. Entweder beim Client (Cookie) oder auf dem Server mit Files. Cookies werden oft vom User abgeklemmt. Meistens liegt es daran, das der Server-Prozess nicht auf das mit session.save_path angegebene Verzeichnis darf oder es nicht existiert. Der Dienst hat ja nicht automatisch die Berechtigung dafür.

Tommi

das war das erste was ich versucht hatte (session.path), berechtigungen waren auf jeden fall richtig und wert war gesetzt, dennoch klappte es nicht.

hatte den teil versucht, mit dem php.ini änderungen der vorherigen version - damit klappte es aber auch nicht.

wie geschrieben, mit dem oberen teil klappt es - endlich :).

danke für deine hilfe tommi.

Hi,

kannst du mir nochmal Details zu deiner Lösung nennen?
Ich versuche gerade PhpMyAdmin auf dem Webfront zum Laufen zu bringen, was aber aufgrund der Session Probleme nicht klappt.

Das hier habe ich bereits vor dem session_stat eingetragen:

ini_set('session.use_only_cookies', 'off');

leider ohne Erfolg.

Gruß Thorsten