Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 15:48 Der er 28 kommentarer og
1 løsning

hvordan laver men end last login

jeg har et lille bruger sytem jeg vil godt se hvorå brugene logger sist hvordan kan jeg lave et script til det ??
Avatar billede nikolajdu Nybegynder
26. april 2004 - 15:55 #1
Hvis du bruger mySql kan du lave et felt af type dateTime og så indsætte værdien NOW() hver gang en bruger logger på.

mysql_query = "UPDATE brugere SET sidstSet = 'NOW()' WHERE brugernavn = 'kasper'";
Avatar billede alvion Nybegynder
26. april 2004 - 15:55 #2
Jeg formoder at du bruger en database til at styre login, med en tabel der hedder "bruger". Dertil skal du tilføje et felt:

"last_login" af typen "datetime"

I dit loginscript skal du tilføje følgende EFTER at du har kontrolleret brugerens brugernavn og password:

$sql = "select * from bruger where brugerid = '" . $brugerens_id . "' ";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
    $_SESSION["last_login"] = $row["last_login"];
    $sql = "update bruger set last_login = now() where brugerid = '" . $brugerens_id . "' ";
    mysql_query($sql);
}


Nu indeholder $_SESSION["last_login"] dato for sidste login og brugertabellen er opdateret med datoen for dette login.
Avatar billede alvion Nybegynder
26. april 2004 - 16:01 #3
LOL det var indenfor samme sekund! :-)
Avatar billede nikolajdu Nybegynder
26. april 2004 - 16:05 #4
tja og samme løsning !!
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 16:05 #5
lol thx hvordan kan mand gøre fx 1:25 men den skal runde ned ??
og det skal den også selv om der er 1:40
Avatar billede alvion Nybegynder
26. april 2004 - 16:07 #6
kasper >> Hvad mener du?
Avatar billede nikolajdu Nybegynder
26. april 2004 - 16:14 #7
skulle selvfølgelig have været :

mysql_query("UPDATE brugere SET sidstSet = 'NOW()' WHERE brugernavn = 'kasper'");
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 16:15 #8
jeg vil gerne have at de andre brugere kan se hvor mange timer det er siden deres ven har logget ind. Den skal altid runde ned så fx. at det var kl 12.59 hans last login var og man kigger 14.00 så er det 2 timer siden i stedet for 1 time og 1 minut
Avatar billede alvion Nybegynder
26. april 2004 - 16:23 #9
Hmmm... øjeblik
Avatar billede alvion Nybegynder
26. april 2004 - 16:31 #10
Ikke testet, men det burde være således:

$sql = "select last_login from bruger where id = 'et-eller-andet'";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
    $last_login = $row["last_login"];

    // Konverter $last_login til Unix timestamp
    $d = explode(" ", $last_login);
    list($year, $month, $day) = explode("-", $d[0]);
    list($hour, $min, $sec) = explode(":", $d[1]);
    $ts_last_login = mktime($hour, $min, $sec, $month, $day, $year);

    // Sammenlign med nu
    $timeframe = time() - $ts_last_login;  // Resultatet er nu i sekunder
    $hours = ciel($timeframe / 3600); // Resultatet er nu oprundet til antal hele timer
}

echo "Logget på i $hours time(r)";
Avatar billede alvion Nybegynder
26. april 2004 - 16:32 #11
nikolajdu >> ... SET sidstSet = 'NOW()' ...

Kan man godt have apostroffer omkring en funktion i SQL?
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 16:34 #12
if($array_user['brugernavn'] == $brugernavn AND $array_pw['password'] == $password);
{mysql_query("UPDATE users SET lastlogin  = 'NOW()' WHERE brugernavn = 'kasper'");

  echo ok ;
}

else {
echo 'forkert password';
}
}
}
?>

der er en felj syntaxfejl i else
Avatar billede nikolajdu Nybegynder
26. april 2004 - 16:40 #13
Nej du har selvfølgelig ret.
Avatar billede nikolajdu Nybegynder
26. april 2004 - 16:41 #14
if($array_user['brugernavn'] == $brugernavn && $array_pw['password'] == $password);
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 16:42 #15
nikolajdu
hvem har ret ??
Avatar billede nikolajdu Nybegynder
26. april 2004 - 16:45 #16
Alvion :))

