Loginfunktion für zukünftigen Adminbereich

MalcolmX1

Mitglied
Hallo zusammen,
ich schreibe momentan an einer Loginfunktion, für einen geplanten Adminbereich meiner Homepage. Irgendwie will mir das nich gelingen und langsam blick ich garnicht mehr durch.
Hier mal meine Dateien:
/inc/functions.inc.php
PHP:
<?php
    function logout()
    {
        echo
        "<form action='".$_SERVER['PHP_SELF']."' method='post'>\n".
    	"   <input type='submit' value='Ausloggen' name='cancel'>\n".
    	"</form>\n";
    }
    //-----------------------------------------
       function check()
    {
        if(isset($_POST['cancel']))
        {
            session_destroy();
            Header("Location: index.php");
            exit();
        }
        else
        {
            if((isset($_SESSION['user'])) AND (isset($_SESSION['pass'])))
            {
                include "users.php"; // PHP keine globalen Variablen kennt

                if(($_SESSION['user'] == $adminname1 AND $_SESSION['pass']== $adminpass1)
                    OR ($_SESSION['user'] == $adminname2 AND $_SESSION['pass'] == $adminpass2))
                {
                $login= yes;
                 return $login;
                }

            }
            elseif((isset($_POST['user'])) AND (isset($_POST['pass'])))
            {
                include "users.php";  // da PHP keine globalen Variablen kennt

                $_SESSION['user'] = $_POST['user'];
                $_SESSION['pass'] = md5($_POST['pass']);
                if(($_SESSION['user'] == $adminname1 AND $_SESSION['pass']== $adminpass1)
                    OR ($_SESSION['user'] == $adminname2 AND $_SESSION['pass'] == $adminpass2))
                {
                $login= yes;
                return $login;
                }
            }
            else
            {
                echo
                "<form action='".$_SERVER['PHP_SELF']."' method='post'>\n".
                "<input type='text' name='user'>\n".
                "<input type='password' name='pass'>\n".
                "<input type='submit'>\n".
                "</form>\n".
                "Bitte geben sie ihren Benutzernamen und das Passwort ein!\n";
            }
        }
    }

/inc/users.php
PHP:
<?php
//Definition der Admin Usernamen
$adminname1= "User1";
$adminname2= "User2";
$adminpass1= "104dc980a714a07dfa0c34a558ba12d6";
$adminpass2= "f241f4023df6233784c9ead350483e8a";
?>

index.php
PHP:
<?php
session_start();
include "./inc/functions.inc.php";
check();
if (isset($login)){
//hier soll halt alles rein, was nur der eingeloggte Admin sehen kann
echo "test";
logout();
}
?>

Wenn ich mich nun einloggen will, seh ich nur ne leere Seite, ganz egal ob die Logindaten richtig sind oder nicht.
Hoffe ihr könnt mir helfen und meine Ansätze sind nicht ganz falsch...
LG
MalcolmX
 
Hallo @MalcolmX1

Dein Ansatz ist schon richtig, nur finde ich es etwas kompliziert wie du das machst.
Du machst zweimal das ganze If und testen der Variablen, obwohl du (wenn die Daten per $_POST kommen) sowieso in $_SESSION zwischenspeicherst.

Da könntest ja eigentlich nur ein

PHP:
if($_POST['username'])
 {
    $_SESSION['username'] = ...

Und dann musst du das if auch nur einmal ausführen ;)

Zu dem Fehler warum es nicht geht:
Ich denke, dass es daran liegt, dass du eigentlich niergens die Variable $login ausserhalb der Funktion definierst. (Variablen, die in der Funktion definiert werden bleiben in der Funktion und sind von aussen (normalerweise) nicht erreichbar.

Aber du hast ja schon den richtigen Schritt mit return $login; gemacht ;)

Ruf doch bitte die Funktion einfach mal so auf:
PHP:
$login = check();

dann sollte es klappen.


Und grad noch eine Frage:
Was meinst du mit: // PHP keine globalen Variablen kennt ? ;)


Grüße Simon
 
Hallo @MalcolmX1
Und grad noch eine Frage:
Was meinst du mit: // PHP keine globalen Variablen kennt ? ;)

Erstmal vielen Dank für deine Antwort. Es klappt nun schonmal, dass die Dateien, die für die Admins sichtbar sein sollen auch sichtbar sind nach dem Login, aber wie krieg ichs jetzt noch hin, wenn ein falsches Passwort eingegeben wird, dass dann ne Fehlermeldung kommt und keine leere Seite?
Zu deiner Frage: Das is nen Kommentar von einem der sich eminen Code mal angesehen hat, den ich nur vergessen hab zu tolgen :eek:
 
Danke für den Link Chris, ich werd mir das in ner ruhigen Stunde mal genau durchlesen:)

@SimonErich: Kannst du mir mit der ese Abfrage helfen? Irgendwie steh ich da grad komplett auf dem Schlauch, wo ich die einsetzen muss:( Das Script wäre recht wichtig, sodass das erstmal stehen muss. Wenn ichs dann anschließend noch übersichtlicher gestalten kann, umso besser;)
 
Zurück