13. august 2007 - 19:42Der er
24 kommentarer og 1 løsning
hvorfor virker mit timestamp ikke
hvorfor kan jeg ikke få dette til at virke, den viser kun den tid som jeg har lagt på som prøve i mysql og ændre ikke noget, ikke før jeg selv ændre den i mysql først min table
CREATE TABLE `login` ( `ID` int(11) NOT NULL auto_increment, `user` varchar(50) NOT NULL default '', `pass` varchar(25) NOT NULL default '', `navn` varchar(51) NOT NULL default 'Ikke oplyst', `member` text NOT NULL, `adresse` text NOT NULL, `postnr` varchar(4) NOT NULL default '', `kommune` text NOT NULL, `mobil` varchar(8) NOT NULL default '', `foedselsdag` char(2) NOT NULL default '00', `aar` varchar(4) NOT NULL default '', `maaned` varchar(14) NOT NULL default '', `image` varchar(100) NOT NULL default '', `email` varchar(50) NOT NULL default '', `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `tid` datetime NOT NULL default '0000-00-00 00:00:00', `oprettetaf` text NOT NULL, `last_login` datetime NOT NULL default '0000-00-00 00:00:00', `activated` enum('0','1') NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY `idx_brugere` (`user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=8 ;
mit script der skulle updatere timestamp:
<?php include('access.php'); $id = $_SESSION['navn']; if($id != "") // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $selectuser = "SELECT * FROM login WHERE ID='$id'"; $selectuser = mysql_query($selectuser); $selectuser = mysql_fetch_array($selectuser); $time = time(); $online = $time-$selectuser[sidstset]; // sidstset er kolonnen, hvori informationer om hvornår brugerne sidst er set gemmes mysql_query("UPDATE login SET timestamp='$time' WHERE ID = '$id'"); } ?>
mit script der skulle hente aktuelle tid hvor brugeren sidst var online
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Din SQL i din update timestamp, skal vel rettes til: $selectuser = "SELECT sidstset FROM login WHERE user='$_SESSION['navn']'"; og ikke: $selectuser = "SELECT * FROM login WHERE ID='$id'";
den ser sådanne her ud men den ændre ikke i tiden i mysql når man logger ind
<?php include('access.php'); $id = $_SESSION['navn']; if($id != "") // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $selectuser = "SELECT timestamp FROM login WHERE user = '".$id."'"; $selectuser = mysql_query($selectuser); $selectuser = mysql_fetch_array($selectuser); $time = time(); $online = $time-$selectuser[timestamp]; // sidstset er kolonnen, hvori informationer om hvornår brugerne sidst er set gemmes mysql_query("UPDATE login SET timestamp='$time' WHERE ID = '$id'"); } ?>
Jo, men din kode burde jo kunne komme til at virke. Du kan jo starte med at få styr på $_SESSION['navn'] Nogle steder bruger du det som ID andre steder som NAVN. :o)
ja men den laver vel en session på navnet, som passer sammen men den enkelte user eller enkeltes user's id derfor skal den vel kunne skrive tiden og dato'en på user's sidste online tidspunkt...
prøver igen er ikke så skarp til php næsten lige begyndt med det
<?php include('access.php'); $id = $_SESSION['navn']; if($id != "") // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $selectuser = "SELECT timestamp FROM login WHERE user = '".$id."'"; $selectuser = mysql_query($selectuser); $selectuser = mysql_fetch_array($selectuser); $time = time(); $online = $time-$selectuser[timestamp]; // sidstset er kolonnen, hvori informationer om hvornår brugerne sidst er set gemmes mysql_query("UPDATE login SET timestamp='$time' WHERE user = '$id'"); } ?>
<?php include('access.php'); if(isset($_SESSION['navn'])) // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $user = $_SESSION['navn']; $query = mysql_query("SELECT timestamp FROM login WHERE user = '".$user."' LIMIT 1"); if(mysql_num_rows($query)==1) { mysql_query("UPDATE login SET timestamp='NOW()' WHERE user = '".$user."' LIMIT 1"); } } ?>
ja men nu siger den kun - 0000-00-00 00:00:00 så den tager vel ikke tid og dato ind
med scriptet
<?php include('access.php'); if(isset($_SESSION['navn'])) // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $user = $_SESSION['navn']; $query = mysql_query("SELECT timestamp FROM login WHERE user = '".$user."' LIMIT 1"); if(mysql_num_rows($query)==1) { mysql_query("UPDATE login SET timestamp='NOW()' WHERE user = '".$user."' LIMIT 1"); } } ?>
Ret lige: mysql_query("UPDATE login SET timestamp='NOW()' WHERE user = '".$user."' LIMIT 1"); til: mysql_query("UPDATE login SET timestamp=NOW() WHERE user = '".$user."' LIMIT 1");
<?php include('access.php'); if(isset($_SESSION['navn'])) // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $user = $_SESSION['navn']; $query = mysql_query("SELECT last_login FROM login WHERE user = '".$user."' LIMIT 1"); if(mysql_num_rows($query)==1) { mysql_query("UPDATE login SET last_login=NOW() WHERE user = '".$user."' LIMIT 1"); } } ?>
<?php include('access.php'); if(isset($_SESSION['navn'])) // Hvis der er logget en bruger ind, skal følgende kode eksekveres { $user = $_SESSION['navn']; $query = mysql_query("SELECT last_login FROM login WHERE user = '".$user."' LIMIT 1"); if(mysql_num_rows($query)==1) { mysql_query("UPDATE login SET last_login=NOW() WHERE user = '".$user."' LIMIT 1") or die(mysql_error()); } } ?>
stadig igen update af last_login når man bruger logout sriptet
løsningen der manglede blev følgende til logout scriptet
<?php include('access.php'); session_start(); mysql_query("UPDATE login SET online = 0 WHERE user = '" . $_SESSION["navn"] . "'"); $_SESSION = array(); session_destroy(); header("Location:../index.php"); exit; ?>
Synes godt om
Ny brugerNybegynder
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.