PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sessions und PHP


aVenger
2006-10-31, 17:01:35
Ich arbeite grade an meinem Userlogin einer HP. Folgendes Problem. Ich lies die Daten aus nem Formular aus vergleiche sie mit der Datenbank, fülle die Session (scheint anscheinend auch zu funktionieren; echo Befehl gibt was aus) und wenn ich dann auf nen Link klicke um in den Adminbereich zu kommen steht nichts mehr in der Session.

formular.php
Einfach nur zum Daten eingeben ;)

<?php
session_start ();
?>

<FIELDSET><LEGEND><h1>LOGIN</h1></LEGEND>
<form action="index.php?site=login" method="post">
<TABLE>
<TR>
<TD>Name(NN):</TD>
<TD><input type="text" name="name" size="20"></TD>
</TR>
<TR>
<TD>Kennwort:</TD>
<TD><input type="password" name="pwd" size="20"></TD>
</TR>
<TR>
<TD>&nbsp;</TD>
<TD ALIGN="right"><input type="submit" value="Login"></TD>
</TR>
</TABLE>
</FIELDSET>
</form>


login.php
vergleich mit der DB und füllen der session

<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
include ("./connection.php");

//////////////////////////////

$sql = "SELECT ".
"Id, Nachname, Vorname, Kuerzel, Berechtigung ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nachname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];
$_SESSION["user_kuerzel"] = $data["Kuerzel"];
$_SESSION["user_berechtigung"] = $data["Berechtigung"];

//Ausgabe der Daten (FUNKTIONIERT!!!)
echo ("BenutzerId: "); echo $_SESSION["user_id"]; echo ("<BR>");
echo ("Nachname: "); echo $_SESSION["user_nachname"]; echo ("<BR>");
echo ("Vorname: "); echo $_SESSION["user_vorname"]; echo ("<BR>");
echo ("Berechtigung: "); echo $_SESSION["user_berechtigung"];
}
else
{
//Kein Eintrag gefunden
echo ("Zugangsdaten ungültig");
}
?>

checkuser.php
einfach nur zum überprüfen ob eine session vorhanden ist
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
echo ("Sie müssen sich zuerst einlogen");
}
?>

adminbereich
wenn ich die session mal ausgeben kann reicht mir das :(
<?php

include ("./loginsystem/checkuser.php");
//session_start();

echo $_SESSION["user_id"]; echo ("<BR>");
echo $_SESSION["user_nachname"]; echo ("<BR>");
echo $_SESSION["user_vorname"];echo ("<BR>");
echo $_SESSION["user_berechtigung"];

?>

Marscel
2006-10-31, 17:15:54
Du musst die Session schon irgendwie übergeben, PHP kann das nicht von alleine aus machen:

http://de.php.net/manual/de/function.session-start.php
http://de.php.net/manual/de/ref.session.php#session.idpassing

aVenger
2006-10-31, 17:58:29
Wie mach ich das den am einfachsten? die ganzen einzelnen Seiten rufe ich ja per include auf
bin schon zu müde zum denken ^^

index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<HTML>
<HEAD>
<LINK REL=stylesheet TYPE="text/css" HREF="style.css">
<!--<SCRIPT SRC="scripts.js" TYPE="text/javascript"></SCRIPT>-->

<TITLE>RDZ Werbung & Marketing: Protokolldatenbank</TITLE>

<META NAME="description" content="RDZ Werbung & Marketing: Protokolldatenbank">
<META NAME="keywords" content="Werbung, Marketing, RDZ, Protokolldatenbank">
<META NAME="robots" content="index, follow">
<META NAME="publisher" Content="RDZ">
<META NAME="Content-Language" Content="de">

</HEAD>

<BODY>

<!--==========================BLAUER BALKEN============================-->
<DIV ID="top">
</DIV>

<!--==========================RDZ LOGO=================================-->
<DIV ID="rdzlogo">
<IMG SRC="images/rdz.gif">
</DIV>

<!--==========================TOP NAVIGATION===========================-->
<DIV ID="topnavi">
<A HREF="index.php?site=formular">:: Login</A> | <A HREF="index.php?site=logout">::Logout</A> | <A HREF="index.php?site=ap">:: Adminpanel</A> |
</DIV>

<!--==========================LEFT NAVIGATION==========================-->
<DIV ID="leftnavi">
LINK 1 <HR> LINK 2 <HR> LINK 3 <HR> LINK 4
</DIV>

<!--==========================WHITE BACKGROUND=========================-->
<DIV ID="whitebackground">
</DIV>

<!--==========================GRAY BACKGROUND=========================-->
<DIV ID="centerbackground">
</DIV>

<!--==========================CENTER BOX===============================-->
<DIV ID="centerbox">
<?php

//Loginbereiche
if ($site == "formular")
{
include ("loginsystem/formular.php");
}
else if ($site == "login")
{
include ("loginsystem/login.php");
}
else if ($site == "logout")
{
include ("loginsystem/logout.php");
}

//Adminbereiche
else if ($site == "ap")
{
include ("adminpanel/index.php");
}

//
else
{
echo "";
}
?>
</DIV>

<!--==========================CENTER PIC===============================-->
<DIV ID="centerpic">

<?php
if ($site == "login" || $site == "formular")
{
//echo("<img src=\"images/login.jpg\"");
}
?>
</DIV>

<!--==========================BOTTOM===================================-->
<DIV ID="bottom">
© 2006 by Kokal Josef & Kunst Benjamin
</DIV>
</BODY>

</HTML>

Unfug
2006-10-31, 18:20:21
mach doch mal im Admin Bereich direkt auch ein
session_start (); nach PHP. Also vor Inlcude

Marscel
2006-10-31, 18:25:32
Sollte überflüssig sein, da in der checkuser.php ja auch schon ein session_start() eingebaut ist.

Wenn ich nochmal wacher bin, guck ichs mir vielleicht nochmal an, sonst fällt mir gerade auch nichts ein.

aVenger
2006-10-31, 21:23:10
Sollte überflüssig sein, da in der checkuser.php ja auch schon ein session_start() eingebaut ist.

Wenn ich nochmal wacher bin, guck ichs mir vielleicht nochmal an, sonst fällt mir gerade auch nichts ein.
Also passt alles was ich gemacht hab oder wie?
Vllt. kann mir jemand die Lösung sagen :/

Gast
2006-11-01, 04:27:47
vielleicht hilft dir das http://tut.php-q.net/sessions.html weiter

mf_2
2006-11-01, 10:26:57
ich würde trotzdem mal ein session_start() vor dem, include in der admin-datei versuchen, wie Unfug schon vorschlug. Probiers einfach mal.

aVenger
2006-11-01, 14:24:24
Problem gelöst dank Kinman (persönlicher Freund und Forenmitglied ^^ )
Ich war selbst schuld. Hab immer wieder session_start aufgerufen und somit immer eine neue SID erhalten :(