Avatar billede fhansen Praktikant
28. januar 2007 - 02:00 Der er 3 kommentarer og
1 løsning

Login script virker

Jeg har forsøgt med lidt med flg kode, som er lånt fra phpbegynder.dk, og slt gik fint indtil jeg forsøgte at loade en login siden ind i en frame, eller hente login siden via en menu.
Hvis skriver stien til filen bruger i en browser fungere det, men ikke når jeg forsøger ay hente den som beskrevt ovenfor, så bliver jeg sendt helt ud til roden.

Filen ligger i et dir der hedder havn, i det samme dir ligger dir'et minefiler.

Ideen er at at en del sider kun må ses af brugere med med password.

Håber at nogen kan hjælpe mig på rette vej

Bruger.php
<?php

include("minefiler/settings.php");

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Brugerside</title></head>

<body>

<?php
if(isset($_SESSION["besked"])) {

    echo $_SESSION["besked"];

    unset($_SESSION["besked"]);
}

if(false == tjek_login()) {

?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<b>Login:</b><br />
Brugernavn<br />
<input type="text" name="brugernavn"><br />
Password<br />
<input type="password" name="password"><br />
<input type="submit" value="Login">
</form>

<?php

}else{

?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input name="logud" type="submit" value="Log ud">
</form>

<?php
echo "<a href=\"". $_SERVER["PHP_SELF"] ."\">Forside</a>";
foreach($links as $key => $value) {
    echo "<br />\r\n<a href=\"". $_SERVER["PHP_SELF"] ."?vis=". $key ."\">". $value ."</a>";
}
    if(isset($_GET["vis"])) {
        if(isset($links[$_GET["vis"]])) {
            if(is_file($base_dir . $_GET["vis"] .".php")) {
            $default_file = $base_dir . $_GET["vis"] .".php";
            }
        }
    }
$minvar = 1;
include($default_file);
}
?>

</body></html>

Settings.php
<?php
$base_file = "/havn/bruger.php";
if($_SERVER["PHP_SELF"] != $base_file) {
header("Location:http://". $_SERVER["HTTP_HOST"]);
exit;
}

$base_dir = "minefiler/";

$users = array("admin" => "adminpassword", "showsource" => "viskode", "phpbegynder" => "phpnewbie");

$links = array("galleri" => "Vis galleri", "musik" => "Min musik");

$defalut_file = $base_dir ."default.php";

function tjek_login() {

global $users;

    if(isset($_SESSION["user"], $_SESSION["ip"]) && isset($users[$_SESSION["user"]]) && $_SESSION["ip"] == $_SERVER["REMOTE_ADDR"]) {
   
    return true;
    }
return false;
}
session_start();
if(isset($_POST["logud"])) {

    $_SESSION = array();
    session_destroy();

    header("Location:http://". $_SERVER["HTTP_HOST"] . $base_file);
    exit;

}
if(isset($_POST["brugernavn"], $_POST["password"])) {
$default_text = "Forkert bruger og/eller password!"; 
    if(isset($users[$_POST["brugernavn"]])) {
        if($users[$_POST["brugernavn"]] == $_POST["password"]) {
            $_SESSION["user"] = $_POST["brugernavn"];
            $_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];


        }else{
            $_SESSION["besked"] = $default_text;
        }
    }else{
    $_SESSION["besked"] = $default_text;
    }
header("Location:http://". $_SERVER["HTTP_HOST"] . $base_file);
exit;

}

?>
Avatar billede showsource Seniormester
28. januar 2007 - 15:11 #1
Det må jo være her den gør det:

$base_file = "/havn/bruger.php";
if($_SERVER["PHP_SELF"] != $base_file) {
header("Location:http://". $_SERVER["HTTP_HOST"]);
exit;
}

Prøv evt. at fjerne det
Avatar billede fhansen Praktikant
29. januar 2007 - 00:54 #2
Udemærket det hjalp.
Avatar billede showsource Seniormester
13. februar 2007 - 08:33 #3
Husk at lukke spm. ved at tag point selv
Avatar billede fhansen Praktikant
01. december 2010 - 23:07 #4
Lukker
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