kostenloser Webspace werbefrei: lima-city


PHP Login (Zugriff auf seite nur für User)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mtw-datenbank

    mtw-datenbank hat kostenlosen Webspace.

    Hi.

    ich habe folgendes PHP-Script für den Login:

    <?php
    session_start();
    ?>
    
    <?php
    $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden");
    
    $username = $_POST["username"];
    $passwort = md5($_POST["password"]);
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_object($ergebnis);
    
    if($row->passwort == $passwort)
        {
        $_SESSION["username"] = $username;
        echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
        }
    else
        {
        echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
        }
    
    ?>


    Wie muss der PHP tag/code">code auf eben der Geheim.php aussehen, dassman en man nciht eingeloggt ist, automatisch wieder auf die login.html geleitet wird???

    danke & lg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. m*********i

    So:
    if(!isset($_SESSION["username"])){ 
        header("Location: index.php"); 
        exit;
    }


    Beitrag zuletzt geändert: 11.2.2011 21:03:42 von misterbasti
  4. Autor dieses Themas

    mtw-datenbank

    mtw-datenbank hat kostenlosen Webspace.

    also vor dem <html> tag einen
    < php

    if(!isset($_SESSION["username"])){
    header("Location: login.php");
    exit;
    }
    ?>

    rein?
  5. mtw-datenbank schrieb:
    also vor dem <html> tag einen
    < php

    if(!isset($_SESSION["username"])){
    header("Location: login.php");
    exit;
    }
    ?>

    rein?


    Ja.

    Man kann den Skript auch relativ einfach um einen Status erweitern. Nimm einfach eine variable dafür und prüfe ob diese gleich dem entsprechenden Wert für die jeweilige Benutzerstufe ist.

    MfG
  6. justarustyspoon

    justarustyspoon hat kostenlosen Webspace.

    Hiho,
    dein Skript ist anfällig für SQL Injections, bevor du etwas an deine Datenbank schickst, was von einem User kommt, musst du diese Daten überprüfen, und ggf. unerlaubte Zeichen ausschließen.

    Am einfachsten kann das zum Beispiel so aussehen:

    [...]
    $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden");
    
    $username = mysql_real_escape_string($_POST["username"], $verbindung); 
    $passwort = md5($_POST["password"]);
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    [...]
  7. Autor dieses Themas

    mtw-datenbank

    mtw-datenbank hat kostenlosen Webspace.

    also mach ich das
    < php

    verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden");

    $username = mysql_real_escape_string($_POST["username"], $verbindung);
    $passwort = md5($_POST["password"]);

    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    if(!isset($_SESSION["username"])){
    header("Location: login.php");
    exit;
    }
    ?>

    vor den HTML?
  8. justarustyspoon

    justarustyspoon hat kostenlosen Webspace.

    Hiho,
    anscheinend bringst du die Dinge nun durcheinander.
    Du hast das PHP Skript, welches die Überprüfung der Daten vornimmt und danach entscheidet, ob die Login-Daten gültig sind. Das PHP Skript kannst du von einer HTML Seite aufrufen lassen, welches ein Eingabeformular zur Verfügung stellt, oder du baust das Formular und die Auswertung in eine Datei. Dazu lies dir bitte den Artikel Affenformular durch.

    Dann hast du deine Seiten, die man nur sehen soll, wenn man authentifiziert ist, dazu dient dieser Code am Anfang der Seiten (diese müssen dann die Endung .php haben anstatt .html)

    <?php
    if(!isset($_SESSION["username"])){ 
        header("Location: index.php"); 
        exit;
    }
    ?>
    
    <!-- dann folgt die eigentliche HTML Seite -->


    Das "Verarbeitungsskript" sieht nach wie vor so aus:

    <?php
    session_start();
    
    $verbindung = mysql_connect("mysql.lima-city.de", "USERNAME" , "PASSWORT")
    or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("db-name") or die ("Datenbank konnte nicht ausgewählt werden");
    
    $username = mysql_real_escape_string($_POST["username"], $verbindung);
    $passwort = md5($_POST["password"]);
    
    $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_object($ergebnis);
    
    if($row->passwort == $passwort)
        {
        $_SESSION["username"] = $username;
        echo "Login erfolgreich. <br> <a href=\"geheim.php\">Geschützer Bereich</a>";
        }
    else
        {
        echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
        }
    
    ?>


    Beitrag zuletzt geändert: 12.2.2011 13:50:13 von justarustyspoon
  9. Autor dieses Themas

    mtw-datenbank

    mtw-datenbank hat kostenlosen Webspace.

    danke.

    doch wenn cih das so mache, klappt registrierung & Login, auf der index.php erscheint jedoch immer
    < php if(!isset($_SESSION["username"])){ header("Location: login.php"); exit; } ?>


    VOR dem Siteninhalt
  10. justarustyspoon

    justarustyspoon hat kostenlosen Webspace.

    Damit PHP Code ausgeführt wird, welcher zwischen <?php und ?> steht, muss die Dateiendung .php sein und nicht .html. Überprüf das mal. Eigentlich wird PHP Code nämlich nicht im Browser angezeigt. ^^

    Edit:
    Oh habe gerade gesehen, dass du ein Leerzeichen zwischen < und ? hast. Es muss schon <?php und nicht < ?php sein.

    Solltest du mehr wollen, als nur mal PHP zu probieren, solltest du die Grundlagen lernen, auf Dauer wird dir niemand alles vorkauen.

    Im Internet gibt es zwar genügend Tutorials, da weiß Google sicherlich mehr als ich, aber ich persönlich bevorzuge das altmodische Medium. Und da würde ich nach einem drei Punkte Plan vorgehen.


    Für den Einstieg

    Für den Spaß

    Für weitere Ambitionen

    Beitrag zuletzt geändert: 12.2.2011 14:17:42 von justarustyspoon
  11. Autor dieses Themas

    mtw-datenbank

    mtw-datenbank hat kostenlosen Webspace.

    Hi.

    Danke, das Leerzeichen war schuld.

    Jetzt das nächste problem.

    Ich logge mcih ein, und werde auf die index.php verlinkt.

    Diese leitet mcih jedoch sofort wieder auf die login.html weiter...

    woran liegt das?
  12. 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!