Avatar billede azarat Nybegynder
23. maj 2005 - 20:21 Der er 29 kommentarer

Logind system uden DB

Hey

Jeg søger et logind system uden DB, hvor man kan sende brugerene til deres egne filer. f.eks bruger1 bliver sendt til index1 og bruger2 bliver sendt til index2.

Mvh AzaraT
Avatar billede olebole Juniormester
23. maj 2005 - 20:33 #1
<ole>

Login systemer uden DB er noget, man kan bruge til en bruger eller to. Til større systemer er det noget rod.
At sende brugeren til hans egne filer, er jo i øvrigt det aller mindste i et login system. Det vigtigste er, at brugeren hele tiden kontrolleres og at man sikrer sig, han har tilladelse til at se de filer, han requester ... ellers er der nada sikkerhed i 'systemet'  :)

/mvh
</bole>
Avatar billede Slettet bruger
23. maj 2005 - 20:34 #2
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table>
<tr>
<td>
<fieldset>
<legend>Brugernavn:</legend>
<input type="text" name="user" />
</fieldset>
</td>
</tr>

<tr>
<td>
<fieldset>
<legend>Kodeord:</legend>
<input type="password" name="pass" />
</fieldset>
</td>
</tr>

<tr>
<td><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>

<?PHP
if(isset($_POST['login'])) {
if(($_POST['user'] == "abc") && ($_POST['pass'] == "123")) {
header("LOCATION: index1.htm");

} elseif(($_POST['user'] == "def") && ($_POST['pass'] == "456")) {
header("LOCATION: index2.htm");
} else {
echo "Dit brugernavn og/el. kodeord er ikke korret.<br />Prøv igen";
}
}
?>
Avatar billede Slettet bruger
23. maj 2005 - 20:40 #3
Her med kommentar tags:

<!-- HTML START -->
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table>
<tr>
<td>
<fieldset>
<legend>Brugernavn:</legend>
<input type="text" name="user" />
</fieldset>
</td>
</tr>

<tr>
<td>
<fieldset>
<legend>Kodeord:</legend>
<input type="password" name="pass" />
</fieldset>
</td>
</tr>

<tr>
<td><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
<!-- /HTML START -->

<?PHP
if(isset($_POST['login'])) { //Hvis knappen er sat
if(($_POST['user'] == "abc") && ($_POST['pass'] == "123")) { //Hvis brugernavn er = "abc" og kode = "123"
header("LOCATION: index1.htm"); //Siden bruger 1 skal sendes til

} elseif(($_POST['user'] == "def") && ($_POST['pass'] == "456")) { //Hvis brugernavn er = "def" og kode = "456"
header("LOCATION: index2.htm"); //Siden bruger 2 skal sendes til

} else { //Hvis brugernavn ikke findes
echo "Dit brugernavn og/el. kodeord er ikke korret.<br />Prøv igen";
}
}
?>
Avatar billede Slettet bruger
23. maj 2005 - 20:43 #4
Hvis du nu også vil have at man ikke kan se de side de bliver sendt til så:

