Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Countervariable aus Session auslesen...
Frage
Welchen Fehler mach ich bloss?
Ich mochte auf einer Antwortseite eines Formulars eine Counterzahl ausgeben, die aus einer Session ausgelesen wird. Problem:
Er gibt die Variable „counter“ in „dankefuerteilnahme.php“ nicht aus.
(Formulare, Session und Counter funktioneren sonst einwandfrei.)
Aber anscheinend lese ich die Variable nicht richtig oder an der verkehrten Stelle aus oder?
[b]Ich habe [/b]
-formular.php
-dankefuerteilnahme.php
-counter.php
[b]formular.php :[/b]
uebliches formular und
[code]<?php include("counter.php"); ?>[/code]
[b]counter.php:[/b]
[code]<?
session_name(´test´);
session_start();
$datei = fopen("zaehler.txt","r+");
$counterstand = fgets($datei, 10);
if($counterstand == "")
{
$counterstand = 0;
}
$counterstand++;
$_SESSION[´counter´] = $_REQUEST[´counterstand´]; //fuer Session einlesen
rewind($datei); //
fwrite($datei, $counterstand);
fclose($datei);
?>
[/code]
[b]dankefuerteilnahme.php:[/b]
ueblicher Antworttext und
[code]<?php echo $_SESSION[´counter´]; ?>[/code]
Mit grosser Hoffnung auf Eure Hilfe
Gruss Mel
Antwort 1 von grt
counter.php:
versteh ich nicht. wieso liest du den wert aus, wenn du ihn danach einfach wieder reinschreibst? fehlt da nicht irgendwo die zuweisung zu der session-variable?
$_SESSION[´counter´] = $_REQUEST[´counterstand´] + $counterstand;
wird in "dankefuerteilnahme.php" die session auch gestartet?
schreibt mal "error_reporting(E_ALL);" an den anfang von jedem script.
was sagt "var_dump($_SESSION);" ?
versteh ich nicht. wieso liest du den wert aus, wenn du ihn danach einfach wieder reinschreibst? fehlt da nicht irgendwo die zuweisung zu der session-variable?
$_SESSION[´counter´] = $_REQUEST[´counterstand´] + $counterstand;
wird in "dankefuerteilnahme.php" die session auch gestartet?
schreibt mal "error_reporting(E_ALL);" an den anfang von jedem script.
was sagt "var_dump($_SESSION);" ?
Antwort 2 von Mel
Hallo grt,
also endlich komme ich dazu zu antworten.
Entschuldige.
grt:
Ich wollte die countervariable als Sessionvariable vorliegen haben.
grt:
ja, session wurde gestartet und mit error_reporting war auch nichts zu sehen und var_dump hat die Variable nicht gefunden.
Ja, und da ist mir gerade die Idee gekommen, daß eine Sessionvariable ja auch eingelesen werden muss (wie Du schon angedeutet hattest, oder?)
Ich hatte nun die Idee, die countervariable in nen hidden-field auszugeben und dann das hidden-field als Sessionvariable einzulesen. Und das hat funktioniert.
Hmh,
anscheinend habe ich vergessen, daß eine Variable immer innerhalb eines Formulares definiert werden und mit Hilfe eines "post" oder "get" an den Server übertragen werden muss, bevor sie als Sessionvariabel wieder abrufbar ist.
Könnt ihr das so bestätigen oder bin ich da auf dem Holzweg? Es klappt zumindest momentan....
Vielen Dank für euer Feedback
Gruss mel
also endlich komme ich dazu zu antworten.
Entschuldige.
grt:
Zitat:
versteh ich nicht. wieso liest du den wert aus, wenn du ihn danach einfach wieder reinschreibst?
versteh ich nicht. wieso liest du den wert aus, wenn du ihn danach einfach wieder reinschreibst?
Ich wollte die countervariable als Sessionvariable vorliegen haben.
grt:
Zitat:
wird in "dankefuerteilnahme.php" die session auch gestartet?
schreibt mal "error_reporting(E_ALL);" an den anfang von jedem script.
was sagt "var_dump($_SESSION);" ?
wird in "dankefuerteilnahme.php" die session auch gestartet?
schreibt mal "error_reporting(E_ALL);" an den anfang von jedem script.
was sagt "var_dump($_SESSION);" ?
ja, session wurde gestartet und mit error_reporting war auch nichts zu sehen und var_dump hat die Variable nicht gefunden.
Ja, und da ist mir gerade die Idee gekommen, daß eine Sessionvariable ja auch eingelesen werden muss (wie Du schon angedeutet hattest, oder?)
Ich hatte nun die Idee, die countervariable in nen hidden-field auszugeben und dann das hidden-field als Sessionvariable einzulesen. Und das hat funktioniert.
Hmh,
anscheinend habe ich vergessen, daß eine Variable immer innerhalb eines Formulares definiert werden und mit Hilfe eines "post" oder "get" an den Server übertragen werden muss, bevor sie als Sessionvariabel wieder abrufbar ist.
Könnt ihr das so bestätigen oder bin ich da auf dem Holzweg? Es klappt zumindest momentan....
Vielen Dank für euer Feedback
Gruss mel
Antwort 3 von Supermax
Hast du auch auf allen Seiten session_name(´test´); vor session_start() aufgerufen?
Ansonsten wird versucht, zum Bestimmen der Session-ID das falsche Cookie bzw. den falschen Parameter heranzuziehen.
Ohne trifttigen Grund sollte man session_name ohnehin nicht ändern, es sei denn es gibt echte Konflikte mit dem standardmäßigen PHPSESSID
Ansonsten wird versucht, zum Bestimmen der Session-ID das falsche Cookie bzw. den falschen Parameter heranzuziehen.
Ohne trifttigen Grund sollte man session_name ohnehin nicht ändern, es sei denn es gibt echte Konflikte mit dem standardmäßigen PHPSESSID
Antwort 4 von Mel
Supermax:
Ja, hab ich und klappt auch alles einwandfrei jetzt. Danke Dir.
Mir bleibt noch die Frage, ob
eine Variable immer innerhalb eines Formulares definiert werden und mit Hilfe eines "post" oder "get" an den Server übertragen werden muss, bevor sie als Sessionvariabel wieder abrufbar ist.
Das ist so oder?
Gruss
Mel
Zitat:
Hast du auch auf allen Seiten session_name(´test´); vor session_start() aufgerufen?
Hast du auch auf allen Seiten session_name(´test´); vor session_start() aufgerufen?
Ja, hab ich und klappt auch alles einwandfrei jetzt. Danke Dir.
Mir bleibt noch die Frage, ob
eine Variable immer innerhalb eines Formulares definiert werden und mit Hilfe eines "post" oder "get" an den Server übertragen werden muss, bevor sie als Sessionvariabel wieder abrufbar ist.
Das ist so oder?
Gruss
Mel
Antwort 5 von rabies
Eigentlich sollte es reichen, jeweils die Session-ID zu übergeben. Die bekommst Du jeweils mit der Funktion session_id()
Man muss das ganze auch nicht zwangsweise mit einem Formular übergeben. Die Übergabe kann problemlos auch mit Links passieren...
Man muss das ganze auch nicht zwangsweise mit einem Formular übergeben. Die Übergabe kann problemlos auch mit Links passieren...
Antwort 6 von Mel
Rabies:
ah, danke Dir vielmals.
Jetzt ist es klar. Super !
Einen sonnigen Tag noch
Gruß
Mel
Zitat:
Eigentlich sollte es reichen, jeweils die Session-ID zu übergeben. Die bekommst Du jeweils mit der Funktion session_id()
Man muss das ganze auch nicht zwangsweise mit einem Formular übergeben. Die Übergabe kann problemlos auch mit Links passieren...
Eigentlich sollte es reichen, jeweils die Session-ID zu übergeben. Die bekommst Du jeweils mit der Funktion session_id()
Man muss das ganze auch nicht zwangsweise mit einem Formular übergeben. Die Übergabe kann problemlos auch mit Links passieren...
ah, danke Dir vielmals.
Jetzt ist es klar. Super !
Einen sonnigen Tag noch
Gruß
Mel

