individuelle Loginseite mit php authentifizierung / htacces

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • individuelle Loginseite mit php authentifizierung / htacces

    Hallo,
    ich möchte mein backend per htaccess schützen, kein Problem, nun möchte ich aber nicht dieses hässlich popup anbieten sondern eine schöne loginseite wie bei wordpress etc.

    nun habe ich folgende htaccessdatei:
    AuthType Basic
    AuthName "Administration"
    AuthUserFile /srv/www/vhosts/mywords-cms.de/httpdocs/acc/.htpasswd


    <Files *.*>
    require valid-user
    </files>

    <Files login.php>
    Allow from all
    Satisfy any
    </files>

    die erlaubt mir, dass ich due login seite aufrufen kann, während alle anderen geschützt sind.
    folgendes authenticate script habe ich gefunden.

    Nun weiß ich nicht weiter, wenn ich die login-daten poste öffnet sich wieder das popup wie üblich bei htaccess geschützen bereichen. Oder es wird angegeben, dass das passwort und login nicht korrekt sind.

    Das Login Script sieht folgendermaßen aus:

    PHP-Code:
    <form action="auth.php?action=logIn" method="POST">
    <
    input type="text" name="email"><br>
    <
    input type="password" name="password">
    <
    input type="submit">
    </
    form
    Vielleicht weiß jemand weiter
    PHP-Code:

    <?php

    $_user_ 
    $_POST['email'];
    $_password_ $_POST['password'];

    session_start();

    $url_action = (empty($_REQUEST['action'])) ? 'logIn' $_REQUEST['action'];
    $auth_realm = (isset($auth_realm)) ? $auth_realm '';

    if (isset(
    $url_action)) {
        if (
    is_callable($url_action)) {
            
    call_user_func($url_action);
        } else {
            echo 
    'Function does not exist, request terminated';
        };
    };

    function 
    logIn() {
        global 
    $auth_realm;

        if (!isset(
    $_SESSION['username'])) {
            if (!isset(
    $_SESSION['login'])) {
                
    $_SESSION['login'] = TRUE;
                
    header('WWW-Authenticate: Basic realm="'.$auth_realm.'"');
                
    header('HTTP/1.0 401 Unauthorized');
                echo 
    'You must enter a valid login and password';
                echo 
    '<p><a href="?action=logOut">Try again</a></p>';
                exit;
            } else {
                
    $user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '';
                
    $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
                
    $result authenticate($user$password);
                if (
    $result == 0) {
                    
    $_SESSION['username'] = $user;
                } else {
                    
    session_unset($_SESSION['login']);
                    
    errMes($result);
                    echo 
    '<p><a href="">Try again</a></p>';
                    exit;
                };
            };
        };
    }

    function 
    authenticate($user$password) {
        global 
    $_user_;
        global 
    $_password_;

        if ((
    $user == $_user_)&&($password == $_password_)) { return 0; }
        else { return 
    1; };
    }

    function 
    errMes($errno) {
        switch (
    $errno) {
            case 
    0:
                break;
            case 
    1:
                echo 
    'The username or password you entered is incorrect';
                break;
            default:
                echo 
    'Unknown error';
        };
    }

    function 
    logOut() {

        
    session_destroy();
        if (isset(
    $_SESSION['username'])) {
            
    session_unset($_SESSION['username']);
            echo 
    "You've successfully logged out<br>";
            echo 
    '<p><a href="?action=logIn">LogIn</a></p>';
        } else {
            
    header("Location: ?action=logIn"TRUE301);
        };
        if (isset(
    $_SESSION['login'])) { session_unset($_SESSION['login']); };
        exit;
    }

    ?>

  • #2
    Ich habe das gefühl, du vermischst hier zwei verschiedene Dinge...

    Wie genau soll das deiner Meinung nach Funktionieren? Und wo ist die Anleitung in der das behauptet wird?

    Kommentar


    • #3
      also hier ist das script aufgeführt:

      PHP: HTTP-Authentifizierung mit PHP - Manual

      leider weiß ich noch wenig rath, ich möchte einfach nur eine anmeldung realisieren wie man sie bei typo3 oder wordpress vorfindet, eben nicht dieses hässliche popup

      und es soll sicher sein.

      Ich nehme an das bei wordpress und typo3 auch ein htaccess - schutz realisiert ist oder nicht?

      gibt es da einen trick, damit man sich vernünftig anmelden kann?

      Kommentar


      • #4
        okay, nur weil du über diesen Weg ebenfalls ein "hässliches PopUp" erzwingen kannst, bedeutet es nicht, dass du beide Methoden nach belieben mischen kannst.

        Wordpress, Typo und auch dieses Forum verwenden alle ein eigenes Usermanagement mit Sessions. Ein Beispiel hierfür findest du hier: http://www.php-resource.de/forum/cod...usermanagement Mit Htaccess hat das nichts zu tun.

        Wie kommt es eigentlich zu so einer Fragestellung, obwohl ihr das doch alles schon einmal im genannten mywords-cms.de implementiert habt?
        EDIT:
        oder geht es etwa genau darum?
        Zuletzt geändert von TobiaZ; 24.05.2012, 14:58.

        Kommentar


        • #5
          ich bin dabei eine neue generation herauszubringen

          ich muss es wohl dann doch über eine weiche realisieren wie ich das schon gemacht habe, woher kennst du mywords-cms?

          Kommentar


          • #6
            Eine Weiche???

            Du hast MyWords CMS oben selbst genannt (im Pfad). Und auch schon in den Userpages vorgestellt.
            EDIT:
            Ich korrigiere mich, dort war nur die Agenturseite vorgestellt, die jedoch das Produkt beinhaltet.
            Zuletzt geändert von TobiaZ; 24.05.2012, 15:02.

            Kommentar


            • #7
              also eine function die bei jeder seite abgefragt wird

              ob die session login und password vorhanden sind und passen, sollte das nicht der Fall sein, wird das script beendet und man wird auf die loginseite weitergeleitet, außerdem gibt es noch die ip abfrage falls sessions geklaut werden

              Kommentar


              • #8
                Deine "Weiche" ist somit eine simple überprüfung:

                PHP-Code:
                if(!gültige sessionwerte)
                redierect_zu_loginseite(); 
                Es gibt übrigens keinerlei Grund Username und vorallem das Passwort in die Session zu speichern. Auch eine ständige Überprüfung der Gültigkeit dieser Daten bei jedem Seitenaufruf ist nicht notwendig.

                Kommentar


                • #9
                  ja

                  aber vielleicht hast du ja einen tipp wie man das besser machen kann

                  Kommentar


                  • #10
                    Eine vernünftige, wenn auch ältere Implementierung hatte ich ja bereits gepostet...

                    Kommentar

                    Lädt...
                    X