mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 24.01.2017 08:43 Benutzername: Passwort: Auto-Login

Thema: PHP: Session später starten vom 16.02.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP: Session später starten
Autor Nachricht
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 41
Geschlecht: Männlich
Verfasst Mi 16.02.2005 14:45
Titel

PHP: Session später starten

Antworten mit Zitat Zum Seitenanfang

Hintergrund:
Es geht um ein PopUp, welches täglich einige Millionen mal abgerufen wird.

In diesem PopUp werden Informationen in mehreren Schritten gespeichert. Deswegen möchte ich keine GET-Übergabe der einzelnen Schritte machen.
Wenn ich nun bei jedem Aufruf des ersten Schrittes ne Session starte, kommt die Garbage-Collection von PHP net hinterher (es sind wirklich einige Millionen mal!) und der Server is mehr damit beschäftigt abgelaufene Sessions zu löschen, statt die Seiten auszuliefern.

Wenn ich nun die Session erst starten lasse, wenn auf "absenden" geklickt wurde, hab ich das Problem, dass frühere Session-Daten nicht mehr vorhanden sind:

Code:
if ($_POST["geladen"] == 1) {
    ini_set("session.use_cookies",0);
    session_name("session");
    session_start();
    echo $_SESSION["variable"];
}
(...)

Code:
ini_set("session.use_cookies",0);
session_name("session");
session_start();
echo $_SESSION["variable"];
(...)


Der erste Code gibt die Variable aus, der untere nicht. Bitte keine blöden Kommentare von wegen, Ist die POST-Variable auch wirklich gesetzt? JA, sie ist es!

Ich hab den Verdacht, dass es daran liegt, dass die Sessiondeklaration am Anfang der Datei stehen muss bevor irgendwelche header übertragen wurden! werden bei der IF-Abfrage wirklich schon header versendet?
Gibt es nen Trick, wie ich die Session erst nach dem Abschicken auch mit den Variablen-Inhalten starten kann?
  View user's profile Private Nachricht senden
Waschbequen
Account gelöscht


Ort: -

Verfasst Mi 16.02.2005 14:56
Titel

Antworten mit Zitat Zum Seitenanfang

Ich weiß nicht wie es bei PHP läuft, gehe aber mal davon aus, dass es da genauso ist wie anderswo auch: die Session startet in dem Moment, wo die Applikation vom Benutzer aufgerufen wird. In dem Fall also mit dem ersten Aufruf des Popups. Und das ganze Schauspiel ist nicht beeinflussbar.

Was passiert denn in dem Popup? Ich denke mal es ist ein Step-by-Step-Formular. Alternativen zu GET und Session:

- Verschieb das ganze komplett auf den Client -> Cookie
- Benutze POST. Wenn der User nicht mit seinen Browser-Buttons klickt, kannste auch so zwischen den Schritten hin und her springen.
 
Anzeige
Anzeige
lordle
Threadersteller

Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 41
Geschlecht: Männlich
Verfasst Mi 16.02.2005 15:06
Titel

Antworten mit Zitat Zum Seitenanfang

danke für die Tipps, aber in diesem Fall gehts leider net.
einerseits dürfen keine Cookies verwendet werden (Kunden bzw. Vermarkter-vorgaben), andererseits ist das kein Formular, welches schrittweise ausgeführt wird.
Wenn du bei der ersten frage im ersten schritt eine bestimmte auswahl triffst, wirst Du auf eine "Abzweigung" gebeten, und von dort wieder auf den ersten schritt zurück....

der erste schritt braucht eben nur beim absenden eine session. die hanseln, die das formular ausfüllen, kriegen ne session, die millionen anderen eben nicht.

naja, dann eben doch der "unsaubere" weg über GET.... *würg*

//edit: Derjenige, der das HTTP-Protokoll erfunden hat, gehört erschlagen! <-- Schuld! * grmbl *


Zuletzt bearbeitet von lordle am Mi 16.02.2005 15:07, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 39
Geschlecht: Männlich
Verfasst Do 17.02.2005 11:15
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Ich hab den Verdacht, dass es daran liegt, dass die Sessiondeklaration am Anfang der Datei stehen muss bevor irgendwelche header übertragen wurden!

Ja, bei Start der Session wird versucht, ein Cookie zu setzen und Cookies werden im Header übertragen. Wenn jetzt bereits irgendwas an den Browser geschickt wurde (und wenn es nur ein Leerzeichen ist), dann wurden auch schon Header gesendet.
Zitat:
werden bei der IF-Abfrage wirklich schon header versendet?

Nein. Das läuft ja nur auf dem Server ab und es wird nichts an den Browser gesendet.

Ein häufiger Fehler ist es aber, ungewollt eine leere Zele an den Client zu schicken. Wenn vor dem beginnenden PHP-Bereich eine oder mehrere Leerzeilen stehen, dann wird das natürlich als HTML aufgefasst. Der Server sendet Header, dann die Leerzeilen. Das Session-Cookie kann dann später nicht mehr gesetzt werden. Aber schätzungsweise solltest du in so einem Fall ein Warning erhalte (Header already sent - oder sowas).
Code:






<?php
session_start(); // funktioniert nicht mehr
?>
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Offenbach am Main
Alter: 36
Geschlecht: Männlich
Verfasst Do 17.02.2005 13:13
Titel

Antworten mit Zitat Zum Seitenanfang

Das warum kann ich auch nicht erkennen.
Vom Code her sollte alles passen.
Verwenden doch POST um die Daten zu transportieren.
Da wird die Session dann überflüssig.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [TYPO3] Session starten, variable an PHP-Skript
problem mit session PHP
PHP-SESSION aktualisieren ?
PHP - Probleme mit der SESSION
[PHP] Session angehängt, obwohl er es nicht soll
[PHP] Session-Variablen werden im IE nicht gespeichert
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.