kostenloser Webspace werbefrei: lima-city


Userbereich

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    xxxalphaxxx

    xxxalphaxxx hat kostenlosen Webspace.

    hallo erstmal,
    ich will ein userbereich auf meine hp amchen ... da ich aber noch am anfang von php und MySQL bin wird das sehr schwer ^^ (ok html knn ich recht gut ^^)
    könntet ihr mir tuts epfehlen die mir etwas bringen ? also mir dem anfänger das ich zum fortgeschrittenen übertreten kann und solche sachen machen kann ^^
    es sollte halt in die richtung (wie schon gesagt) usermenüs etc. gehen

    google usw. bringt nur shit raus (so wie ich gesucht hab lol)^^
    hier hab ich au scho en paar tuts aber naja bin halt noch GANZ am anfang ^^
    wäre halt au gut tuts zu geben die mich näherrann führen zu php MySQL ^^


    achja noch ne Frage brauch ich eine MySQL-Datenbank um ein Usermenü mit folgenden punkten zu machen :
    -online tagebuch(kann nur der accountinhaber sehen)
    -online bookmarkinmg (kann nur der accinhaber sehen oder alle soll man wählen können)
    -Nickpage

    jo die sache hab ich mir vorgenomme ^^


    MfG AlPhA
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Lern auf jeden Fall erst mal gründlich SQL, dann wirst du von alleine drauf kommen, wie man einen Loginbereich macht (mit Userberechtigungen). Auf jeden Fall solltest du dir noch Sessions anschauen, das erleichtert dir einiges.

    Userbereich:
    beim einloggen das eingegebene Passwort mit dem aus der Datenbank vergleichen, bei Richtigkeit eine Session setzen. Dann kannst du herausfinden, ob man eingeloggt ist und welcher Benutzer man ist.

    Onlinetagebuch:
    Zu jedem Eintrag die User-ID speichern, dann nur die Einträge des eingeloggten Users auflisten, somit kann nur dieser seine Einträge sehen.

    Nickpage:
    Einfach eine Seite, auf der du die Daten eines Users aus der Datenbank hohlst und anzeigst. Welcher User ausgewählt werden soll, kannst du z.B. über Parameter festlegen.

    Wenn du die Grundmaterie erfolgreich verstehst, dann kannst du das ganz leicht selber machen, ohne ein Tutorial.
  4. Autor dieses Themas

    xxxalphaxxx

    xxxalphaxxx hat kostenlosen Webspace.

    ehm ja ich hab zwar nichts gerafft aber ich wollte eigentlich nur tuts für MySQL und PHP UM ein Userbereich zu mache ^^
  5. Hi ich bin der Neue,

    zu erst einmal, danke für diese tolle Seite, hier mein erster kleiner Beitrag, ich hoffe geholfen zu haben.

    Passwortgeschütze Seiten mit PHP-Session, MySQL und HTTP 1.0/WWW-Authenticate

    Das Problem:
    Das HTTP Protokoll, ist mit über 15 Jahren für Computerverhältnisse wahnsinnig alt und für das was wir heutzutag im Internet machen wollen eigentlich unzureichend. Ein Manko des Protokolls ist, dass jede Anfrage als alleinstehende Entität vom Server interpretiert wird, d.h. es gibt keine eindeutige Übergabe von einem Dokument zum nächsten seitens des Protokolls, eine History auf der Klientenseite oder serverseitig mittels IP Adresse und des HTTP-Referers ist zwar vorhanden aber vor Zugriff Dritter nicht sicher.

    Die PHP Session:
    Glücklicherweise bietet PHP mit der Session-Funktionsfamilie ein sehr leichtes und mächtiges Tool um Besucher während ihres Besuches eindeutig zu identifizieren und Informtionen von einem zum nächsten Dokument zu übertragen. Dies funktioniert mit Hilfe von Cookies und falls diese aus welchem Grund auch immer vom Klienten nicht unterstützt werden mittels einer Session-ID, die über die POST oder GET-Methode automatisch übergeben werden.
    Mehr zu diesem Thema findest Du hier: http://de3.php.net/manual/de/ref.session.php

    Die Zugangsdaten:
    Da wir einen passwortgesützten Bereich bauen wollen, in dem nur registrierte Benutzer Zugriff auf Daten oder Funktionen haben, müssen wir irgendwo die Benutzerdaten speichern. Wie der Titel dieser Diskussion impliziert haben wir uns für MySQL entschieden, und das ist gut so. Wir haben also eine Datenbank in der sich eine Tabelle befindet, in der wiederrum sich Felder wie "user" und "pass" befinden. Wie die Daten da rein kommen überlasse ich erstmal Eurer Fantasie, für uns ist es erstmal nur wichtig, dass diese Daten gegeben sind.

    Die Zugangsberechtigungsüberprüfung:
    Nun muss das PHP-Skript nur noch folgendes leisten:

    1.) Session überprüfen, ob der Besucher bereits eingeloggt ist
    2.) ggf. übermittelt Zugangsdaten mit der Datenbank abgleichen
    3.) wenn 1.) oder 2.) erfolgreich ist, Zugang gewähren
    4.) wenn 1.) und 2.) nicht erfolgreich ist, Zugang verwähren
    5.) wenn die Sitzung ausgelaufen ist, den Zugang wiedersperren

    Zu Punkt 1.): Kein Problem, weil wir die von PHP zur Verfügung gestellte Session-Funktion benutzen.

    Zu den Punkten 3.) und 4.): Kein Problem eine einfache Bedingungsabfrage, mit if/else oder switch leicht zu lösen.

    Bei Punkt 2.): Stellt sich nur noch die Frage, wie kommen die Daten rein. Die einfachste Lösung ist über die POST und/oder GET Methode eines HTML-Formulars. IMHO eleganter ist die hier vorgestellte Lösung über WWW-Authenticate. Das HTTP Protokoll unterstützt im Header (also bevor irgendwelche Daten einer Seite übermittelt werden) die Übergabe von Zugangsdaten. Bekannt ist diese Technologie auch fälschlicherweise als htaccess. Dabei ist htaccess nur die Art und Weise, wie ein Apache Webserver WWW-Authenticate implementiert, nämlich über Konfigurationsdirektiven, die bei Bedarf für ein Verzeichnis über eine Datei mit dem Namen .htaccess nachträglich vom Server eingelesen werden. Meistens gehört dann noch eine sogenannte .htpasswd Datei dazu, in der die Usernamen und Passwörter (meist verschlüsselt) gespeichert werden. Da die Funktion WWW-Authenticate keine Apache eigene, sondern eine Funktion des HTTP-Protokolls ist, können wir auch in PHP darauf zugreifen. Das geschieht in der PHP-Funktion header(), die einige von Euch vielleicht zum Weiterleiten benutzen, und dem Array $_SERVER, in dem neben anderen wichtigen Dingen auch die Zugangsdaten auftauchen, die in das POP-UP von WWW-Authenticate eingegeben werden.

    Wenn einmal verstanden, sollte auch das kein Problem in der Programmierung darstellen.

    Punkt 5.) allerdings stellt, wenn man sich für WWW-Authenticate entschieden hat, ein Problem dar, und zwar deshalb, weil die verschiedenen Browser sich nicht an die RFCs halten und unterschiedlich mit der Übergabe und Speicherung der Zugangsdaten umgehen. Im einfachsten Fall reicht es die Session mit session_destroy() zu zerstören. Da aber die Browser die Credentials (Zugangsdaten) bei einem Neuaufruf wieder übermitteln, wird jedesmal ein neue berechtigte Session entstehen. Die Lösung die alle gängigen Browser abdeckt ist, skript-/serverseitig das übermittelt Passwort überschreiben und gleichzeitig ein neues Realm setzen. Realm (englisch für Bereich/Reich/Gebiet) steht für ein serverseitig gesetzten Namen für den geschützten Bereich, auch dieser wird in der Funktion header() gesetzt und ist somit dynamisch und kann von uns verändert werden.

    Alle fünf Punkte in eine Funktion gepackt, die true zurück wirft, wenn jemand rein darf, und fertig.

    Lange Rede kurzer Sinn hier ist der dazu gehörende Code, den ich vor langer Zeit einmal geschrieben habe, der ist so alt, das der public domain ist, als zur freien Verfügung. :cool:

    /* Vars to set in a config file / config array
     * $config['auth']['relam'] = 'my restricted area';
     * $config['session']['ttl'] = 3600; // ttl = time to live, in seconds
     *
     * before calling the function, do this:
     * $dbc = mysql_connect("host", "user", "pass", "database");
     * session_start();
     */
    
    function auth()
    {
        global $config, $dbc;
        $return = false;
        $now = time();
        if (!isset($_SESSION['thisrelam']))
        {
            $_SESSION['thisrelam'] = $config['auth']['relam'] . " (ConnectID:".md5($now).")";
        }
        $relam = $_SESSION['thisrelam'];
    
        // check for session values
        if (is_numeric($_SESSION['uid']))
        {
            if ($_SESSION['expire'] < $now) logout();
            else
            {
                 $return = true;
                $_SESSION['expire'] = $now + $config['session']['ttl'];
            }
        }
        elseif (isset($_SERVER[PHP_AUTH_USER]) && isset($_SERVER[PHP_AUTH_PW]) && !isset($_SESSION['logout']))
        {
            //connect to database and get info!
            $sql = "SELECT * FROM `your_user_tab` WHERE `user` = '$_SERVER[PHP_AUTH_USER]' AND `pass` = '$_SERVER[PHP_AUTH_PW]'";
            $query = mysql_query($sql,$dbc); // where $dbc is you connection handle
            if (mysql_num_rows($query) == 1)
            {
                $return = true;
                $_SESSION['expire'] = $now + $config['session']['ttl'];
            }
            else
            {
                
                header('HTTP/1.0 401 Unauthorized');
                $errflag = 1;
                exit;
            }
        }
        else
        {
            unset($_SESSION['logout']);
            unset($_SERVER[PHP_AUTH_USER]);
            header('WWW-Authenticate: Basic realm="'.$relam.'"');
            header('HTTP/1.0 401 Unauthorized');
            $errflag = 1;
    		exit;
    
        }
    	if (isset($errflag))
    	{
    		 echo "access denied<hr>"; // put your access denied html code here, or redirect!
    	}
        return $return;
    }


    Packe die Funktion in eine library, die Du include'st und schütze Deine PHP-Seite so:

    include_once("/pfad/zu/der/funktions/bibliothek.php");
    if (auth())
    {
     /*
      * Hier den PHP Code / HTML der geschützen Seite
      *
      */
    }


    Extremst wichtig und darum auch zuletzt! Wenn Ihr mit der header()-Funktion am HTTP Header rumspielt muss das VOR der Übertragung jedes HTML Codes (auch Leerzeichen) passieren.

    Wenn Du bis hier hin durch gehalten hast, danke fürs Lesen!

    Beitrag geaendert: 30.1.2007 14:31:32 von kktbdev

    Beitrag geaendert: 30.1.2007 14:32:06 von kktbdev
  6. @kktbdev
    Du weißt schon, dass das hier ein Forum ist, in dem eigene Lösungsvorschläge gefragt sind und nicht nur irgendwelche Dinge von anderen Webseiten kopiert werden sollen? Es hätte auch genügt einen Link anzugeben, wo sich xxxalphaxxx informieren kann. Und auch im Internet gibt es sowas wie ein Copyright, also wenn du schon was kopierst, solltest du wenigstens deine Quelle angeben. Da dies ein recht professionelles Tutorial ist, ist der Author sicherlich nicht damit einverstanden, dass du das hier unter deinem Namen ausgibst.
  7. 100% von mir, sowohl das Script als auch der Text, Danke für die Unterstellung.
  8. Autor dieses Themas

    xxxalphaxxx

    xxxalphaxxx hat kostenlosen Webspace.

    wow sag ich da nur das is doch mal ein beitrag der hilft !
    leider kann ich es gadre nicht abarbeiten da ich jetzt handball hab ^^

    aber nachher mach ichs 100 pro und sage dir was rausgekommen ist ^^
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!