Avatar billede the_edge Nybegynder
06. oktober 2006 - 10:16 Der er 19 kommentarer og
1 løsning

login system skal bruge en logud funktion,

Hejsa

Jeg skal bruge en logud function til mit login system ?
er der nogen der har nogen gode eksempler?
Avatar billede leif Seniormester
06. oktober 2006 - 10:18 #1
Vi aner jo ikke hvad dit login system er baseret på så nej.

Bruger du Sessions, Cookies eller Database ?
Avatar billede the_edge Nybegynder
06. oktober 2006 - 10:22 #2
når ja glemte lige den lille detaije... det er baseret på session og DB.

<?php
session_start();

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

    $sql = "SELECT id,fornavn,rettigheder FROM personer";

    $result = mysql_query($sql, $conn) or die (mysql_error());

    $hent = mysql_fetch_array($result);

$rettigheder = $hent[rettigheder];

if ($rettigheder > 1)
{
Avatar billede mccookie Seniormester
06. oktober 2006 - 10:32 #3
Jeg ville gøre følgende:

1) Stop din session

2) Bruger en header(location)

Derved stopper du det aktulle logind og når du sender videre kan brugeren ikke trykke tilbage i browseren.

Jeg formoder at du tester om brugeren er logget ind eller ej?

Jeg har i mit eget system blot inkluderet en fil på hver eneste side, den kontrollerer om brugeren er logget ind eller ej!

Lidt fra mig til dig....
McCookie
Avatar billede the_edge Nybegynder
06. oktober 2006 - 10:34 #4
altså destroy_session () ? og sende brugeren vider hvis han ikke er logget ind ?
hvordan ville du opbygge den include fil ?
Avatar billede mccookie Seniormester
06. oktober 2006 - 14:21 #5
Ja netop detroy_session()

Jeg gør det på følgende måde:

eks. hemmeligside.php

Som noget af det første include('loginsys.php');

i loginsys.php:

Er min brugeren logget ind ?

if(!isset($_SESSION['login_tilladt'])) {

// Loginformular sendes til bruger

}

og her hopper scriptet bare tilbage til den side det kom, da der jo ikke er mere kode at se ;)

///McCookie
Hvis
Avatar billede radion Nybegynder
06. oktober 2006 - 15:41 #6
mccookie:

er det egentligt ikke muligt for nogen ( måske ikke hr og fru danmark ) at slå headers fra på de hjemmesider man ser, så man ikke bliver sendt videre, men ser al den kode man ikke måtte se?
Avatar billede zynzz Praktikant
06. oktober 2006 - 16:09 #7
<?
session_start();
if(isset($_GET['logud'])){
session_destroy();
header("Location: logud.php");
}
?>


logud.php, kunne du så lave således for at undgå header already send, kan også løses med ob_start/ob_end_flush():

<head>
<meta http-equiv=Refresh content=0;url=index.php>
<title></title>
</head>
Avatar billede mccookie Seniormester
06. oktober 2006 - 17:28 #8
Radion>>

Det kan du have ret i......men nu er det ikke statshemmeligheder vi gemmer på vel? Så havde vi ikke gjort det tilgængelig på nettet osv.

Alternativt kan man så bare sætte et exit; efter headeren

De brugere som er ved at logge ud, må man som udgangspunkt antage har en legitim adgang....... ;)
Avatar billede radion Nybegynder
06. oktober 2006 - 20:26 #9
mccookie, næh måske ikke statshemmeligheder, men, der kan snildt være personfølsomme data og andet godt imellem..

jeg ville nok i stedet bruge en if else sætning, så brugeren KUN får adgang til det der skal ses, hvis han har de rigtige sessions.

if(!isset($_SESSION['login_tilladt'])) {

// Loginformular sendes til bruger

}
else
{

//Indholdet på siden
}
Avatar billede mccookie Seniormester
06. oktober 2006 - 21:35 #10
Radion>>>

else
{

//Indholdet på siden
}

Det her er forskellen på vores forslag og reelt der ikke noget at komme efter......

Er brugeren logget ind og du includer et script, vil den blot hoppe tilbage og forsætte med den side den er kaldt fra......

Ved dit forslag skal der inkluderes lidt alternativt....

Men det er smag og behag......

Hvis du nærlæser mine indlæg, så anvender jeg Headeren ved afslutningen, altså brugeren er allerede godkendt - Så problemet er??


McCookie ;)
Avatar billede mccookie Seniormester
06. oktober 2006 - 21:37 #11
Sender du ikke brugeren videre med en Header har jeg oplevet at browseren logger på igen.......hvilket kan være en nitte med flere brugere på samme computer.....

men igen statshemmelighederne.....
Avatar billede radion Nybegynder
07. oktober 2006 - 17:24 #12
Forskellen ligger i at slår man ( på mystisk vis / har en browser der ignorerer header ) header fra, så springer den fint din ifsætning over og læser resten af indholdet på siden? ja, vi er ude i en niche af sikkerhedsproblematikken, men...
I mit eksempel vil den kun vise det hvis ifsætningen opfyldes.

Hvordan er det der skal inkluderes alternativt i mit?
Avatar billede mccookie Seniormester
07. oktober 2006 - 18:31 #13
Lad os nu stoppe vores diskusion..... ;) det er ikke vores spm.

Hvad med The_edge har du fået noget til at virke eller hvad???
Avatar billede the_edge Nybegynder
08. oktober 2006 - 15:04 #14
tak for de mange svar har givet mig noget at tænke over... har desværre glemt at sende min ejen hjemmeside hjem til mig... den lægger på min lærerplads. jeg må vende tilbage på mandag... men tak for de mange svar.
Avatar billede mccookie Seniormester
08. oktober 2006 - 16:23 #15
Super og held og lykke til det videre projekt....
Avatar billede the_edge Nybegynder
09. oktober 2006 - 08:21 #16
nu har jeg prøvet
<?php
session_start();
session_destroy();
header("Location: ../logout.php>logud);
?>

der kommer denne fejl
Parse error: parse error, unexpected $end in C:\Documents and Settings\Administrator\Desktop\xampplite\htdocs\logout.php on line 6
Avatar billede the_edge Nybegynder
09. oktober 2006 - 08:33 #17
så har jeg rettet det...

session_start();
session_destroy();
header("Location: ../login.php");

det virker fint. men jeg kan stadig ved at trykke tilbage i browseren komme hen til noget hvor man burde være logget ind for at kunne se det... nogen gode forslag til det ?
Avatar billede the_edge Nybegynder
09. oktober 2006 - 09:44 #18
nu har jeg sat følgene kode ind...

<?php
session_start();
$_SESSION = array();
unset($_SESSION);
session_destroy();
$_SESSION['login'] = 0;
header("Location: ../login.php");
?>

men ved at trykke tilbage i browersen kan jeg stadig se det som man burde være logget ind for at se.... hvad kan det skyldes ?
Avatar billede the_edge Nybegynder
09. oktober 2006 - 10:02 #19
Firefox kommer med dette når man trykke tilbage efter at have logget ud

"Siden du forsøger at få fremvist indeholder POSTDATA, som er udløbet fra caschen. Hvis du gensender data, vil alle Handlinger som formularen udførte blive gentaget. for at gensende data, klik OK ellers tryk på anuller."

hvordan forhindre jeg dette ?

sådan ser min login formular ud

<html>
<body>
<head>
<?php $title = "Login" ;
print "<title>$title </title>"; ?>

<?php
$_POST['brugernavn'] ="";
$_POST['kodeord'] ="";
?>

<link rel="stylesheet" type="text/css" href="style.css">
</head>

<form action="ok.php" method="POST">

<p>Brugernavn:</p>
<input type="text" name="brugernavn">

<p>Kodeord:</p>
<input type="password" name="kodeord">
<br><br>
<input type="submit" name="submit" value="  LOGIN    ">

<?php
UNSET($_SESSION['brugernavn']);
UNSET($_SESSION['login']);
session_unset();


?>


</form>
</body>
</html>
Avatar billede the_edge Nybegynder
23. februar 2009 - 15:04 #20
lukket
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