 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
03.01.2005, 13:28
|
#1
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
Wie lange dauern Sessions?
Ich habe eine ganz allgemeine Frage und kann in den Büchern trotz aufmerksamsten Lesens nix finden.
Die Frage ist, wie lange dauert eine Session, die mit session_start() ausgelöst und deren Parameter via URL weitergegeben werden gültig. Ist es, wenn man mehrere Variablen hat, die man nach sagen wir mal 5 Seiten in eine mysql-Tabelle eintragen will, nötig bei jeder Seite wieder alle $_Session's an die URL dranzuhängen? Oder reicht das einmal und man könnte Sie später wieder abrufen?
Vielen Dank für die Antwort und frohes neues Jahr.
Gruß Dirk
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 13:30
|
#2
|
|
TP-Member
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
|
Die Sessionlebensdauert kannst du in der php.ini einstellen.
http://ch2.php.net/manual/de/ref.session.php
Normalerweise ist sie solang gültig bis du dein Browserfenster schliesst. Möchtest du die "Session" später wieder aufrufen musst du Cookies verwenden.
Session-ID an URL anhängen:
Zitat:
|
PHP ist in der Lage, Links transparent umzuwandeln. Falls Sie nicht PHP 4.2 oder höher verwenden, müssen Sie das beim Übersetzen von PHP manuell aktivieren. Unter Unix müssen Sie dazu configure mit --enable-trans-sid aufrufen. Wenn diese Option und die Laufzeit-Option session.use_trans_sid aktiviert sind, werden relative URIs automatisch so geändert, dass sie die Session-ID enthalten.
|
Musst du also nicht.
__________________
<?php /* My web pages */ echo "Rettet den Wald
Esst mehr Biber"; ?>
Geändert von gugus (03.01.2005 um 13:41 Uhr).
|
|
|
03.01.2005, 15:33
|
#3
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
Hm, zunächst mal vielen Dank für Deine Antwort. Aber wenn ich meiner 12. Stimme im Kopf zuhöre, dann sagt sie, dass wenn ich die Variablen per URL weitergebe und ich zwischendurch die Variablen nicht weitergebe, so wie Du sagst. Dann ist doch die Weitergabe unterbrochen, oder??? Oder wird, wenn ich die Daten per URL weitergebe die Daten trotzdem im Cache gespeichert?
Gruß
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 15:55
|
#4
|
|
Guest
Registriert seit: Aug 2002
|
Mich verwirrt die Aussage mit den Sessions und "Übergabe der Variablen per URL". Handelt es sich um mehrere Formulare, die nacheinander ausgefüllt werden, d.h. auf mehreren Seiten? Wozu also Variablen per URL?
Es wäre besser, wenn du auch dein Vorhaben schildern würdest - man kann nicht nachvollziehen.
|
|
|
03.01.2005, 18:31
|
#5
|
|
TP-Member
Registriert seit: Dec 2004
Ort: Schweiz - Luzern
|
Zitat:
|
Zitat von ornyma
Hm, zunächst mal vielen Dank für Deine Antwort. Aber wenn ich meiner 12. Stimme im Kopf zuhöre, dann sagt sie, dass wenn ich die Variablen per URL weitergebe und ich zwischendurch die Variablen nicht weitergebe, so wie Du sagst. Dann ist doch die Weitergabe unterbrochen, oder??? Oder wird, wenn ich die Daten per URL weitergebe die Daten trotzdem im Cache gespeichert?
Gruß
|
*kratz* Ich check nicht genau was du meinst.
Ein Beispiel:
Wir haben eine Datei mit dem Namen test.php
PHP-Code:
session_start();
$_SESSION['test']=1;
echo <<<test
<a href="test2.php">test2.php</a>
test;
und eine weitere Datei mit dem Namen test2.php
PHP-Code:
<?
session_start();
echo $_SESSION['test'];
?>
Rufst du nun "test.php" auf und klickst auf den link "test2.php" wird eine "1" ausgegeben. Die SID wird automatisch mitgegeben.
Oder was meinst du?
__________________
<?php /* My web pages */ echo "Rettet den Wald
Esst mehr Biber"; ?>
|
|
|
03.01.2005, 19:33
|
#6
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
Si, genau das isses. Und es sind mehrere Formulare, die hintereinander ausgefüllt werden.
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 21:13
|
#7
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Lässt sich dein Si jetzt als (ja, ich hab es verstanden und kenn die Lösung des Problemes) interpretieren?
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
|
|
|
03.01.2005, 21:15
|
#8
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
äh, nö... das Problem ist noch da... die Frage ist muss ich jedesmal die Session neu reinhämmern, wenn ich die Daten für ein Formular über mehrere Seiten transportieren will....
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 21:28
|
#9
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Jetzt kommt es darauf an, was du unter "Session neu reinhämmern" verstehst. Richtig ist, dass du auf jeder Seite, die im Browser aufgerufen wird (ob von user per link, oder im skript per header) du das Skript mit session_start(); beginnen musst.
Wobei sich auch dies mit leichter modifikation der php.ini verändern lässt!
Zum mitschleifen eines mehrseitigen Formulares empfieht sich, auf der ersten Seite in leeres Array in der Session zu erstellen:
PHP-Code:
$_SESSION["meinArray"] = array();
und dann auf jeder Seite, wo neue Formulardaten gesendet werden, genau jene einfach in diesem Sessionarray zu mergen:
PHP-Code:
//Wir gehen davon aus, dass die neuen Formulardaten per $_POST kommen:
$_SESSION["meinArray"] = array_merge( $_SESSION["meinArray"], $_POST );
Auf http://php.net/array_merge kannst du nachlesen, wie sich das ganze bei gleichnamigen Feldern verhält (also: welcher Wert überschrieben wird). Wenn du das umgehen willst, empfiehlt sich ein mehrdimensionales Array, dann ist es auf jeden Fall eindeutig und es kann zu keiner Überschneidung mehr kommen!
Wie schon erwähnt, dass auf jeder Seite, auf der neue Daten hinzukommen, machen, und, sobald alle Seiten des Formulars durchlaufen sind, kannst du sämtliche Daten mit:
PHP-Code:
print_r( $_SESSION["meinArray"] );
wieder ausgeben/speichern/weiterverarbeiten. etc
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (03.01.2005 um 21:31 Uhr).
|
|
|
03.01.2005, 22:04
|
#10
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
Das bringt mich erheblich weiter. Ich habe es bisher immer so gemacht, dass ich die neuen Daten der Superglobalen $_SESSION hinzugefügt habe und jedem Formularfeld einfach eine Superglobale $_SESSIOn ["meinfeld"] gegeben habe. Diese habe ich dann auf jeder Seite in eine Variable je Superglobale gegeben. Die habe ich auf jeder Seite wieder in eine Variable gepackt und vor dem Header wieder in eine SESSION gedrückt. Ich konnte mir nicht vorstellen, dass das Sinn ergibt. Ich werde mir array_merge mal kurz in der Doku anschauen.
Andersrum müssten die Feldaten, die ich in eine SESSION verpackt habe doch auch bis zum Ende da sein, wenn ich sie nicht jedesmal wieder in eine Variable und vor dem header wieder in eine Session verpacke, oda???
Gruß Dirk
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 22:17
|
#11
|
|
TP-Veteran
Registriert seit: Sep 2002
Ort: Schweiz
|
Nein. Session = Browsersitzung (so hab ichs zumindest mal gelesen.). Also du übergibst zwar die Session per URL, Formular oder was auch immer ans nächste Browserfenster(seite eigentlich). Und trotzdem musst du, damit die Session-Variablen im Script quasi "empfangen" werden können, ein session_start(); an Anfang deines Codes setzen.
[nachtrag]
PHP-Code:
<?php
session_start();
// session-variablen übernommen
// ########## dein restiliches script..
?>
Geändert von Daniel N. (03.01.2005 um 22:22 Uhr).
|
|
|
03.01.2005, 22:20
|
#12
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Zitat:
|
$_SESSION hinzugefügt habe und jedem Formularfeld einfach eine Superglobale $_SESSIOn ["meinfeld"] gegeben habe.
|
Naja, ist halt entweder unnötige Handarbeit, bzw. eine unnötige foreach Schleife.
Zitat:
|
Andersrum müssten die Feldaten, die ich in eine SESSION verpackt habe doch auch bis zum Ende da sein, wenn ich sie nicht jedesmal wieder in eine Variable und vor dem header wieder in eine Session verpacke, oda???
|
K.a., was du jetzt unter "verpackt" verstehst. Wenn du, wie gugus schon demonstriert hat, einfach $_SESSION["test"] = "hallo welt"; speicherst, kannst du jenes "Hallo Welt" überall in der aktuellen Session wieder asugeben.
Wenn es nicht klappt, überschreibst du es entweder irgendwo ungewollt, oder du hast ein session_Start(); vergessen!
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
|
|
|
03.01.2005, 22:25
|
#13
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
Jetzt kommen wir der Sache schon näher. Also Es ist egal, auf welche Art man die Session übergibt, sie hält solange bis das Browserfenster geöffnet ist. Und zum Abruf der in einer Session gespeicherten Variablen muss man die Session mit session_start() zu Beginn des Scripts öffnen. Das funktioniert also auch dann, wenn die Session per URL übergeben werden. Dann könnte ich diese rein theoretisch auch 15 Seiten später abrufen, ohne diese zwischendurch weiter zu beachten - vorausgesetzt ich öfnne mit session_start() und überschreibe die Variable nicht. Ist das Statement korrekt?
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
03.01.2005, 22:27
|
#14
|
|
TP-Veteran
Registriert seit: Sep 2002
Ort: Schweiz
|
zum letzten satz wird Dennis wohl was konkretes schreiben  aber der rest - ja 
|
|
|
03.01.2005, 22:30
|
#15
|
|
TP-Member
Registriert seit: Oct 2004
Ort: München
|
na da hasse wahr. es ist very_difficulti () was zu erklären ohne 20 einhalb Seiten Script rüberzubeamen. aber jetzt haben wir es ja.... Vielen Dank Euch allen. Ihr habt sehr grpßes Hilfe tun.
Gruß Dirk
__________________
Persönlichkeiten nicht Prinzipien bringen die Welt in Bewegung. (Oscar Wilde)
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:02 Uhr.
|
 |