Just nu i M3-nätverket
Gå till innehåll

Inloggningssida med medlemmar och lösenord sparade på fil


Jompan

Rekommendera Poster

Jag försöker få till ett script, där jag hittat och kombinerat diverse koder från internet. Det hela funkar bra om jag vet att jag heter 'Admin' och har 'test' som lösen. 

Men hur ska jag göra för att låta nya medlemmar lägga upp namn och lösenord? Och hur kodar jag, så att scriptet kan tolka gamla och nya medlemmar, och tillåta resp avvisa inloggning? 

Så här långt har jag kommit hittills: 

 

Indexfilen.

<?php
//Inkluderar funnktionsfilen.
require ("login.function.php");
 
//Loggar ut användaren om ?logout finns i adressen
if ( isset($_GET['logout']) )
{
    logout();
    header("Location: ./");
}
 
?>
 
<html>
<head>
<meta http-equiv="Content-Type"
      content="text/html;charset=utf-8" />
    <title> Enkel inloggning </title>
</head>
<body>
 
<?php
 
//Ställer villkor: om inloggningsformuläret är postat, så ...
if ( isset($_POST['login_form']) )
{
    $result = login ($_POST['username'], $_POST['password']);
 
    //Om variabeln $result inte är tom
    if ( !empty($result) )
   {
       echo "<p>$result</p><br>";
   }
}
 
// Om du är inloggad
if ( is_logon() )
{
    echo 'Inloggad (<a href="?logout">logga ut</a>)<br>';
}
else
{
?>
    <form action="" method="post">
        Användarnamn:<br>
        <input type="text" name="username"><br>
        Lösenord:<br>
        <input type="password" name="password"><br>
        <input type="hidden" name="login_form" value="1">
        <input type="submit" value="Logga in">
    </form>
 
<?php
}
?>
   <a href="hemlig.php">Hemlig sida</a><br>
    <a href="hemlig2.php">Hemlig sida 2</a>
</body>
</html>

Funktionsfilen

<?php
 
// Sessionsfunktionen startas
session_start();
 
// FUNKTION FÖR ATT LOGGA IN
 
// Skapar en funktion för inloggning: användarnamn + lösenord
function login($username, $password)
{
    //Rätt användarnamn och lösenord
    $correct_user = "Admin";
    $correct_pass = "test";
 
    // empty kollar om variablerna inte är tomma. (!empty returnerar TRUE när argumentet inte är tomt.)
    if ( !empty($username) && !empty($password) )
    {
        //kollar om användarnamn stämmer med användarnamn och lösenord med lösenord
        if ( $username == $correct_user
             && $password == $correct_pass )
        {
             //Allt OK!
             $_SESSION['user_login'] = TRUE;
        }
 
        //Om lösenord eller användarnamn är fel
        else
        {
            return "Användarnamnet eller lösenordet är fel.
                    Kontrollera dessa och försök igen.";
        }
 
    }
 
    //Om användarnamn eller lösen är tomt
    else
    {
        return "Du måste ange lösenord och användarnamn.";
    }
 
}
 
// FUNKTION FÖR ATT LOGGA UT
 
function logout()
{
    $_SESSION['user_login'] = FALSE;
    session_destroy();         // Förstör sessionen
}
 
// FUNKTION FÖR ATT KOLLA INLOGGNING ELLER INTE
 
// TRUE: inloggad / FALSE: i annat fall
 
function is_logon()
{
   // isset kollar om variabeln finns och inte är NULL.
    if ( isset($_SESSION['user_login'])
         && $_SESSION['user_login'] == TRUE )
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
 
?>

Dolt innehåll vid rätt inlogg

<?php
 
// En sida som endast kan läsas av inloggade användare.
//Hämtar och inkluderar funktionsfilen.
require ("login.function.php");
 
//Om vi inte är inloggad
if ( !is_logon() )
{
   //Skicka oss till index.php
    header("Location: index.php");
 
   //Avsluta, visa ingen mer kod på denna sida
   exit;
}
 
//Följande visas endast för dem som är inloggade.
?>
 
<html>
<head>
<meta http-equiv="Content-Type"
      content="text/html;charset=utf-8" />
    <title> Enkel inloggning </title>
</head>
<body>
<a href="index.php?logout">Logga ut</a><br>
<a href="index.php">Till startsidan</a><br>
<p>
   Hemligt innehåll på sida 1!
</p>
</body>
</html>

Finns det någon hjälp därute?

 

// Jompan

Länk till kommentar
Dela på andra webbplatser

lämpligtvis en databas som innehåller infomraiton om användarna så du slipper skriva om din kod varje gång som en nya användare tillkommer

 

 

Alternativt om du inte vill använda en databas kan du ha en array med Användarnamn och en array med lösenord

<?
$users = array(
    "anders" => "mittlösen",
    "barbro" => "katt123",
);
?>

I inloggningen får man loopa bland användarna och se om användarnamnet matchar nyckeln i arrayen sedan om lösenordet matchar värdet till nyckeln och i det fallet sätta en sessionskaka för att behålla igång inloggningen.

Länk till kommentar
Dela på andra webbplatser

Tack för svar och tips. (Men uppgiften är att den ska lösas med filhantering.)

 

Jag är osäker om jag förstår: Nya medlemmar ska själva och via dialogrutan skriva in sina namn och lösenord. Och scriptet ska sedan hämta uppgifterna från en .txt-fil.

 

// Jompan

Länk till kommentar
Dela på andra webbplatser

Det finns ju ingenstans ett ställe att skapa en användare.

Systemet borde ju inte skapa upp en ny användare om uppgifterna inte stämmer. Deå blir det en ny användare varje gång någon råkar stava fel användare.

Länk till kommentar
Dela på andra webbplatser

Ja, det ser ut som om en sådan fil skulle funka. Men mina kunskaper är inte så stora så att jag kan justera underlaget från php-manualen till att passa in i mina filer.

 

// Jompan

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...