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 ??
Annonceindlæg fra Infor
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'";
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.
26. april 2004 - 16:01
#3
LOL det var indenfor samme sekund! :-)
26. april 2004 - 16:05
#4
tja og samme løsning !!
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
26. april 2004 - 16:07
#6
kasper >> Hvad mener du?
26. april 2004 - 16:14
#7
skulle selvfølgelig have været : mysql_query("UPDATE brugere SET sidstSet = 'NOW()' WHERE brugernavn = 'kasper'");
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
26. april 2004 - 16:23
#9
Hmmm... øjeblik
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)";
26. april 2004 - 16:32
#11
nikolajdu >> ... SET sidstSet = 'NOW()' ... Kan man godt have apostroffer omkring en funktion i SQL?
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
26. april 2004 - 16:40
#13
Nej du har selvfølgelig ret.
26. april 2004 - 16:41
#14
if($array_user['brugernavn'] == $brugernavn && $array_pw['password'] == $password);
26. april 2004 - 16:42
#15
nikolajdu hvem har ret ??
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'; } ?>
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
26. april 2004 - 17:15
#18
ok
26. april 2004 - 18:32
#19
ahvad?
26. april 2004 - 18:44
#20
nikolajdu vil du ha dinne point eller ahvad kan godt give dig dem hvis der er :D
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.
26. april 2004 - 19:18
#22
ja fandt ud af det men tak xD er ved at lave et lille spil jo :D
26. april 2004 - 19:18
#23
mangler kun 1/3 script xD
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
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;
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 ??
26. april 2004 - 20:46
#27
Det forstod jeg ikke helt... Kan du prøve at omformulere det lidt?
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 ???
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;
Vi tilbyder markedets bedste kurser inden for webudvikling