sessions sessions sessions

GoLLuM

Erfahrenes Mitglied
also leute, ich brauch mal wieder eure hilfe.

und zwar gehts heute um sessions. ok, ich kenn mich shcon ein bissl bei sessins aus. und da habe ich mir doch glatt mal dieses ding heir gebastelt:

PHP:
<?php
session_start();
session_register("user");
session_register("pw");
session_register("access");

if (!$user)
{
 echo "Es wurde kein User-Name eingegeben.";
 exit;
}
.
.
.
.
?>

naja, und wenn ich an dieses script per formular die den usernamen (in der variable $user) schicke, dann springt er trotzdem zu meiner IF-bedingung.
die große frage hierbei ist aber: WARUM? die variable $user wurde doch schon durch das formular übermittelt, also muss sie doch vorliegen.
oder habe ich einen denkfehler da drinnen?

danke :)

cya
g:
 
hmm...welche PHP-Version hast du? Ist Register_globals auf "on"? Wenn nicht, dann musst du per $_POST[ user] bzw. $HTTP_POST_VARS[ user] auf die Variable $user zugreifen....

nächste Frage: Was hat das mit Sessions zu tun? :)

übernächste Frage: Gibt er denn was aus, wenn du nur "echo $user;" schreibst?
 
1a.:also ich habe PHP Version: 4.2.1
1b.:Register_globals ist auf ON (sowohl bei Local Value als auch Master Value)

2.: naja, es hat insofern damit etwas zu tun, als das ein anderes session-script, was ich gebastelt habe, einwandfrei funzt (keine angst, diese andere session hab ich wieder gelöscht --> session_destroy)

3.: nein, er gibt nix aus. das is ja das komische was mich so erstaunt. er scheint die variable einfach nicht belegen zu können, selbst wenn ich die seite so aufrufe: session_test.php?user=Peter

warum?
danke für deine schnelle antwort :)

cya
g:
 
okay...also lassen wir erstmal die Sessions außen vor, denn ich denke der Fehler liegt dann sicherlich irgendwo im Formular...

1. und wenn du "echo $HTTP_POST_VARS[ user];" schreibst? Auch kein Erfolg?

2. ist dein HTML-Formular richtig? Sprich <form>-Tags richtig, richtige Action etc. ?

3. übergibst du vielleicht nicht mit Post?

4. Was passiert wenn du die ganzen Session-Sachen davor auskommentierst, erkennt er dann $user?
 
1. werd ich gleich mal ausprobieren (glaube ich aber nich, das es funzt)

2. also er kann nich im formular liegen, denn auch wenn ich die seite mit mein_script.php?user=Peter aufrufe, hat er auch keinen usernamen.

3. doch, am formular is alles richtig

4. ja, dann erkennt er $user. (genau deswegen muss es ja irgendwie mit den sessions zusammenhängen - denke ich mir)

cya
g:
 
schonmal probiert den sessionvars werte zuzuweisen ?

PHP:
session_register("user","pw","access");
					$user = $formuser;
					$pw = $formpw;
					$access = $formaccess;
 
also mit deiner hilfe HammerHe@rt, klappt es jetzt. es scheint also so, als ob man nicht direkt die variblen in die session schreiben kann, wenn sie aus nem formular kommen (obwohl das doch eigentlich sehr sinnvoll wäre) :confused: :confused:

naja, und wenn ich die seite jetzt noch mal aufrufe (von sich selber aus, als mit einem <a href=$PHP_SELF>link</a>, dann springt er wieder zur if-schleife mit dem if (!$user).
es scheint also, als würde er in die session gar nix reinschreiben. denn wenn ich echo $user angebe, dann bleibt es leer - folglich ist also nix in der variable $user drin gespeichert.
weiß irgendjemand, wo ich auf meinem server die session-dateien finde? damit ich da mal reinschaun kann und mal sehen kann, was da jetzt wirklich drin steht.

vielen dank!

cya
g:
 
Zuletzt bearbeitet:
ähm ja logisch würd ich sagen...

da wenn du die gleiche seite nocheinmal aufrufst ohne varübergabe dann sind formuser und formpw und formaccess = "" also leer...und somit wird bei der erneuten zuweisung die sessionvars mit leeren inhalt überschrieben right?
 
hier mal ein auszug aus meinem session script

PHP:
if ($action=="logout") {
	session_destroy();
	$userid = 0;
	header("Location: $SCRIPT_NAME");
	exit;
} else if ($action=="login") {
	$user = addslashes(trim($user));
	$pass = addslashes($pass);
	if($user && $pass)
		if ($res=mysql_query("select * from tab where user='$user' && pass=password('$pass')"))
			if ($r=mysql_fetch_array($res))
				if ($r[id]) {
					session_start();
					session_register("userid","name","caps");
					$userid = $r[id];
					$name = $r[name];
					$caps[n] = $r[f_n];
					$caps[a] = $r[f_a];
					$caps[r] = $r[f_r];
					$caps[rp] = $r[f_rp];
					$caps[ti] = $r[f_ti];
					$caps[pl] = $r[f_pl];
					$caps[ko] = $r[f_ko];
					header("Location: $SCRIPT_NAME");
					exit;
				}
} ?>


also nur sessionvars schreiben wenn login
und abfrage ob eingeloggt nach sessionstart mit if ($userid)....dann eingeloggt...eigentlich ganz simpel
 
Zuletzt bearbeitet:
Zurück