PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit $_SESSION


jaduke
19.06.2006, 00:33:21
hallo,

ich hab ein kleines problem.

und zwar lass ich daten eines skriptes filtern und die rausgefilterten daten in die $_SESSION eintragen.
am seiten anfang steht session_start() und es wird kein fehler gemeldet.

wenn ich nun per link auf ein weiteres formular gehe sind die daten in der $_SESSION nicht mehr vorhanden... die Session ID wird mitübergeben und eigentlich sollte kein problem bestehen nur leider klappts halt nicht...

hat wer ne idee woran es liegen kann?

mfg

jaduke

feuervogel
19.06.2006, 10:12:36
mein auto ist seit gestern rot lackiert und es fährt jetzt nicht mehr.

hat wer ne idee woran es liegen kann?

mfg

jaduke

zeig uns code! wir sind keine hellseher! vermutlich liegt es daran, dass du in der datei in der du das zweite formular ausgibst am anfang kein session_start() stehen hast.

jaduke
19.06.2006, 10:43:24
test.php:

<?php
session_start();
?>
<html>
<?php


$tmp = array();

$anzahl_seite = 30;

$tmp = array_keys($_POST);

foreach ($tmp as $index)
{
if (($_POST[$index] != '0') || (array_key_exists($index,$_SESSION))
{
$_SESSION[$index] = $_POST[$index];
}
}
?>


das ist der seitenanfang der seite... auf dieser Seite wird das formular generiert und die Auswertung bzw die Abspeicherung der eingegebenen Daten vorgenommen.
wenn ich nun das formular absende werden die daten zunächst richtig abgespeichert, wenn ich allerdings auf eine neue kategorie per Link der Art


<a href="test.php?<?php echo session_name().'='.session_id()?>&art=1"
<?php if (($_POST['art'] == 1) || ($_GET['art'] == 1)) echo "class='aktiverLink'"; ?> >Rosen</a>


zugreife sind die daten aus $_SESSION verschwunden...

schon mal danke für tips

Morrandir
19.06.2006, 11:18:39
Beginnt deine Datei test.php... auch mit session_start()?

jaduke
19.06.2006, 11:24:47
siehe oben:

jo... der ausschnitt ist ja eben aus der test.php...

hab mir nu mal die einstellungen der php.ini anzeigen lassen

ergebnis:

Session Support enabled
Registered save handlers files user

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php4 /var/lib/php4
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off

liegts evtl daran?

Morrandir
19.06.2006, 11:43:04
Warum steht denn da am Schluss alles doppelt drin?

jaduke
19.06.2006, 12:19:31
des sind halt die variablen die mir die phpinfo() ausgegeben hat... oder was meinst du?

Morrandir
19.06.2006, 12:43:21
Ach so, verstehe, des is von phpinfo() und net direkt aus der ini... sorry, Denkfehler von mir...

hmm.... meine php.ini schaut genau so aus bis auf gc_probability, die is für die GarbageCollection verantwortlich... die kannste mal auf 1 setzen, aber ansonsten...
session.use_trans_sid is bei mir auch On... des is die transparente SID-Unterstützung...

Du könntest höchstens mal versuchen die session mit
session_start($_GET['uebergebenesessionid']) aufrufen... könnte vielleicht helfen...

jaduke
19.06.2006, 14:53:51
habs versucht... klappt auch nit...

feuervogel
19.06.2006, 15:11:50
wenn das da steht:

session.use_cookies On On

brauchst du die id nicht manuell ranzuhängen (ist eh nicht besonders sicher)

desweiteren erstelle mal 2 dateien:

test1.php

<?php
session_start();
$_SESSION[ 'foo' ] = "bar";
?>

test2.php

<?php
session_start();
echo $_SESSION[ 'foo' ];
?>

rufe sie nacheinander auf. wenn du bei der 2. datei eine ausgabe siehst, brauchst du nicht in der config rumwühlen, sondern den fehler im script suchen. hänge das script also mal als anhang an ein posting an und wir sehen weiter.

jaduke
19.06.2006, 16:53:23
ok hab dein beispiel getestet, des lief

nur kapier ich nit warum meins nit klappt... hab halt oben mal den quellcode angehängt

jaduke
19.06.2006, 22:36:17
mein fehler... teil der doku zu $_SESSION überlesen... sorry & danke für die hilfe

Morrandir
20.06.2006, 07:43:14
Könntest du vielleicht noch erklähren was jetzt net gepasst hat, oder was dein Fehler war, dann können andere die das selbe Problem haben vielleicht davon profitieren, wenn sie dieses Thema lesen.

MfG
Morrandir

jaduke
20.06.2006, 08:03:06
problem war, das ich variablen als key für $_SESSION genommen habe, die aus zahlen bestehen... hatte mir da nix bei gedacht, da ich gedacht habe, das es bei nem array ja ok ist und in der $_POST auch richtig gespeichert wurde... bis ich dann auf den kleinen absatz in der $_SESSION doku gestoßen bin, das die keys mit _ oder buchstaben beginnen muss...