mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 20:27 Benutzername: Passwort: Auto-Login

Thema: php_ein- und ausloggen vom 10.09.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> php_ein- und ausloggen
Seite: 1, 2, 3  Weiter
Autor Nachricht
Benutzer 4545
Account gelöscht Threadersteller


Ort: -

Verfasst Mo 10.09.2007 08:21
Titel

php_ein- und ausloggen

Antworten mit Zitat Zum Seitenanfang

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&ouml;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: Männlich
Verfasst Mo 10.09.2007 08:36
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Benutzer 4545
Account gelöscht Threadersteller


Ort: -

Verfasst Mo 10.09.2007 08:55
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo, danke für die Antwort! Wie genau muss die Funktion dann aussehen? Bin noch nicht
soweit, das ich eine selber schreiben kann. *Schnief*

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: Männlich
Verfasst Mo 10.09.2007 09:01
Titel

Antworten mit Zitat Zum Seitenanfang

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 .
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Benutzer 4545
Account gelöscht Threadersteller


Ort: -

Verfasst Mo 10.09.2007 09:11
Titel

Antworten mit Zitat Zum Seitenanfang

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 *zwinker*)



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: Männlich
Verfasst Mo 10.09.2007 09:19
Titel

Antworten mit Zitat Zum Seitenanfang

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 !
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Benutzer 4545
Account gelöscht Threadersteller


Ort: -

Verfasst Mo 10.09.2007 09:29
Titel

Antworten mit Zitat Zum Seitenanfang

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: Männlich
Verfasst Mo 10.09.2007 09:38
Titel

Antworten mit Zitat Zum Seitenanfang

Also verwirren wollte ich dich nicht Lächel

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen frage wegen ausloggen htaccess
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


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.