Avatar billede michaeltryl Seniormester
03. januar 2007 - 13:41 Der er 10 kommentarer og
1 løsning

auto login?

jeg vil høre om der er nogen her der kender nogen gode sider om hvordan man laver en auto login funktion.
jeg ved det er noget med en cookie, men hvordan oprettes og slettes sådanne.
jeg har et system med session login hvor jeg godt vil have lavet sådan at brugerne kan bestemme om de vil logges ind automatisk når de besøger siden.
hvis der på en computer er 2 brugere peter og jens og peter opretter det på hans bruger skal jens ikke logges ind automatisk, men jeg regner med cookies køre seperat af brugere
Avatar billede elskermad.dk Nybegynder
03. januar 2007 - 14:04 #1
jeg kan ikke svare på om cookies kører seperat for hver brugerkonto (jeg vil dog gå ud fra det) men jeg kan hjælpe med lidt kodeforslag c",)

Ved din loginformular skal du have indsat en checkboks brugeren skal afkrydse:

<input type='checkbox' id='huskmig' name='huskmig' value='1' onClick='if(this.checked)return confirm("Bekræft du ønsker at logge automatisk ind fremover")'><label for='huskmig'> Husk mig</label>


Ved dit loginscript skal du nu tjekke om brugeren ønsker at gemme oplysningerne:

if (isset($_POST['huskmig'])) {
  setcookie("huskbrugernavn",$_POST["brugernavn"],time()+(60*60*24*30));
  setcookie("huskpassword",md5($_POST["password"]),time()+(60*60*24*30));

  // læg mærke til at tredje parameter er hvorlang tid oplysningerne skal gemmes - time() er nu plus (her) 30 dage
  // anden paramter er værdien vi gemmer i cookien, læg mærke til at vi laver et hash af passwordet i stedet for den rigtige værdi således den ikke kan aflures
}


Nu mangler der bare et sted i koden hvor der tjekkes for om brugeren er logget ind, og hvis ikke om der findes oplysninger
Dette er ret afhændigt at dit eksisterende system, men kan give et eksempel for hvordan det kan se ud

if (empty($_SESSION['login']) && !empty($_COOKIE['huskbrugernavn']) && !empty($_COOKIE['huskpassword'])) {
  $password = mysql_result(mysql_query("SELECT password FROM tabel WHERE brugernavn = '" . $_COOKIE["huskbrugernavn"] . "'"),0) or die(mysql_error());

  if (md5($password) == $_COOKIE["huskpassword"]) {
      $_SESSION['login'] = $_COOKIE["huskbrugernavn"];
  }
}
Avatar billede michaeltryl Seniormester
03. januar 2007 - 14:08 #2
tak jeg tager et kig på det og vender tilbage når jeg har leget lidt med det
Avatar billede michaeltryl Seniormester
03. januar 2007 - 15:25 #3
jeg har vist fået det til at virke nu, men er der så en måde hvorpå man kan slette den cookie igen?
har jeg ret i at hver gang man logger ind automatisk skal cookien sættes på ny sådan den kun slettes hvis det er f.eks 30 dage siden man sidst loggede ind
Avatar billede elskermad.dk Nybegynder
03. januar 2007 - 16:18 #4
synes personligt det er fint nok at man hver 30. dag skal logge ind manuelt - vil mene det på en eller anden måde højne sikkerheden - ellers ændre 30 til 365 så skal man kun hvert år.

ang. at slette den igen gøres det ved at nulstille cookiens tidshoriensont

setcookie("navn","",time()-1);

http://dk2.php.net/setcookie
Avatar billede elskermad.dk Nybegynder
03. januar 2007 - 16:18 #5
:)
Avatar billede michaeltryl Seniormester
03. januar 2007 - 18:00 #6
jeg har lidt problemer. jeg har lavet en fil nulstil.php, for at kunne nulstille alt mens jeg tester, med følgende indhold

session_start();
setcookie("huskbrugernavn","",time()-1);
setcookie("huskpassword","",time()-1);
$_SESSION = array();
session_destroy();

i toppen af min index side har jeg

<?
include '../settings/connect.php';

if(empty($_SESSION ['logget_in']))
{
header("Location: $side/settings/auto-tjek.php");
}
?>

så hvis session logget_in ikke er sat skal den tjekke auto-tjek.php
denne fil ser sådan ud

<?
session_start();
include"../settings/connect.php";

if (empty($_SESSION['logget_in'] ) && !empty($_COOKIE['huskbrugernavn']) && !empty($_COOKIE['huskpassword']))
{
$password = mysql_result(mysql_query("SELECT password, gruppe FROM brugere WHERE brugernavn = '" . $_COOKIE["huskbrugernavn"] . "'"),0) or die(mysql_error());
   
  if ($password == $_COOKIE["huskpassword"])
  {
        $_SESSION['logget_in'] = 1;
        $_SESSION['brugernavn'] = $_COOKIE["huskbrugernavn"];
        $_SESSION['password'] = $_COOKIE["huskpassword"]; //Sætter session variablerne
 
$bruger = $_SESSION['brugernavn'];
$_SESSION['menu'] = "bruger";
$goto_page = $_SESSION['page'];
if(!empty($goto_page))
{

header("Location: $goto_page");
}
else
{

header("Location: $side/bruger/profil.php");
}
  }
}


else
{
$_SESSION['logget_in'] = 'ikke';
header("Location: $side");
}
?>

problemet er at selvom jeg lige har kørt nulstil.php kommer der bare ne blank side frem men godt nok er det autotjek.php, men den burde gå til $side som er sat i connect.php
Avatar billede michaeltryl Seniormester
03. januar 2007 - 19:35 #7
jeg har lige prøvet at udskrive begge cookies efter jeg har kørt nulstil.php og de bliver ikke slettet de inde holder stadig de samme informationer
Avatar billede michaeltryl Seniormester
04. januar 2007 - 00:40 #8
jeg har vist fået det til at virke rigtigt nu.
jeg tester det lige godt igennem imorgen og giver dig så point
Avatar billede michaeltryl Seniormester
04. januar 2007 - 21:43 #9
tak for hjælpen du har fået point
Avatar billede elskermad.dk Nybegynder
04. januar 2007 - 22:16 #10
det var så lidt, beklager jeg ikke fik kigget mere på det :)
Avatar billede michaeltryl Seniormester
04. januar 2007 - 22:19 #11
pyt med det jeg fandt jo ud af det ellers havde jeg ventet
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging