Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:05 Der er 27 kommentarer og
1 løsning

Simpel adgangskontrol

Hej Hej
Jeg sidder lige nu og skal have sat en adgangskontrol på nogle sider - det skal bare være en simpel en !!

Jeg har fundet en på følgende side:
http://www.hjemmesideskolen.dk/scripts/phppass/default.php

Men jeg kan ikke finde ud af det....

Hjælp ??

Jeg indsender lige mine filer.
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:08 #1
Først skal jeg lave default.php siden - den ser sådan ud:

DEFAULT.PHP
<form method="post" action="bruger.php" enctype="multipart/form-data">
<fieldset>
<legend>Indtast brugernavn og password</legend>
<label for="t1">Brugernavn:</label>
<input id="t1" type="text" name="brugernavn" /><br />

<label for="t2">Password:</label>
<input id="t2" type="password" name="password" /><br />

<label for="subm">&nbsp;</label>
<input id="subm" type="submit" value="Log in" />

&nbsp;<input type="reset" name="slet" value="Slet" />
</fieldset>
</form>
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:10 #2
Så skal den tjecke password og navn, den ser således ud:

BRUGER.PHP
<html>
<head>
<title>Hej</title>
</head>
<body>

<?php
ob_start();
$brugernavn = "bruger";
$MD5_password = "lone";
$brugerdata = $_POST['brugernavn'];
$password = md5($_POST['password']);

if($password == "$MD5_password" && $brugerdata == "$brugernavn"){

  session_start();
  $_SESSION['innlogget'] = 1;
  $_SESSION['brugernavn'] = $brugernavn;
  $_SESSION['password'] = $MD5_password;

header ("Location: login.php");
}

  else{
    echo "Forkert brugernavn eller password! Tjek, at [Caps Lock] ikke er aktiveret og prøv igen.";
  }

Ob_end_flush();
?>

...lidt tekst....

</body>
</html>
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:13 #3
Hvis man indtaster "bruger" og "lone" skulle man komme over til denne side:

LOGIN.PHP
<html>
<head>
<title>Testtest</title>
</head>
<body>

<?php
session_start();

if($_SESSION['brugernavn'] && $_SESSION['password'])

{
echo "[

Goddaw - Dette er hemmeligt<br>
<b>Fed-test</b>

] ";
}
else
{
echo "<p>Du skal være logget ind for at se disse sider!
<a href=\"default.php\">Log in</a></p> ";
}
?>

</body></html>
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:15 #4
MEN DET VIRKER IKKE !!! - Det er ligesom om, at den ikke accepterer "bruger" og "lone" ???

Hvad dælen gør jeg galt ?? - Jeg ønsker ikke at anvende kryptering eller lign. sager...

Hjælp ;-)
Avatar billede leif Seniormester
17. november 2004 - 13:16 #5
Linien med $MD5_password = "lone"; der skal lone køres igennem en MD5 hash først
Avatar billede leif Seniormester
17. november 2004 - 13:23 #6
Kør passwordet gennem denne (Er ikke testet):

<?
$password = md5($_POST['hertasterdudetpasswordduvilha']);
echo $password:
?>

Værdien du får sætter du ind i $MD5_password = "lone"; istedet for lone.
Avatar billede leif Seniormester
17. november 2004 - 13:24 #7
Alternativ skal du lave lidt om i scriptet !
Avatar billede sukos Juniormester
17. november 2004 - 13:25 #8
Altså:
$MD5_password = md5("lone");

Og ellers, så en simpel:
<?php
session_start();
?>
<html><head></head>
<body>

<?php
if!isset($_SESSION["navn"], $_SESSION["id"])) {

include("loginform.php");

}else{

echo "Hej ". $_SESSION["navn"];

}
?>

</body></html>

loginform.php:

<form action="/login.php" method="post">
<input type="hidden" name="back" value="<?php echo $_SERVER["REQUEST_URI"]; ?>">
Navn:<br>
<input type="text" name="user"><br>
Password:<br>
<input type="password" name="pass"><br>
<input type="submit" value="Login">
</form>




login.php:

<?php
session_start();

$bruger = "brugernavn";
$passw = md5("password");

if(isset($_POST["back"], $_POST["user"], $_POST["pass"])) {
    if($_POST["user"] == $bruger && $_POST["pass"] == $passw) {
    $_SESSION["navn"] = $bruger;
    $_SESSION["id"] = session_id();
    }
header("Location:". $_POST["back"] ."");
exit;
}

?>
Avatar billede leif Seniormester
17. november 2004 - 13:26 #9
Sådan kunne det også gøres !
Avatar billede sukos Juniormester
17. november 2004 - 13:26 #10
Hov der mangler lige en (

<?php
if(!isset($_SESSION["navn"], $_SESSION["id"])) {
Avatar billede sukos Juniormester
17. november 2004 - 13:29 #11
ehh, login.php skal så ligge i roden af dit domæne, da der bruges / for navnet.
Så vil det være lige meget hvor "dybt" i dirs du befinder dig. Du vil altid submitte til domain.dk/login.php
Avatar billede sukos Juniormester
17. november 2004 - 13:32 #12
Arhhh, shoit! jeg glemmer også lige en md5! :O) ? det er bedre spørge "omvendt"

<?php
session_start();

$bruger = "brugernavn";
$passw = md5("password");

if(isset($_POST["back"], $_POST["user"], $_POST["pass"])) {
    if($bruger == $_POST["user"] && $passw == md5($_POST["pass"])) {
    $_SESSION["navn"] = $bruger;
    $_SESSION["id"] = session_id();
    }
header("Location:". $_POST["back"] ."");
exit;
}

?>
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:37 #13
Tak Tak Tak -

Prøver lige Sukos løsning.......
Avatar billede sukos Juniormester
17. november 2004 - 13:41 #14
Og der er heller ingen grund til at bruge ob_start()
Det er blot et spm. om at "kode rigtigt", så er den ikke nødvendig.

Og lad os sige at loginform.php og login.php brgge ligger i roden af dit domæne, altså
domain.dk/loginform.php
doamin.dk/login.php

så kan du nok bruge:

<?php
if!isset($_SESSION["navn"], $_SESSION["id"])) {

include($_SERVER["DOCUMENT_ROOT"] ."/loginform.php");

}else{

echo "Hej ". $_SESSION["navn"];

}
?>

Så vil det altid være ligegyldigt hvor dybt du befinder dig i dirs
Avatar billede sukos Juniormester
17. november 2004 - 13:42 #15
fuck, nu glemte jeg igen den ( !!!
Avatar billede leif Seniormester
17. november 2004 - 13:47 #16
sukos -> Kan du selv finde ud af hvad du laver lige nu ?
Avatar billede sukos Juniormester
17. november 2004 - 13:47 #17
Jup! :O) (vil jeg da mene!) :O]
Avatar billede andreas_og_far Praktikant
17. november 2004 - 13:50 #18
Hej Hej

Jeg er ikke lige den store ørn i det her og jeg kan ikke lige finde ud af, hvilke filer jeg skal bruge og hvilke jeg ikke skal bruge....

Det ser meget rigtigt ud det du har lavet sukos, MEN - Er det for meget at forlange, hvis jeg spørger om du gider samle de filer som skal bruges, i et svar ???

Det er mere pga af dine rettelser med mere....

;-) Jeg håber du gider.

På forhånd tak for hjælpen
Avatar billede sukos Juniormester
17. november 2004 - 14:03 #19
Okay, filen som skal beskyttes:

<?php
session_start();
?>
<html><head></head>
<body>

<?php
if(!isset($_SESSION["navn"], $_SESSION["id"])) {

include($_SERVER["DOCUMENT_ROOT"] ."/loginform.php");

}else{
?>

<form>
<input type="button" value="Log ud" onclick="window.location.href('/login.php?logud=true');">
</form>

Hej <?php echo $_SESSION["navn"]; ?>

<?php
}
?>

</body></html>


loginform.php:

<form action="/login.php" method="post">
<input type="hidden" name="back" value="<?php echo $_SERVER["REQUEST_URI"]; ?>">
Navn:<br>
<input type="text" name="user"><br>
Password:<br>
<input type="password" name="pass"><br>
<input type="submit" value="Login">
</form>
<?php
if(isset($_SESSION["fejl"])) {
echo $_SESSION["fejl"];
unset($_SESSION["fejl"]);
}
?>



og login.php

<?php
session_start();

$bruger = "brugernavn";
$passw = md5("password");

if(isset($_POST["back"], $_POST["user"], $_POST["pass"])) {
    if($bruger == $_POST["user"] && $passw == md5($_POST["pass"])) {
    $_SESSION["navn"] = $bruger;
    $_SESSION["id"] = session_id();
    }else{
    $_SESSION["fejl"] = "Forkert brugernavn eller password";
    }

header("Location:". $_POST["back"] ."");
exit;
}

if(isset($_GET["logud"])) {
$_SESSION = array();
session_destroy();
header("Location:/");
exit();
}


?>


Og det er så meningen at loginform.php og login.php liger i roden af dit domæne.
Enenste evt. "bøf" er hvis $_SERVER["DOCUMENT_ROOT"] ikke "virker" på dit domæne, altså det gi'r en forkert sti.
Avatar billede andreas_og_far Praktikant
17. november 2004 - 22:56 #20
Hej Hej - Så er jeg tilbage.

Jeg har lidt problemer......

Jeg har lavet LOGIN.PHP og LOGINFORM.PHP præcis som beskrevet ovenfor.
Derudover har jeg lavet en TEST.PHP fil med følgende indhold:

<?php
session_start();
?>
<html><head></head>
<body>

<?php
if(!isset($_SESSION["navn"], $_SESSION["id"])) {

include($_SERVER["DOCUMENT_ROOT"] ."/loginform.php");

}else{
?>

<form>
<input type="button" value="Log ud" onclick="window.location.href('/login.php?logud=true');">
</form>

Dette er det hemmelige skrift, der burde komme frem hvis navn og password er rigtige....

<?php
}
?>
</body></html>

Men det virker ikke !! Den skriver hele tiden forkert password...

Er det ikke: "user" og "pass" der er adgangsgivende ???

HJÆLP - Er der nogne der kan finde fejlen ??

Tak ;-) - og fortsat god aften.
Avatar billede sukos Juniormester
18. november 2004 - 01:44 #21
Næhh, hvis du kikker i login.php, er det jo "brugernavn" og "password" :O)
Men et eksempel som virker, kan du se her:

http://showsource.users.whitehat.dk/exp/562210/
Avatar billede sukos Juniormester
18. november 2004 - 01:45 #22
På whitehat ligger alle filer i samme dir!
Avatar billede andreas_og_far Praktikant
18. november 2004 - 12:32 #23
Kære Sukos....Mange tak.
Lidt pinligt, at jeg ikke lige havde set de rigtige ord.....

Jeg har nu lavet systemet, og det virker fint - MEN:

Jeg har password beskyttet en side, hvor jeg har link til alle de forskellige online redigeringssider jeg har... Alle disse "undersider" skal jo også password beskyttes, men man skal jo ikke angive password på disse sider, da man jo allerede har gjort det én gang tidligere.....
Kan man ikke lave noget med, at passwordet gælder i 5 minutter eller lign ??

Hvis du forstår ??

- og mange tak for hjælpen.  ;-)
Avatar billede andreas_og_far Praktikant
18. november 2004 - 12:43 #24
...eller hvad. Er man logget ind, så længe man ikke er logget ud ?? - Selvom man forlader siden ??
Hvis du forstår ;-)
Avatar billede sukos Juniormester
18. november 2004 - 16:02 #25
pr. default mener jeg at en session virker i 30 min.
D.v.s. hvis du ikke lukker browservinduet ned, vil de sessions som er sat også virke på andre sider, selvom du har været væk fra siden.


Så hvis du i de foskellige filer bruger:

<?php
session_start();

echo"<html><head></head>\n";
echo"<body>\n\n";


if(!isset($_SESSION["navn"], $_SESSION["id"]) || $_SESSION["id"] != session_id()) {

include("loginform.php");

}else{

echo "Du er logget ind!";
// al anden kode du har.................

}

?>
Avatar billede sukos Juniormester
20. november 2004 - 11:45 #26
Har nu ændret lidt på ovenstående, så password'et md5 krypteres med javascript inden det sendes.
Samt lavet et link til download! :O)

Anyway, hvordan viser du dine undersider?
Du kan evt. include dem i filen man også logger ind på.

Og lige et svar! :O)
Avatar billede andreas_og_far Praktikant
20. november 2004 - 19:45 #27
Smuk Smukt

Jeg vender tilbage senere...

Tak Tak
Avatar billede andreas_og_far Praktikant
11. januar 2005 - 09:52 #28
Af hjertet tak.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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