ser login kode sådan ud (filerne der viderstilles til skal så være php:


<?PHP
session_start();
?>
<!-- HTML START -->
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table>
<tr>
<td>
<fieldset>
<legend>Brugernavn:</legend>
<input type="text" name="user" />
</fieldset>
</td>
</tr>

<tr>
<td>
<fieldset>
<legend>Kodeord:</legend>
<input type="password" name="pass" />
</fieldset>
</td>
</tr>

<tr>
<td><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
<!-- /HTML START -->

<?PHP
if(isset($_POST['login'])) { //Hvis knappen er sat
if(($_POST['user'] == "abc") && ($_POST['pass'] == "123")) { //Hvis brugernavn er = "abc" og kode = "123"
header("LOCATION: index1.php"); //Siden bruger 1 skal sendes til

} elseif(($_POST['user'] == "def") && ($_POST['pass'] == "456")) { //Hvis brugernavn er = "def" og kode = "456"
header("LOCATION: index2.php"); //Siden bruger 2 skal sendes til

} else { //Hvis brugernavn ikke findes
echo "Dit brugernavn og/el. kodeord er ikke korret.<br />Prøv igen";
}
}
Avatar billede Slettet bruger
23. maj 2005 - 20:44 #5
ups mangler lige en
koden
?>

til sidst i
Avatar billede Slettet bruger
23. maj 2005 - 20:44 #6
**** FORKERT ^^ *****

ups mangler lige en

?>

til sidst i koden
Avatar billede Slettet bruger
23. maj 2005 - 20:47 #7
SÅdan ser undersiderne så ud:

<?PHP
session_start();
if($_SESSION['login'] !== "OK") {
header("LOCATION: login.php"); // din login side
} else {
?>

DIT SCRIPT KODE HER

<?
}
?>

Har lige sendt i login script at jeg mangler noget så her er den så igen igen igen:



<?PHP
session_start();
?>
<!-- HTML START -->
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table>
<tr>
<td>
<fieldset>
<legend>Brugernavn:</legend>
<input type="text" name="user" />
</fieldset>
</td>
</tr>

<tr>
<td>
<fieldset>
<legend>Kodeord:</legend>
<input type="password" name="pass" />
</fieldset>
</td>
</tr>

<tr>
<td><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
<!-- /HTML START -->

<?PHP
if(isset($_POST['login'])) { //Hvis knappen er sat
if(($_POST['user'] == "abc") && ($_POST['pass'] == "123")) { //Hvis brugernavn er = "abc" og kode = "123"
$_SESSION['login'] == "OK";
header("LOCATION: index1.php"); //Siden bruger 1 skal sendes til

} elseif(($_POST['user'] == "def") && ($_POST['pass'] == "456")) { //Hvis brugernavn er = "def" og kode = "456"
$_SESSION['login'] == "OK";
header("LOCATION: index2.php"); //Siden bruger 2 skal sendes til

} else { //Hvis brugernavn ikke findes
echo "Dit brugernavn og/el. kodeord er ikke korret.<br />Prøv igen";
}
}
?>
Avatar billede olebole Juniormester
23. maj 2005 - 20:49 #8
coldgate >> Hvor er der bare små bitte spor af sikkerhed i det? Hvis jeg ser dig over skulderen, kan jeg jo gå hen til min egen PC og gå direkte ind på index1.php eller index2.php
Det duer ikke til noget somhelst  :)
Avatar billede avminarm Juniormester
23. maj 2005 - 20:49 #9
Avatar billede olebole Juniormester
23. maj 2005 - 20:51 #10
De sidste rettelser hjalp lidt  :)
Avatar billede Slettet bruger
23. maj 2005 - 20:53 #11
ja netop...
det var derfor jeg hellere lige måtte sætte lidt sikkerhed på det... :D
Avatar billede olebole Juniormester
23. maj 2005 - 20:55 #12
- tænkte nok, det var en 'danke-dorsk'  ;o)
Avatar billede azarat Nybegynder
23. maj 2005 - 21:47 #13
har uploaded din kode coldgate på http://cs1.zorps.dk/3/logind.php men får en fejl:

Notice: Undefined index: login in c:\inetpub\wwwroot\3\logind.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\3\logind.php:5) in c:\inetpub\wwwroot\3\logind.php on line 36
Avatar billede olebole Juniormester
23. maj 2005 - 21:54 #14
Pas på din HTML-kommentar i toppen. Der må ikke st så meget som et mellemrums tegn før '<?PHP' ... så får du dén fejl  ;o)
Avatar billede azarat Nybegynder
23. maj 2005 - 22:01 #15
det gør der hellere ikke? www.zorps.dk/3.rar der ligger de filer jeg bruger ^^
Avatar billede Slettet bruger
24. maj 2005 - 08:16 #16
Din index1.php + index2.php

der mangler du efter din tekst:

<?
}
?>

for den bliver ikke afsluttede det er det der laver fejlen
Avatar billede ksoren Nybegynder
24. maj 2005 - 08:25 #17
header("LOCATION: index1.php");

Ligner et problem, da den sendes efter en masse html
Avatar billede Bjarne Novice
24. maj 2005 - 09:02 #18
Prøv at starte koden med <?php ob_start();
Avatar billede olleolleolle Nybegynder
24. maj 2005 - 11:58 #19
Notice: Undefined index: login in c:\inetpub\wwwroot\3\logind.php on line 35

Den fejl kommer vel af at PHPs error_reporting() er indstillet på det paranoide E_ALL-niveau. Men det retter vi op på. E_ALL, men ikke E_NOTICE vil vi have (E_NOTICE er den slags fejl som får PHP at sige "Du har jo ikke definieret varibeln $index endnu, hvordan skal jeg så vide hvad det er!"

Start med at sige, helt fra starten af (før session_start()):

error_reporting(E_ALL ^ E_NOTICE);

Du kan læse de bittesmå detaljer selv: http://dk.php.net/error_reporting
Avatar billede azarat Nybegynder
24. maj 2005 - 13:59 #20
efter at have added
<?
}
?>

og

<?php ob_start();

og

error_reporting(E_ALL ^ E_NOTICE);

siger den at siden ikke findes ^^
Avatar billede azarat Nybegynder
24. maj 2005 - 13:59 #21
atlså efter man har logged ind
Avatar billede olleolleolle Nybegynder
24. maj 2005 - 14:40 #22
Jeg roder: $login er jo variabeln vi kigger efter.

Men dets "sat-hed" er vel det hele affæren handler om.

ob_start() har sin modsvarighed i ob_flush()

Læs mere: http://php.net/ob_flush
Avatar billede ksoren Nybegynder
24. maj 2005 - 15:02 #23
Det er også gået lidt stærkt. Når sessionvariablen skal sættes, skal du bruge

$_SESSION['login'] = "OK"; // kun et enkelt =

i index1.php omdirigerer du til en forkert side, login.php vs logind.php
Avatar billede azarat Nybegynder
24. maj 2005 - 17:44 #24
er totalt forviret, vil i ikke prøve at skrive koden på ny for mig :P ? efter have sat
Avatar billede azarat Nybegynder
24. maj 2005 - 17:46 #25
hov, kom vidst til at trykke på enter lidt for tidligt :P

er totalt forviret, vil i ikke prøve at skrive koden på ny for mig :P ? efter have rettet $_SESSION['login'] = "OK"; og til logind.php istedet for login.php sker der ikke noget efter at have logget ind
Avatar billede ksoren Nybegynder
24. maj 2005 - 20:08 #26
--- logind.php:
<?php
session_start();

$errormsg = ""; // fejlbesked ved forkert login

if(isset($_POST['login'])) { //Hvis knappen er sat

    $user = $_POST['user'];
    $pass = $_POST['pass'];

    if($user == "abc" && $pass == "123") {
        //Hvis brugernavn er = "abc" og kode = "123"
        $_SESSION['login'] = "OK";
        header("LOCATION: index1.php"); //Siden bruger 1 skal sendes til
        exit();
    }
    elseif($user == "def" && $pass == "456") {
        //Hvis brugernavn er = "def" og kode = "456"
        $_SESSION['login'] = "OK";
        header("LOCATION: index2.php"); //Siden bruger 2 skal sendes til
        exit();
    }
    else{
        //Hvis brugernavn ikke findes
        $errormsg = "Dit brugernavn og/el. kodeord er ikke korret.<br />Prøv igen";
    }
}
?>
<!-- HTML START -->
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="POST">
<table>
<tr>
<td>
<fieldset>
<legend>Brugernavn:</legend>
<input type="text" name="user" />
</fieldset>
</td>
</tr>

<tr>
<td>
<fieldset>
<legend>Kodeord:</legend>
<input type="password" name="pass" />
</fieldset>
</td>
</tr>

<tr>
<td><input type="submit" name="login" value="Login"></td>
</tr>
</table>
</form>
<?php echo $errormsg // vis fejlbesked, hvis forkert login?>
<!-- /HTML START -->


--- index1.php:
<?php
session_start();
if(!(isset($_SESSION['login']) && $_SESSION['login'] == "OK")){
    // fejl
    header("Location: logind.php");
    exit();
}
?>

ok, du er logget ind
Avatar billede ksoren Nybegynder
24. maj 2005 - 20:13 #27
Jeg ved ikke om det er tilladt, men når bruger1 er logget ind, vil han med ovenstående have adgang til bruger2's index2.php
Avatar billede azarat Nybegynder
24. maj 2005 - 20:26 #28
ja det ved jeg, man skal bare ændre det så de ryger til sorskællige Session's ik ?

altså

bruger1: $_SESSION['login'] = "bruger1";
også skal der stå $_SESSION['login'] == "bruger1" i index1

ikke ?
Avatar billede azarat Nybegynder
24. maj 2005 - 20:52 #29
ok det virker nu ;)

Hvis coldgate og ksoren skriver som svar skal jeg give jer points ;)
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