if($array_user['brugernavn'] == $brugernavn && $array_pw['password'] == $password);
{
mysql_query("UPDATE users SET lastlogin  = NOW() WHERE brugernavn = 'kasper'");
echo "ok" ;
}else {
echo 'forkert password';
}

?>
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 16:52 #17
<?php
require("config.php"); // Variabler til mysql hentes
$login = &$HTTP_POST_VARS['login'];

if(empty($login)) {
    echo 'Denne side kræver login adgang'; }
    else {

$brugernavn = &$HTTP_POST_VARS['brugernavn'];
$password = &$HTTP_POST_VARS['password'];


if(empty($brugernavn) OR empty($password)) {
    echo 'Et af felterne er tomme'; }   
    else {


mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);




$result_user = mysql_query("select brugernavn from users where brugernavn = '$brugernavn'")
or die (mysql_error());

$result_pw = mysql_query("select password from users where password = '$password'")
or die (mysql_error());
 

$array_user = mysql_fetch_array($result_user);
$array_pw = mysql_fetch_array($result_pw);

if($array_user['brugernavn'] == $brugernavn && $array_pw['password'] == $password);
{
mysql_query("UPDATE users SET lastlogin = NOW() WHERE brugernavn = 'kasper'");
echo "ok" ;
} else {    //den siger der er fej her
echo 'forkert password';
}
}
}
?>


Parse error: parse error in /web/www/frac/users/kasper112/login-ok.php on line 38
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 17:15 #18
ok
Avatar billede nikolajdu Nybegynder
26. april 2004 - 18:32 #19
ahvad?
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 18:44 #20
nikolajdu
vil du ha dinne point eller ahvad kan godt give dig dem hvis der er :D
Avatar billede alvion Nybegynder
26. april 2004 - 19:13 #21
kasper >> Fandt du ud hvad der var galt? Ellers skal du finde fejlen i denne linie:

if($array_user['brugernavn'] == $brugernavn && $array_pw['password'] == $password);

semikolonet til sidst skal fjernes.
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 19:18 #22
ja fandt ud af det men tak xD er ved at lave et lille spil jo :D
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 19:18 #23
mangler kun 1/3 script xD
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 19:41 #24
alvion `??? det kan vare du kan hjlælp mig med noget andent hvis du vil. jeg siger fx 
så skal jeg finde ud af hvor mange timer der er imellem
2004-1-1 18:00:00 og 2004-1-2 17:00:00
Avatar billede alvion Nybegynder
26. april 2004 - 20:29 #25
Nemt - det var det jeg illustrede tidligere med mit lille script.
1) Omregn datoerne til Unix timestamp (dvs. antal sekunder siden 1/1-1970)
2) Træk de to tal fra hinanden
3) Divider med 3600 (antal sekunder pr. time)


function dato_til_sek($dato) {
    $d = explode(" ", $dato);
    list($year, $month, $day) = explode("-", $d[0]);
    list($hour, $min, $sec) = explode(":", $d[1]);
    return mktime($hour, $min, $sec, $month, $day, $year);
}

$sek1 = dato_til_sek("2004-1-2 17:00:00");
$sek2 = dato_til_sek("2004-1-1 18:00:00");

$forskel = ($sek1 - $sek2) / 3600;
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 20:44 #26
hvis jeg skal har $sek1 = dato_til_sek("2004-1-2 17:00:00"); til $sek2 = dato_til_sek("2004-1-1 18:00:00"); ud skiven t time forhold hvor skal jeg site ting end henne ??
Avatar billede alvion Nybegynder
26. april 2004 - 20:46 #27
Det forstod jeg ikke helt... Kan du prøve at omformulere det lidt?
Avatar billede kasperhansen112 Nybegynder
26. april 2004 - 20:55 #28
$lastlogin = 2004-1-2 17:00:00
$oldlogin  =  2004-1-1 18:00:00
hvor skal de hen i dit script får den finder ud af hvor mange timer der er mellem dem ???
Avatar billede alvion Nybegynder
26. april 2004 - 20:57 #29
function dato_til_sek($dato) {
    $d = explode(" ", $dato);
    list($year, $month, $day) = explode("-", $d[0]);
    list($hour, $min, $sec) = explode(":", $d[1]);
    return mktime($hour, $min, $sec, $month, $day, $year);
}

$sek1 = dato_til_sek($lastlogin);
$sek2 = dato_til_sek($oldlogin);

$forskel = ($sek1 - $sek2) / 3600;
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