Antworten
$_SESSION[$kundenname1];
Nein, das sollte nicht gehen. $_SESSION[
"kundenname
"];
2.
Zitat:
Oliver Albers postete
$_SESSION[$kundenname1];
Nein, das sollte nicht gehen. $_SESSION["kundenname"];
OK, ich habs jetzt geändert. Leider wird immer noch nix angezeigt.
Sobald ich den ersten submit drücke wird die Session-Datei erzeigt und es steht auch alles drin, was ich eingegeben habe. Wieso sind die Daten dann auf der nächsten Seite futsch???
Das print_r($_session, true); sollte doch auch eine Ausgabe bringen, oder?
Kann es an php.ini-Einstellungen liegen?
(Ich glaube z.B. session.auto_start is "1").
mfg
Spiff
3.
Weil du immernoch kein session_start() in der zweiten Datei hast.
4.
Zitat:
Oliver Albers postete
Weil du immernoch kein session_start() in der zweiten Datei hast.
Hab ich doch:
Code: In Zwischenablage kopieren (nur IE)
(ist aber auch leicht zu übersehen)
Wird ohne session_start() überhaupt was in die session-datei geschrieben?
mfg
Spiff
5.
Die zweite Datei (aus Session-SIcht) ist für mich die mit der Ausgabe - und da ist keines zu entdecken.
6.
Zitat:
Oliver Albers postete
Die zweite Datei (aus Session-SIcht) ist für mich die mit der Ausgabe - und da ist keines zu entdecken.
Hier:
Code: In Zwischenablage kopieren (nur IE)
mfg
Spiff
7.
Hallo nochmal,
also ich hab noch ein bisschen nachgeforscht.
Wenn ich die erste Seite mit Session aufrufe, wird eine Sessiondatei erzeugt, mit den eingegebenen Werten. Auf dieser Seite werden dann noch Seriennummern eingegeben (Anzahl hängt von den vorigen Eingaben ab). Wenn ich dann auf submit drücke, werden Alle Daten (von voriger Seite + Seriennummern) in einer Datenbank abgespeichert. Komischerweise wird dann noch eine zweite Sessiondatei erzeugt in der dann auf einmal nix mehr steht!!!
Warum wird die zweite Session-datei erzeugt? Warum ist die leer?
mfg
Spiff
PS: Wenn in der php.ini session.auto_start aktiviert ist, braucht man kein session_start().
8.
session_start() gehört an den Anfang der Datei(en).
Wie übergibst du die Session-ID??
9.
Zitat:
webler postete
session_start() gehört an den Anfang der Datei(en).
Wie übergibst du die Session-ID??
Wegen Session_start(): Ich hätte gedacht (im Internet gelesen), daß wen session.auto_start eingeschaltet ist, man session_start() nicht benötigt. Wird implizit über $_SESSION gemacht. Korrigiert mich, falls das Käse ist!
Um die Session-ID hab ich mich irgendwie noch garnicht gekümmert. Habe aber schon gelesen, das man die über ein Hidden-Feld bzw. die URL übergeben kann.
Wahrscheinlich haben meine Seiten früher nur deswegen funktioniert, weil unter PHP4 var_globals auf ON war. (Ich hätte mir also das ganze Session-Zeug sparen können - damals).
mfg
Spiff
10.
versuch doch mal, die Session-ID in den Dateien auszugeben, um zu sehen was passiert.
11.
Zitat:
webler postete
versuch doch mal, die Session-ID in den Dateien auszugeben, um zu sehen was passiert.
Also wenn ich im Code schreibe:
Code: In Zwischenablage kopieren (nur IE)
wird in das session-file die id mit reingeschrieben. Bei der zweiten Session-datei steht nach wie vor nix drin..?!?!?
mfg
Spiff
12.
Kann man das selbst irgendwo testen?
13.
Zitat:
webler postete
Kann man das selbst irgendwo testen?
ich kann es schon testen (Intranet). Wer soll/will es sonst noch testen?
Soll ich die sid jetzt mit übergeben? Wenn ja, wie?
mfg
Spiff
14.
Mal versucht die Session ID in der URL mitzugeben. Normalerweise dürfte es nicht sei das wenn er ein und die selbe Session nutzen soll er zwei verschiedene Session Dateien anlegt. Außer du gibst es explizit an. (beispielsweise mit session_regenerate_id () )
selbst wenn du nichs nichts angibst sollte es funktionieren. hast du schon ein mal probiert vielleicht irgend eine andere php mit sessions zu nutzen vielleicht ist es bei dir ein einstellungsproblem
first.page.php
Code: In Zwischenablage kopieren (nur IE)
next.page.php
Code: In Zwischenablage kopieren (nur IE)
15.
@sToRkka
Habe das Beispeil mal laufen lassen. Die ausabe ist einfach:
Array()
Sonst nix
bei mir habe ich ja sonst $_SESSION["daten"]=$daten; geschrieben (in $daten steht schon was drin! Ich meine nur wegen " oder ' ...). Sollte ja kein Problem sein.
mfg Spiff
16.
dann stimmt was mit deinen einstellungen nicht, ich hab das bei mir laufen lassen und auch die dementsprechende ausgabe bekommen.
Code: In Zwischenablage kopieren (nur IE)
Nimm mal das session.auto_start = 0 anstatt deines (wenn ich das richtig verstanden habe) session.auto_start = 1, weil du startest durch das autostart eine session und machst selbst noch eine auf, dann is klar das da irgendwas verloren geht!
17.
[quote]
sToRkka postetedann stimmt was mit deinen einstellungen nicht, ich hab das bei mir laufen lassen und auch die dementsprechende ausgabe bekommen.
Code: In Zwischenablage kopieren (nur IE)
Nimm mal das session.auto_start = 0 anstatt deines (wenn ich das richtig verstanden habe) session.auto_start = 1, weil du startest durch das autostart eine session und machst selbst noch eine auf, dann is klar das da irgendwas verloren geht![/quote] Also, sobald ich die erste Seite von dem Beispiel aufrufe wird eine Session-Datei erzeugt, in der "daten|s:9:"irgendwas";" drinsteht.
Sobald ich auf den Link klicke wird eine zweite Session-Datei erzeugt, die leer ist. Deswegen wird dann auch nix angezeigt.
Ich kann mir nur vorstellen, das es an den Einstellungen der php.ini liegt. Unter Session ist folgendes eingetragen:
Code: In Zwischenablage kopieren (nur IE)
Evtl. seht ihr ja noch eine falsche Einstellung.
register_global=off
mfg
Spiff
18.
Servus,
ich habe noch ein bißchen rumgespielt und bin dem Problem glaub ich auf der Spur.
An den Einstellungen in der php.ini liegt's höchstwahrscheinlich nicht!!!
Ich habe ja obiges Beispiel gestestet und es lief nicht.
Code: In Zwischenablage kopieren (nur IE)
Wenn ich aber anstatt
Code: In Zwischenablage kopieren (nur IE)
das hier schreibe
Code: In Zwischenablage kopieren (nur IE)
funktioniert es!!! (Man beachte das an die URL anghängte [color="red"]?<?=SID?[/color])
Jetzt muß ich nur noch wissen, wie ich denselben Mechanismus (SID übergeben) mit Formularen mache. Da schreibe ich ja sowas wie:
Code: In Zwischenablage kopieren (nur IE)
Habe im Internet gelesen, das man dann ein Hidden-Feld anlegen soll:
Code: In Zwischenablage kopieren (nur IE)
Meine Frage ist dann aber, wie ich das Hiddenfeld in der nächsten Seite richtig auswerten kann?
mfg
Spiff
19.
Servus,
Problem gelöst!!!!
Folgendermaßen klappts jetzt:
1. Seite
session_destroy(); Evtl. vorhandene Session löschen
Nur eingaben über Formular -> submit
2. Seite
Code: In Zwischenablage kopieren (nur IE)
import_request_variables("P",""); So holt man sich die $_POST-Variablen (es geht auch per $var=$_POST["var"])
session_start() muß ja sowieso sein
$sess=session_id(); speichert die Session_ID in $sess
$_SESSION["kundenname1"] = $kundenname1; Registrieren der Variablen für die Session
<input type="hidden" name="<?php echo session_name();?>" value="<?php echo $sess; ?>"> Dieses hidden-feld überträgt die Session-ID zur nächsten Seite
3. Seite
Variablen aus der Session holen und in DB abspeichern
Code: In Zwischenablage kopieren (nur IE)
session_start($sessId) startet die gespeicherte Session
$kundenname1 = $_SESSION["kundenname1"]; Variablenwerte aus der Session holen
unset($kundenname1); Am Ende Variablen rücksetzen
Das Problem war hauptsächlich die Session-ID zur nächsten Seite zu bekommen (Geht bei Formular und GET über die URL)
mfg
Spiff
Und Danke für eure Tipps
20.
Und es liegt doch an der PHP-Konfiguration
session.use_cookies = 0
zwingt dich dazu die Session-ID permanent per Formular oder URL weiterzugeben
Abgesehen davob dass es mühsam ist birgt es auch einige Sicherheitslücken da
die ggf. im Referrer auf einer anderen Seite auftauchen könnte.
Bei mir sieht das so aus (Beispiel Testserver auf Windows) und da muss ich mich rein um gar nichts kümmern, @session_start() am Beginn und das wars -> Empfehle den Klammeraffen sonst mault ein Server mit session_auto_start :-)
[Session]
session.save_path = "e:/sessiondata"
session.save_handler = "files"
session.use_cookies = On
session.use_only_cookies = On
session.name = "PHPSESSID"
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = "/"
session.serialize_handler = "php"
session.gc_probability = 1
session.gc_divisor = 10
session.gc_maxlifetime = 1440
session.entropy_length = 32
session.cache_limiter = "nocache"
session.cache_expire = 360
session.use_trans_sid = 0
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = ""
Zitat:
Das Problem war hauptsächlich die Session-ID zur nächsten Seite zu bekommen (Geht bei Formular und GET über die URL)
mfg
Spiff
Und Danke für eure Tipps