Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Benutzer 4545
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mo 10.09.2007 08:21
Titel php_ein- und ausloggen |
|
|
Hallo Ihr Lieben,
ich habe nach diesem http://www.php-resource.de/tutorials/read/38/2/ Muster versucht, das Ein- und Ausloggen auf meine Seite zu übertragen.
Jetzt habe ich aber das Problem, das ich einiges doppelt habe und nicht mehr so ganz durchsteige.
Die login_partner.php ist die "Startseite" in der man sich einloggen kann.
Wenn man sich richtig eingeloggt hat, soll man auf die index_partner.php Seite kommen. Das klappt auch. Da kann man sich dann Ausloggen (Seite "nichteingeloggt_partner.php"). Allerdings kann man, wenn man sich ausgeloggt hat und auf den zurück-Button des Browsers geht, wieder auf die index_partner-Seite zurück, obwohl bei dieser eine Session included ist, die Funktion abfragt, ob man eingeloggt ist. Normal müsste das dann ja nicht gehen, oder?
Wenn die Anmeldedaten nicht stimmen, soll man auf diese Seite kommen: falschedaten.php. Das funzt aber nicht, weil
in der login_partner.php vor dem header schon html und so ausgegeben wird. Wie kann ich das umgehen?
Was muss ich in jede der noch kommenden Seiten im Partnerbereich includen, damit immer überprüft wird, ob man eingeloggt ist? Nur die Funktion "include("logged_in.php"); logged_in();?
Jetzt kommen die Dateien - nicht meckern bitte, bin Anfänger und wühl mich da gerad durch...
login_partner.php
Code: |
<?
session_start(); /*Diese erste Zeile startet die Session. Dieser Befehl muss auf allen
Seiten stehen, und zwar überall als erster Befehl, da es sonst unter Umständen
zu unschönen Fehlermeldungen kommt.*/
include 'sessionhelpers.inc.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>xxx</title>
<link href="file:///C|/xampp/htdocs/site/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="box">
<div id="kopf"><a href="file:///C|/xampp/htdocs/site/index.htm"><img id="logo" src="file:///C|/xampp/htdocs/site/pics/transpa.gif" /></a></div>
<div id="leiste">
<div style="padding-left:630px;"><a href="file:///C|/xampp/htdocs/site/impressum.htm">Impressum |</a></div>
<div style="padding-left:708px;"><a href="file:///C|/xampp/htdocs/site/kontakt.htm">Kontakt</a></div>
</div>
<div id="main">
<div class="main_index" style="background-image:url(file:///C|/xampp/htdocs/site/pics/main_partner.jpg); ">
<?
if (!logged_in())
echo 'Bitte geben Sie Ihre Login-Daten ein:<br />';
if (isset($_POST['login'])) //Diese Zeile prüft, ob unser Formular abgeschickt wurde.
{ /*wenn das so ist, wird hier mit der Funktion check_user die UserID des
Benutzers erfragt, zu dem die eingegebenen Daten passen.*/
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid); /*Es wird eine UserID zurückgeliefert. Daraus folgt, dass die Anmeldedaten korrekt waren und der Benutzer
wird mit der Funktion login eingeloggt.*/
/*header("location:index_partner.htm");*/
else /*Es wird false zurückgeliefert.
Daraus folgt, dass die Anmeldedaten nicht korrekt waren und es wird eine
entsprechende Meldung ausgegeben.*/
header("location:falschedaten.php");
}
/*Die folgenden Schritte werden immer durchgeführt, also auch dann, wenn der Benutzer kein
Formular abgeschickt hat:
Es wird geprüft, ob der Benutzer eingeloggt ist. if (logged_in)
Ist dies der Fall wird ein Link ausgegeben, der ihm das Ausloggen ermöglicht,
wenn er nicht eingeloggt ist, wird das Login-Formular angezeigt. */
if (!logged_in()) //hier wird geprüft, ob der Benutzer eingeloggt ist
echo '<form method="post" action="login_partner.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>'; //wenn nein: hier wird das login-formular angezeigt
else {
/* header("location:index_partner.htm");/*///hiermit gings aber vorm header wird ja alles ausgegen
/*echo "<meta http-equiv='refresh' content='" . $time . "; URL=index_partner.htm" . $url . "'>";*/
echo '<a href="logout.php">Ausloggen</a>'; //wenn ja: hier wird die Funktion zum Ausloggen angegeben*/
}
?>
</div>
</div>
<div id="sidebar">
<img id="filmbild" src="file:///C|/xampp/htdocs/site/pics/sbbild_partner.jpg" width="140" height="180" alt="Einloggen">
</div>
<div id="footer"></div>
</div>
</body>
</html>
|
index_partner.php Code: |
<?php
include("logged_in.php");
logged_in();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>xxx</title>
<link href="file:///C|/xampp/htdocs/site/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="box">
<div id="kopf"><a href="file:///C|/xampp/htdocs/site/index.htm"><img id="logo" src="file:///C|/xampp/htdocs/site/pics/transpa.gif" /></a></div>
<div id="leiste">
<div style="padding-left:630px;"><a href="file:///C|/xampp/htdocs/site/impressum.htm">Impressum |</a></div>
<div style="padding-left:708px;"><a href="file:///C|/xampp/htdocs/site/kontakt.htm">Kontakt</a></div>
</div>
<div id="main">
<div class="main_index" style="background-image:url(file:///C|/xampp/htdocs/site/pics/main_indexpartner.jpg); ">
<!---Bitte geben Sie Ihre Login-Daten ein:<br />--->
Herzlich Willkommen bei uns! <br />
<br />In diesem internen Bereich können Sie uns genauer kennenlernen, Montageanleitungen o.ä. herunterladen und Bestellformulare abschicken!
</div>
</div>
<div id="sidebar">
<img id="filmbild" src="file:///C|/xampp/htdocs/site/pics/sbbild_indexpartner.jpg" width="140" height="180" alt="Vertikal">
</div>
<div id="footer"></div>
</div>
</body>
</html>
|
nichteingeloggt_partner.php Code: | <?
session_start(); /*Diese erste Zeile startet die Session. Dieser Befehl muss auf allen
Seiten stehen, und zwar überall als erster Befehl, da es sonst unter Umständen
zu unschönen Fehlermeldungen kommt.*/
include 'sessionhelpers.inc.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>xxx</title>
<link href="file:///C|/xampp/htdocs/site/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="box">
<div id="kopf"><a href="file:///C|/xampp/htdocs/site/index.htm"><img id="logo" src="file:///C|/xampp/htdocs/site/pics/transpa.gif" /></a></div>
<div id="leiste">
<div style="padding-left:630px;"><a href="file:///C|/xampp/htdocs/site/impressum.htm">Impressum |</a></div>
<div style="padding-left:708px;"><a href="file:///C|/xampp/htdocs/site/kontakt.htm">Kontakt</a></div>
</div>
<div id="main">
<div class="main_index" style="background-image:url(file:///C|/xampp/htdocs/site/pics/main_partner.jpg); ">
Sie haben sich erfolgreich ausgeloggt. </br>
</br>Um sich wieder einzuloggen, geben Sie bitte Ihre Login-Daten ein:<br />
<?
if (isset($_POST['login'])) //Diese Zeile prüft, ob unser Formular abgeschickt wurde.
{ /*wenn das so ist, wird hier mit der Funktion check_user die UserID des
Benutzers erfragt, zu dem die eingegebenen Daten passen.*/
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid); /*Es wird eine UserID zurückgeliefert. Daraus folgt, dass die Anmeldedaten korrekt waren und der Benutzer
wird mit der Funktion login eingeloggt.*/
/*header("location:index_partner.htm");*/
else /*Es wird false zurückgeliefert.
Daraus folgt, dass die Anmeldedaten nicht korrekt waren und es wird eine
entsprechende Meldung ausgegeben.*/
header("location:falschedaten.php");
}
/*Die folgenden Schritte werden immer durchgeführt, also auch dann, wenn der Benutzer kein
Formular abgeschickt hat:
Es wird geprüft, ob der Benutzer eingeloggt ist. if (logged_in)
Ist dies der Fall wird ein Link ausgegeben, der ihm das Ausloggen ermöglicht,
wenn er nicht eingeloggt ist, wird das Login-Formular angezeigt. */
if (!logged_in()) //hier wird geprüft, ob der Benutzer eingeloggt ist
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>'; //wenn nein: hier wird das login-formular angezeigt
else {
/* header("location:index_partner.htm");/*///hiermit gings aber vorm header wird ja alles ausgegen
/*echo "<meta http-equiv='refresh' content='" . $time . "; URL=index_partner.htm" . $url . "'>";*/
echo '<a href="logout.php">Ausloggen</a>'; //wenn ja: hier wird die Funktion zum Ausloggen angegeben*/
}
?>
</p>
</div>
</div>
<div id="sidebar">
<img id="filmbild" src="file:///C|/xampp/htdocs/site/pics/sbbild_partner.jpg" width="140" height="180" alt="Einloggen">
</div>
<div id="footer"></div>
</div>
</body>
</html>
|
falschedaten.php
Code: |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>xxx</title>
<link href="file:///C|/xampp/htdocs/site/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="box">
<div id="kopf"><a href="file:///C|/xampp/htdocs/site/index.htm"><img id="logo" src="file:///C|/xampp/htdocs/site/pics/transpa.gif" /></a></div>
<div id="leiste">
<div style="padding-left:630px;"><a href="file:///C|/xampp/htdocs/site/impressum.htm">Impressum |</a></div>
<div style="padding-left:708px;"><a href="file:///C|/xampp/htdocs/site/kontakt.htm">Kontakt</a></div>
</div>
<div id="main">
<div class="main_index" style="background-image:url(file:///C|/xampp/htdocs/site/pics/main_indexpartner.jpg); ">
<!---Bitte geben Sie Ihre Login-Daten ein:<br />--->
Ihre Anmeldedaten waren nicht korrekt! Bitte klicken Sie
<a href="login_partner.php">hier</a> um es nochmals zu versuchen.
</div>
<div id="sidebar">
<img id="filmbild" src="file:///C|/xampp/htdocs/site/pics/sbbild_indexpartner.jpg" width="140" height="180" alt="Vertikal">
</div>
<div id="footer"></div>
</div>
</body>
</html>
|
login.php
Code: |
<?
session_start(); /*Diese erste Zeile startet die Session. Dieser Befehl muss auf allen
Seiten stehen, und zwar überall als erster Befehl, da es sonst unter Umständen
zu unschönen Fehlermeldungen kommt.*/
include 'sessionhelpers.inc.php';
if (isset($_POST['login'])) //Diese Zeile prüft, ob unser Formular abgeschickt wurde.
{ /*wenn das so ist, wird hier mit der Funktion check_user die UserID des
Benutzers erfragt, zu dem die eingegebenen Daten passen.*/
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid); /*Es wird eine UserID zurückgeliefert. Daraus folgt, dass die Anmeldedaten korrekt waren und der Benutzer
wird mit der Funktion login eingeloggt.*/
/* header("location:index_partner.htm");*/
else /*Es wird false zurückgeliefert.
Daraus folgt, dass die Anmeldedaten nicht korrekt waren und es wird eine
entsprechende Meldung ausgegeben.*/
echo '<font class=grundtext>Ihre Anmeldedaten waren nicht korrekt!</font>';
}
/*Die folgenden Schritte werden immer durchgeführt, also auch dann, wenn der Benutzer kein
Formular abgeschickt hat:
Es wird geprüft, ob der Benutzer eingeloggt ist. if (logged_in)
Ist dies der Fall wird ein Link ausgegeben, der ihm das Ausloggen ermöglicht,
wenn er nicht eingeloggt ist, wird das Login-Formular angezeigt. */
if (!logged_in()) //hier wird geprüft, ob der Benutzer eingeloggt ist
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>'; //wenn nein: hier wird das login-formular angezeigt
else
header("location:index_partner.php"); //hier wird man hingeleitet wenn man sich erfolgreich
//eingeloggt hat!!!!!!!!!!!
?> |
logout.php
Code: | <?
session_start();
include 'sessionhelpers.inc.php';
logout();
header("location:nichteingeloggt_partner.php");
echo '<a href="login_partner.php">Einloggen</a>';
?> |
sessionhelpers.php Code: |
<?
function connect()
{
mysql_connect('localhost','root','');
mysql_select_db('DB53490');
}
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM einloggen
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}
function login($userid) //hiermit loggt sich der Benutzer ein
{
$sql="UPDATE einloggen
SET UserSession='".session_id()."'
WHERE UserId=".$userid;
mysql_query($sql);
/* header( 'Location: http://example.com/richtig.php' ); */
/*exit; */
}
function logged_in()
{
$sql="SELECT UserId
FROM einloggen
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
return ( mysql_num_rows($result)==1);
}
function logout()
{
$sql="UPDATE einloggen
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}
connect();
?> |
Zuletzt bearbeitet von am Mo 21.04.2008 13:44, insgesamt 1-mal bearbeitet
|
|
|
|
|
nomidi
Dabei seit: 07.09.2007
Ort: bei Bremen
Alter: 47
Geschlecht:
|
Verfasst Mo 10.09.2007 08:36
Titel
|
|
|
Habe mir zwar nicht dein ganzen Code durchgelesen, aber lege doch beim einloggen eine Session an. z.B. die return $user['UserId']; . Diese fragste dann auf der Seite ab wenn Sie gesetzt ist, dann erlaube sonst erlaube keinen Zugang. Eine Funktion wie deine logged_in() , die anscheinend beim jedem aufruf eine DB abfrage macht, find ich etwas übertrieben.
|
|
|
|
|
Anzeige
|
|
|
Benutzer 4545
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mo 10.09.2007 08:55
Titel
|
|
|
Hallo, danke für die Antwort! Wie genau muss die Funktion dann aussehen? Bin noch nicht
soweit, das ich eine selber schreiben kann.
function return_user()
{
$user['UserId']
}
Bei jeder Seite, wo das loggen überprüft werden soll, binde ich die dann so ein, oder?
include 'sessionhelpers.inc.php';
function return_user()
|
|
|
|
|
nomidi
Dabei seit: 07.09.2007
Ort: bei Bremen
Alter: 47
Geschlecht:
|
Verfasst Mo 10.09.2007 09:01
Titel
|
|
|
ISt ein bisschen schwer durch deine DAtei durchzusteigen. Aber dir Funktion die du nach einem Login aufrust, muß einfach $_SESSION['user_id'] = $hit['deine MYSQL user id'] haben.
Dieses wiederum kannst du dann beim jedem seitenaufruf abfragen mit isset und z.B. auch mit is_numeric .
|
|
|
|
|
Benutzer 4545
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mo 10.09.2007 09:11
Titel
|
|
|
Zitat: | ISt ein bisschen schwer durch deine DAtei durchzusteigen. |
Das finde ich auch. Kann man das irgendwie vereinfachen?
Danke für den Tipp, ich teste das mal eben und melde mich wieder, wenn ich Fragen habe (was wohl der Fall sein würd )
ehm..hab gerad was gesehen. kann man die Funktion da auch für verwenden? Die war ja schon da in der sessionhelpers.php
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM einloggen
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}
Zuletzt bearbeitet von am Mo 10.09.2007 09:14, insgesamt 1-mal bearbeitet
|
|
|
|
|
nomidi
Dabei seit: 07.09.2007
Ort: bei Bremen
Alter: 47
Geschlecht:
|
Verfasst Mo 10.09.2007 09:19
Titel
|
|
|
ich würde den HTML Code von PHP Trennen. Und auf jedenfall alles etwas besser einrücken. So hast du einen schnellere Übersicht über deine Code.
Und auf jedenfall mußt du die Eingaben vor der DB Abfrage prüfen !
|
|
|
|
|
Benutzer 4545
Account gelöscht Threadersteller
Ort: -
|
Verfasst Mo 10.09.2007 09:29
Titel
|
|
|
Meinst du mit trennen in der Datei voneinander mit Absätzen oder so trennen
oder in zwei Dateien aufteilen?
Welche Eingaben denn genau? Sorry *verwirrtbin*
Würde das jetzt auch klappen mit der Überprüfung, ob man eingeloggt ist mit der
function check_user($name, $pass) - Funktion wenn ich die so immer oben nach
der Session in der Datei include?
include 'sessionhelpers.inc.php';
function check_user()
|
|
|
|
|
nomidi
Dabei seit: 07.09.2007
Ort: bei Bremen
Alter: 47
Geschlecht:
|
Verfasst Mo 10.09.2007 09:38
Titel
|
|
|
Also verwirren wollte ich dich nicht
Also nach dem Login Versuch rufst du deine check_user($name, $pass) auf.
Dort setzt du ebenfalls herein $_SESSION['user_id'] = $user['UserId'].
Deine Funktion logged_in() würd ich die DB Abfrage raus nehmen, und dann einfach in der Funktion abfragen mit isset ob $_SESSION['user_id'] gespeichert ist.
Deine Formular eingaben nach dem $_POST müssen dann noch mit stripslashes, mysql_real_escape_string o.ä. überprüft werden.
Ach ja, deine logged_id einfach am Anfang immer ausführen.
Zuletzt bearbeitet von nomidi am Mo 10.09.2007 09:38, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
frage wegen ausloggen htaccess
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|