Übergeben von $_SESSION-Variablen

MissPiggy

Erfahrenes Mitglied
Ich habe anhand des Tutorial "Loginsystem mit Sessions" versucht, ein Loginscript zu basteln (ich lerne PHP erst seit ein paar Wochen, meine Fähigkeiten sind noch sehr begrenzt ).. Mir ist auch nicht ganz klar, wie in diesem Tutorial die Session_ID übergeben wird.

In dem script was ich geschrieben habe, funktioniert das Übergeben von Sessionvariablen nur zum Teil. Eine wird übergeben, die andere nicht, un mir ist völlig schleierhaft, weiso das ist. Es wäre schön wenn mir da jemand weiterhelfen könnte :)

Das loginscript (name und pass werden als $_POST übergeben)

PHP:
<?php session_start ?>

<html>
<head>
<?php
	include "config.php"; 

	function login($nam,$pw,&$id,&$name) {
		$sqlab="select * from user where
		 name = '$nam' 
		 and 
		 pass='$pw' ";
		 $res=mysql_query($sqlab);
		 $num=mysql_num_rows($res);
		 $temp=mysql_fetch_assoc($res);
		 $id=$temp['ID'];
		 $name=$temp['name'];
		 return $num;
		} 
?>
		
</head>

<body>
<?php 
	
	if(!(empty($_POST['name'])) &&  !(empty($_POST['pass'])))  {
	$db=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS);
	mysql_select_db("micha") || die("db nicht vorhanden");
	
	login($_POST['name'],$_POST['pass'],$userid,$nick) || die("name oder pass falsch");
		
	$_SESSION['ID']=$userid;
        $_SESSION['NAME']=$nick;
	
	mysql_close($db);
	if(isset($_SESSION['ID'])) {
		
		header("location:Serien.php");	
		}
	}		
	else {
		if($_GET['action']=='logout')
			session_destroy();
	
		header ("location:login1.php");
	 }	
		
			
?>	
</body>
</html>

Bis zum Ende des scripts sind die Variablen $_SESSION['ID'] und $_SESSION['name'] vorhanden, jedoch im Folgescript existiert dann nur noch die $_SESSION['ID']
 
Hi

das ist kalr!

Wir eine Session gestartet:
session_start();

kann man Session Variablen anlegen

$_SESSION['name'] = "lukasz";

Der User blätter auf deiner seite,
und nun wir wieder die Session gestartet
session_start();

jetzt taucht die Variable $_SESSION['name'] nicht auf! Muss aber auch nicht. Sie ist aber immer noch vorhanden. Wenn du sie brauchst, sprichst du sie einfach an. Beispielweise
ausgeben lassen:

echo $_SESSION['name']; //Ausgabe lukasz

möchtest du die Session terminieren
session_start();
unset($_SESSION);
session_destroy();

Nun ist $_SESSION['alles mögliche'] gelöscht!
 
Die Variable $_SESSION['NAME'] ist eben nicht vorhanden. Im folgenden script, was über
PHP:
header ("location:Serien.php")
aufgerufen wird, erzeugt
PHP:
print_r($_SESSION);
die Ausgabe:
Array ( [ID] => 1 ), das wäre ja $SESSION['ID'].
Obwohl 2 Variablen auf die gleiche Art übergeben wurden
 
Versuch mal ganz oben das hier:
PHP:
<?php session_start ?>
durch das hier
PHP:
<?php session_start(); ?>
zu ersetzen. Ich koennte mir vorstellen, dass Dein Aufruf von session_start() problematisch sein koennte.
 
danke, das klappt. Was jedoch nicht geht, ist wenn ich die Session_id über die Variable SID übergeben möchte, ist die grundsätzlich vorhanden oder muss sie erst definiert werden?

Und wie speichere ich die Session_id in einem Cookie ab ?
 
Ein Session-Cookie wird automatisch gesetzt, da brauchst Du nichts mehr machen als ganz einfach die Session zu starten und die Session-Variablen zu setzen.
 
das verstehe ich ehrlich gesagt nicht so ganz....in einem tutorial heisst es, es gibt 2 Möglichkeiten eine session_id zu übergeben :
Entweder mit der Url oder per Cookie. Wenn nun bei session_start immer eine Cookie mit der session_id übergeben wird, wieso muss man die dann noch mit der Url übergeben?

Es geht mir darum, dass die Session_id immer da ist, dass ich die nicht mit der Url übergeben werden muss.
 
Hallo zusammen,

mein Post hat wohl für etwas Verwirrung gesorgt. Also ...

Bitte Unterscheide zwischen Sessions mit Session Cookies und Cookies

1. Sessions:

Eine Session ist theoretisch nichst anderes wie eine Variable in welcher Du Werte speichern kannst. Die Werte werden in einem sogenannten Session Cookie entweder in einer Datenbank oder auf dem Server in einem bestimmten Ordner abgelegt (php.ini -> session_handling). Du brauchst Dich darum aber überhaupt nicht kümmern. Nutze diese einfach übergreifend von script zu script - egal wann. Die Session ist solange vorhanden, bis sie entweder von Dir terminiert wird oder alle Browserfenster geschlossen werden. Also --> temporär

2. Cookies

Hast Du schonmal bei Amazon was gekauft und hast Dich gewundert warum Du beim nächsten Mal mit Namen angesprochen wurdest? Das ist der Einsatz von Cookies. Ein Cookie wird clientseitig im Ordner (Win) C:\Dokumente und Einstellungen\andy\Cookies\ als Textdatei abgelegt. Das bedeutet, dass Du also auch z.B. an einem anderen Tag wieder auf die Daten darin mit einem entsprechenden Skript darauf zugreifen kannst. Du kannst ein solches Cookie theoretisch auch genauso wie eine Session einsetzen.

Ich persönlich empfehle immer die Verwendung von Sessions. Denn wie birnkammer schon sagte, kann der Client Cookies unterbinden ...

Hoffe das klärt ein paar Dinge

Viele Grüsse

Andy
 
Zurück