Avatar billede stengaard Praktikant
13. august 2007 - 19:42 Der 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

<?php
  include('access.php');
  $id = $_SESSION['navn'];


$qry = "SELECT id, navn, member, timestamp FROM login WHERE user = '".$id."'";

  $query = mysql_query($qry) or die(mysql_error());

  while ($row = mysql_fetch_assoc($query)) {

  echo '<b>'.$row['navn'].'</b><br>';
  echo '<b>MedlemsTitel.: </b><br>';
    echo '<i>'.$row['member'].'</i></a><br><br>';
    echo '<b>Sidste Besøg.: </b> ';
      echo '<i>'.$row['timestamp'].'</i></a>';
 

}
?>
Avatar billede jakobdo Ekspert
13. august 2007 - 20:17 #1
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'";
Avatar billede dkfire Nybegynder
14. august 2007 - 09:24 #2
Jeg ville nok ændre din update sql til:

UPDATE login SET timestamp=NOW() WHERE ID = '$id'
Avatar billede jakobdo Ekspert
14. august 2007 - 09:50 #3
Det hele kommer selvfølgelig an på hvad du læser ind i: $_SESSION['navn']
Avatar billede stengaard Praktikant
14. august 2007 - 20:38 #4
den læser kun tid og dato ind i timestamp
Avatar billede jakobdo Ekspert
14. august 2007 - 22:20 #5
Men har du ikke noget kode i din indlogning, som sætter: $_SESSION['navn'] ?
Avatar billede stengaard Praktikant
15. august 2007 - 14:50 #6
jow det skulle jeg men men er dog et andet script

<?php
session_start();




if ($_POST['bruger'] == "" AND $_POST['pass'] == "") {
        $_SESSION['status'] = "nobrugerpass";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

elseif ($_POST['bruger'] == "") {
       
        $_SESSION['status'] = "nobruger";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

elseif ($_POST['pass'] == "") {
       
        $_SESSION['status'] = "nopass";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

else

{
include("access.php");
$query = "SELECT user, pass FROM login WHERE user = '".$_POST['bruger']."' AND pass= '".$_POST['pass']."'";
$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);

if ($_POST['bruger'] == $log['user'] && $_POST['pass'] == $log['pass']) {
   
        $_SESSION['status'] = "login";
        $_SESSION['navn'] = $_POST['bruger'];
    print("    <script language='javascript'>
        location.href='index.php';
        </script>");
       
}

else
{
        $_SESSION['status'] = "fejl";
    print("    <script language='javascript'>
        location.href='login.php';
        </script>");
       
}
}
?>
Avatar billede jakobdo Ekspert
15. august 2007 - 18:52 #7
$_SESSION['navn'] = $_POST['bruger'];
Det vil sige du sætter session = brugernavnet.
Dermed burde mit indlæg fra: 13/08-2007 20:17:58 virke.
Avatar billede stengaard Praktikant
17. august 2007 - 16:29 #8
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'");
}
?>
Avatar billede stengaard Praktikant
17. august 2007 - 16:45 #9
kan det laves på en anden måde der måske virker ???
Avatar billede jakobdo Ekspert
17. august 2007 - 18:49 #10
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)
Avatar billede stengaard Praktikant
17. august 2007 - 19:39 #11
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'");
}
?>
Avatar billede jakobdo Ekspert
17. august 2007 - 20:11 #12
Sådan vil sætte brugerens online tid:

<?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");
    }
}
?>
Avatar billede stengaard Praktikant
17. august 2007 - 20:23 #13
hvorfor limit 1 ?
Avatar billede jakobdo Ekspert
17. august 2007 - 20:45 #14
Prøv at søg i MYSQL DOC og se hvad LIMIT gør.
Avatar billede stengaard Praktikant
20. august 2007 - 09:18 #15
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");
    }
}
?>
Avatar billede jakobdo Ekspert
20. august 2007 - 10:34 #16
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");
Avatar billede stengaard Praktikant
20. august 2007 - 11:07 #17
lige et mere, hvorfor virker det så ikke i logout scriptet, når man kan få det til at virker i f.eks. index.php når man opdatere siden

scriptet logout.php

<?php include("sidstonline.php") ?>
<?
session_start();
$_SESSION = array();
session_destroy();
header("Location:../index.php");
exit;
?>


scriptet sidstonline.php

<?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");
    }
}
?>
Avatar billede jakobdo Ekspert
20. august 2007 - 11:16 #18
Prøv at ret dine sql'er til:
mysql_query("UPDATE login SET last_login=NOW() WHERE user = '".$user."' LIMIT 1") or die(mysql_error());

Så vil du få evt. fejl printet ud.
Og ellers må du lave noget debug på din kode.
Avatar billede stengaard Praktikant
20. august 2007 - 11:44 #19
scriptet sidstonline.php

<?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

<?php include("sidstonline.php") ?>
<?
session_start();
$_SESSION = array();
session_destroy();
header("Location:../index.php");
exit;
?>
Avatar billede jakobdo Ekspert
20. august 2007 - 11:54 #20
Og du er sikker på denne sql virker:
$query = mysql_query("SELECT last_login FROM login WHERE user = '".$user."' LIMIT 1"); ??
Avatar billede stengaard Praktikant
20. august 2007 - 12:04 #21
ja hvis man tilføre den i index.php med <?php include("sidstonline.php") ?> og opdatere siden kommer der en ny tid frem

men ikke hvis man laver den sammen med logout.php
Avatar billede jakobdo Ekspert
20. august 2007 - 12:36 #22
Test din logout.php kode.
Det kan jo være du har lavet en taste fejl. :o)
Eller at sql'en ikke virker.
Avatar billede stengaard Praktikant
16. april 2008 - 11:22 #23
lukket
Avatar billede jakobdo Ekspert
16. april 2008 - 11:28 #24
Hvad blev løsningen ?
Avatar billede stengaard Praktikant
16. april 2008 - 12:55 #25
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;
?>
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