shaq110
Goto Top

PHP Login MySQL

Hi Leute,
will auf meine Homepage einen PHP Login einbauen. (http://www.fixmypc.de)Nu) leider fehlt mir jeglicher ansatzpunkt zur aufbau der Website usw. Wollte das ganze mit ner Session Variable Lösen. Das Problem besteht darin, dass die Homepage aus 5 komplett einzelnen aber vom Aufbau her identiscehn Seiten besteht. Würde ich nun auf einer Seite mich per php einloggen und dann zu einer anderen wechseln, müsste ich ja die Variable erneut prügfen lassen, d.h. den Code vom Login der 1tenseite auf alle 5 kopieren. Haut das hin? Weil das hört sich für mich zimelich umständlich an. Oder st es besser wenn ich die Seite auf der ich eingelogt bin permanent lasse und den rest der seiten in einem IFrame lade? So zum Grundaufbau. Ich will die Daten bzw die Rechte der Benutzer aus einer MySQL Datenbank auslesen. gibts da irgendwo nen Workshop oder vorgefertigte Beispiele? Würde mich sehr über ne antwort freuen

Dankeschööön

Content-Key: 81797

Url: https://administrator.de/contentid/81797

Printed on: April 23, 2024 at 07:04 o'clock

Member: scan5416
scan5416 Feb 27, 2008 at 13:13:01 (UTC)
Goto Top
Also der Aufbau eines PHP Login über eine MySQL DB ist relativ einfach:

Lasse den Benutzer seine Logindaten in ein Formular eintragen. Sende dies dann per POST an dein eigentliches LoginScript.
Dort überprüfst du ob die Kombination von Benutzername und Passwort in der Datenbank vorhanden ist.

<?
session_start();
...

...
$mysql_login = mysql_query("SELECT * FROM login WHERE username = '".$_POST['benutzer']."' AND password = '".$_POST['password']."'");  

if(mysql_num_rows($mysql_login) != 1) {
   echo "Fehler, Benutzername oder Passwort falsch";  
else
  $_SESSION['username'] = $_POST['benutzer'];  
}
?>

Danach schreibst du ein Script welches überprüft ob der user eingeloggt ist.

Wenn du das beides hast gehst du auf deine anderen 5 Seiten und rufst am Anfang das zuvor geschrieben Script auf:
<?
session_start();
include('./secure.php');  
?>

Ist das ein Vorschlag??
Member: shaq110
shaq110 Feb 27, 2008 at 13:47:22 (UTC)
Goto Top
Ist es dann günstiger wenn ich eineen "Mainframe" habe, in dem der Login ist und die "Unterseiten" per IFrame abrufe oder ist es vom Prinzip her egal? d.h. muss ich sowieso jede Seite die ich öffne egal ob im IFrame oder ganz neu sowieso die Sessionvariable prüfen?
Member: scan5416
scan5416 Feb 27, 2008 at 15:06:59 (UTC)
Goto Top
Wenn du ein richtiger Passwortschutz willst, dann muss es auf jeder Seite eingefügt werden.

Weil wenn ich mich normal einlogge und dann vom iframe die URL der aufgerufenen Seite auslese. Kann ich am nächsten Tag ohne einloggen direkt auf diese Seite gelangen.
Member: filippg
filippg Feb 27, 2008 at 20:25:01 (UTC)
Goto Top
Hallo,

der Code zur Überbrpüfung der Authentifizierung muss in jede Seite - da helfen auch IFrames o.ä. nichts, sonst könnte man ja einfach den Frameinhalt laden.
Aber du musst (und solltest) das nicht jedes mal neu schreiben. Du schreibst den Code einfach einmal in eine extra Datei und bindest diese dann jeweils per include ein.

Gruß

Filipp
Member: Spackenbremse
Spackenbremse Mar 25, 2008 at 10:49:26 (UTC)
Goto Top
Hallo.
Villt löst du das ganze mit der Session-Variable ['userlevel']. Diese wird >0 wenn man sich einloggt. Somit musst du nur auf jeder Seite eine IF - abfrage schreiben, ob $_SESSION['userlevel']>=1 ist und dann die seite anzeigen lassen.
Fals es dir hilft, hier mal ein beispiel

  • head.php

<? include("config.php");  
if(isset($_POST['button']))  
{    //Auslesen der Benutzerdaten aus der Datenbank
    $sql=  "SELECT  
                ID,
                name,
                passwort,
                userlevel
            From
                userlist
             ORDER BY
                ID ASC;";  
    $result=mysql_query($sql) OR die(mysql_error());
    while($row=mysql_fetch_assoc($result))
    {        //überprüfen der Benutzer/Kennwort Kombination
        if($row['name']==$_POST['name']&&$row['passwort']==$_POST['passwort'])  
        {
        $_SESSION['userlevel']=$row['userlevel'];  
        }
        else
        {
        ?>
        <div id='main'>  
        <h2><font color=red>Abfrage der Bnutzerdaten Fehlgeschlagen. <br> Bitte Eingeben überprüfen</font></h2>
        </div>
        <?
        }
    }
Hier ist die Abfrage der Benutzerdaten aus der MySQL Tabelle. In diesem Fall existiert ein "userlevel" - Feld, da ich in diesem Script auch Admins setzen kann (userlevel = 3).

Als nächstes musst du nurnoch auf jeder seite deine IF-Abfrage reinmachen:

  • Beispiel: index.php
<? session_start();?>
<link rel="stylesheet" type="text/css" href="style.css">  
<?
include("head.php");  
if($_SESSION['userlevel']>=1)  
{
?>
<div id='menu'>  
<? include("menu.php"); ?>  
</div>

So kannst du ggf. auch Administratoren setzen, so wie's bei mir der fall ist (einfach eine IF-Abfrage mit $_SESSION['userlevel']==3 ...

Hoffe ich konnte dir helfen