Hallo an alle PHP Gurus :)
ich bin schön langsam am verzweifeln mit diesen sessions.dabei möchte ich doch nur ein login script mit sessions machen..
also mein problem ist folgendes: ich habe hier ein kleines loginscript:
----------------------------------------
<?php
session_name("s_login");
session_start();
?>
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include("../conn.php");
if($verbindung)
{//Verbindung vorhanden
$sql_login = 'SELECT benutzername,passwort FROM benutzerdaten WHERE benutzername = "'.$_POST["benutzername"].'"
AND passwort = "'.$_POST["passwort"].'"';
$erg_login = mysql_query($sql_login,$verbindung);
if(mysql_num_rows($erg_login)==1)
{//Login erfolgreich
$sql = 'SELECT anrede,vorname,nachname FROM benutzerdaten WHERE benutzername = "'.$_POST["benutzername"].'"';
$erg = mysql_query($sql,$verbindung);
list($anrede,$vorname,$nachname) = mysql_fetch_row($erg);
//setzen der begrüssungsvariablen in der session
$_SESSION["s_anrede"] = $anrede;
$_SESSION["s_vorname"] = $vorname;
$_SESSION["s_nachname"] = $nachname;
//session_register($anrede,$vorname,$nachname);
echo 'Willkommen, '.$anrede.' '.$vorname.' '.$nachname;
echo '
<br><br><br><br>
<a href="logout.php" target="_self">Logout</a>
';
}
else
{//Login fehlgeschlagen
echo "Login fehlgeschlagen";
}
mysql_close($verbindung);
}
else
{//Es konnte keine Verbindung zur Datenbank hergestellt werden
echo "<br><br>Verbindung zur Datenbank konnte nicht aufgebaut werden!";
}
?>
</body>
</html>
----------------------------------------
ok, also wenn der benutzer sich richtig eingeloggt hat sollen die 3 variablen $anrede,$name,$nachname als sessionvariablen gespeichert werden
das menü wird natürlich schon etwas grösser werden, jedoch zum test habe ich erst einmal eine logout seite gemacht(logout.php) mit diesem inhalt:
----------------------------------------
<?php
session_start();
?>
<html>
<head>
<title>Logout</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
echo $_SESSION["s_anrede"];
echo $_SESSION["s_vorname"];
echo $_SESSION["s_nachname"];
//echo $anrede;
//echo $vorname;
//echo $nachname;
$anrede = $_SESSION["s_anrede"];
$vorname = $_SESSION["s_vorname"];
$nachname = $_SESSION["s_nachname"];
$_SESSION = array();
if(session_destroy()==TRUE)
{
echo '<br><br>Auf Wiedersehn, '.$anrede.' '.$vorname.' '.$nachname;
}
?>
<body>
</body>
</html>
----------------------------------------
egal wie ich es auch drehe oder wende, es kommt immer aufs gleiche raus, die variable existiert nicht, ob ich nun mit der funktion session_register() und der normalen variable arbeite, oder ob ich die angeblich seit php4.0 zu bevorzugende methode mit $_SESSION[] verwende.
noch dazu bin ich auf dem gebiet sessions ein ziemlicher newbie,habe erst gestern damit angefangen.was mich auch noch interressiert, wie denn der ungefähre ablauf einer session aussieht, ich meine zu wissen:
1.session wird gestartet mit session_start() ->wenn eine session vorhanden, wird diese übernommen, wenn keine session vorhanden wird eine neue erzeugt
2.session wird am server im dafür vorgesehenen verzeichnis laut php.ini angelegt
3.wenn eine variabl registriert wird werden die daten am server in die sessiondatei geschrieben
4.äquivalent zu 3 wenn daten unregistriert(oder wie das heisst :) ) werden
5.session bleibt solange am server erhalten wie es in der php.ini über maxlifetime festgelegt ist
6.session wird mit session_destroy() wieder gelöscht
das glaube ich über sessions zu wissen(ob es richtig ist oder nicht sei einmal dahingestellt).
welche bedeutung haben dann eigentlich die clientseitigen cookies, wenn eh alles am server gespeichert wird? wird hier dann nur die session id gespeichert und an den server geschickt damit der benutzer wieder erkannt wird und die session wieder aufgenommen werden kann ?
ich weiss das sind viele fragen, aber ich habe mich gestern den ganzen tag mühselig durch die aberwitzigsten seiten durchgekämpft um näheres über diese "ominösen" sessions zu erfahren aber man findet fast nirgends eine wirklich gute erklärung zu diesem thema und da kann man dann schon verzweifeln wenn man sich mühselig aus verschiedensten seiten noch so kleine informationen zusammensuchen muss :(
jedenfalls bedanke ich mich einmal im vorraus an diejenigen die sich diesem thema(wahrscheinlich eh schon zum 153.mal annehmen :))und mir einen kleinen einblick in die sache geben.
mfg
daniel