Avatar billede ballegaarden Nybegynder
31. januar 2009 - 19:40 Der er 7 kommentarer og
1 løsning

Hjælp til en simpel PHP login

Jeg håber en kan hjælpe mig med en simpel login. 
Jeg ved ikke om jeg helt forstår hvordan et login fungerer. 
Skal det forståes sådan at man har en side med et link til en side man gerne skulle være beskyttet, dette link linker til min login side, der bliver skrevet brugernavn og password her og login knappen linker så til den side der er beskyttet.
Nedenstående skulle være en simpel kode, da jeg ikke har brug for at der skal gemmes en masse oplysninger om brugernavne, men de få som må komme på den beskyttede side får det samme brugernavn og password, så de kan logge ind.
Hvis det skal forståes som jeg beskriver, hvor skal så oplysningerne indskrives i php'en om password og brugernavn? samt linket til den beskyttede side.
Er jeg helt forkert på den, eller er der en som kan skære det ud i pap for mig.


//login.php
<?php
session_start();
$brugernavn = "brugernavn";
$kodeord = "kodeord";

IF($_POST['action'] == "login"){
    IF($_POST['logname'] == $brugernavn AND $_POST['logpass'] == $kodeord){
        $_SESSION['status'] == "login";
       
        echo "Du er logget ind";

    } ELSE {
        echo "Du er ikke logget ind";
}
include("login_form.php");
?>






//login_form.php
<form action="#" method="post">
<input type="hidden" name="action" value="login">
Brugernavn: <input type="text" name="logname" size="25">
Kodeord: <input type="password" name="logpass" size="25">
<input type="submit" name="submit" value="Login">
</form>
Avatar billede kongfjong Nybegynder
31. januar 2009 - 19:58 #1
Et login fungerer sådan, at en bruger indtaster brugernavn og kode i en formular som den du har nederst. Når han trykker "Login" føres han over på en side (en anden fil) hvor det han har indtastet er korrekt.

Måden han føres over på den anden side er ved "action"-attributten i form-tagget. I dit tilfælde er det der hvor der står '#'. I dit tilfælde er det dog ikke en anden side du bliver ført over til, men faktisk den samme side :)

På den "nye" side, tjekkes der altså på det som brugeren har indtastet i formularen. Det kan være ved at trække information ud fra en database og sammenligne eller, som i dit tilfælde, i noget hardcoded kode med variabler der indeholder det korrekte match af brugernavn og kode.

I dit tilfælde er det
$brugernavn = "brugernavn"; <-- Brugernavnet skriver du der hvor det står "brugernavn"
$kodeord = "kodeord"; <-- Koden skriver du der hvor der står "kodeord" :)
Avatar billede ballegaarden Nybegynder
01. februar 2009 - 11:48 #2
Jeg kalder den øverste php fil login-form.php og ændre ikke noget i den.
I den nederste ligger jeg ind i et html dok og indtaster login-form.php i stedet for #
Under formen sætter jeg et par billeder og tekst og oploder dem begge.

Skulle det så ikke virke på den måde at billederne først kunne ses, når koden er rigtig indtastet.

Jeg troede ikke at det var så svært at lave et login, for dette her virker ikke.
Jeg må lave noget helt forkert eller også kan jeg ikke læse og forstå hvad du prøver at fortælle mig.

Sådan ser min html kode ud:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="da">
<head>
  <meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
  <title>karen</title>
  <meta content="Damsgaard" name="author">
</head>
<body>
<form action="login-form.php" method="post"><input
name="action" value="login" type="hidden">
Brugernavn: <input name="logname" size="25"
type="text">
Kodeord: <input name="logpass" size="25"
type="password">
  <input name="submit" value="Login" type="submit"></form>
<img style="width: 246px; height: 200px;" alt=""
src="logo.jpg"> dette er en prøve &nbsp;<img
style="width: 246px; height: 200px;" alt=""
src="logo.jpg">
</body>
</html>
Avatar billede kongfjong Nybegynder
01. februar 2009 - 13:44 #3
Nej, for i den fil hvor du har billederne, skal du så tjekke på variablen $_SESSION['status'] og dens indhold. I login-form.php sætter du $_SESSION['status'] til "login" hvis brugeren har tastet det rigtige brugernavn og den rigtige kode ind :)

Så altså et tjek under formlen hvad værdien af $_SESSION['status'] er, således.

<?php
if($_SESSION['status'] == "login") {
?>
<img style="width: 246px; height: 200px;" alt=""
src="logo.jpg"> dette er en prøve &nbsp;<img
style="width: 246px; height: 200px;" alt=""
src="logo.jpg">
<?php
}
?>

Det er dog ikke den umiddelbart logiske opbygning, men den virker isoleret på at vise billederne eller ej. Den vil dog til hver en tid vise formen, og jeg går ud fra, at logikken skal være sådan, at når brugeren ikke er logget ind, vises formen og ikke billederne, og når man ER logget ind er det selvfølgelig omvendt:)

For at opnå det, må man gøre følgende:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="da">
<head>
  <meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
  <title>karen</title>
  <meta content="Damsgaard" name="author">
</head>
<body>
<?php
if(!isset($_SESSION['status']) || $_SESSION['status'] != "login")
{
?>
<form action="login-form.php" method="post"><input
name="action" value="login" type="hidden">
Brugernavn: <input name="logname" size="25"
type="text">
Kodeord: <input name="logpass" size="25"
type="password">
<?php
} else {
?>
  <input name="submit" value="Login" type="submit"></form>
<img style="width: 246px; height: 200px;" alt=""
src="logo.jpg"> dette er en prøve &nbsp;<img
style="width: 246px; height: 200px;" alt=""
src="logo.jpg">
<?php
}
?>
</body>
</html>
Avatar billede ballegaarden Nybegynder
01. februar 2009 - 16:32 #4
Min login_form.php er som du beskriver:

//login.php
<?php
session_start();
$brugernavn = "brugernavn";
$kodeord = "kodeord";

IF($_POST['action'] == "login"){
    IF($_POST['logname'] == $brugernavn AND $_POST['logpass'] == $kodeord){
        $_SESSION['status'] == "login";
       
        echo "Du er logget ind";

    } ELSE {
        echo "Du er ikke logget ind";
}
include("login_form.php");
?>

Den linie du skriver: - if(!isset($_SESSION['status']) || $_SESSION['status'] != "login") - må der godt være udråbstegn i den??

Jeg har lige prøvet dem begge og jeg kan stadig se billederne, uden at skulle logg på.
Avatar billede kongfjong Nybegynder
01. februar 2009 - 17:35 #5
Kan se du inkluderer login_form.php i login.php. Det gør at du ikke skal sætte action="login-form.php" i din form, men blot action="" :)
Avatar billede ballegaarden Nybegynder
02. februar 2009 - 00:54 #6
Jeg har endeligt fundet ud af hvor mit virkelige problem var. Jeg gemte i html og ikke i php, hvor formlen var.
Avatar billede kongfjong Nybegynder
02. februar 2009 - 08:34 #7
Hehe ja det er selvfølgelig en forudsætning :)
Avatar billede ballegaarden Nybegynder
09. januar 2012 - 11:35 #8
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester