Avatar billede fina Nybegynder
24. februar 2003 - 15:37 Der er 10 kommentarer

Hvor mange minutter har session kørt?

Jeg skal bruge lidt hjælp til at måle hvor lang tid en session har kørt i minutter.

kan man det?
Avatar billede binderup Nybegynder
24. februar 2003 - 16:25 #1
De steder hvor jeg bruger sessions, der gemmer jeg den slags information i en database, hvorefter jeg kan tage forskellen på det tidspunkt databasen sidst har skrevet information om den pågældende session og nu.
Avatar billede fina Nybegynder
24. februar 2003 - 16:34 #2
Nemlig via en time() ik?

brb finder lige en kode
Avatar billede fina Nybegynder
24. februar 2003 - 16:39 #3
her

//Start::
session_start();
$start_dag = date(\"d\",time());
$start_timer = date(\"h\",time());
$start_min = date(\"i\",time());
session_register(start_dag);
session_register(start_timer);
session_register(start_min);


//slut::
session_start();
$slut_timer = date(\"h\",time());
$slut_min = date(\"i\",time());
$online_timer = $slut_timer-$start_timer-1;
$online_min = $slut_min-$start_min+60;
if($start_dag != date(\"d\",time())) $online_timer = $online_timer+24;
echo \"Du har været online i $online_timer timer og $online_min minutter.\";


Men den starter på -1 time og 60 minutter.
Kan man tilpasse deT?
Avatar billede alrua Nybegynder
24. februar 2003 - 18:02 #4
brug et unix timestamp:

//start
session_start();
$start_tid = time();
session_register('start_tid');


//slut
session_start();
$start_tid = $_SESSION['start_tid'];
$slut_tid = time();
$tidsforloeb = $slut_tid - $start_tid;

//funktion til at formatere tidsforløbet
//language settings, for easy translation:
$lang['year']['text'] = 'år';
$lang['year']['ending'] = '';
$lang['month']['text'] = 'måned';
$lang['month']['ending'] = 'er';
$lang['week']['text'] = 'uge';
$lang['week']['ending'] = 'r';
$lang['day']['text'] = 'dag';
$lang['day']['ending'] = 'e';
$lang['hour']['text'] = 'time';
$lang['hour']['ending'] = 'r';
$lang['minute']['text'] = 'minut';
$lang['minute']['ending'] = 'ter';
$lang['second']['text'] = 'sekund';
$lang['second']['ending'] = 'er';


//convert function
function converttime($time, $format = 'text')
{
    GLOBAL $lang;
    $time_string = '';
   
    //any years?
    if($time >= 31536000) {
        $years = floor($time / 31536000);
        $array['years'] = $years;
        $time = $time % 31536000;
        $time_string .= "$years " . $lang['year']['text'];
        $time_string .= ($years != 1) ? $lang['year']['ending'] . ' ' : ' ';
    } else { $array['years'] = 0; }
   
    //any months?
    if($time >= 2592000) {
        $months = floor($time / 2592000);
        $array['months'] = $months;
        $time = $time % 2592000;
        $time_string .= "$months " . $lang['month']['text'];
        $time_string .= ($months != 1) ? $lang['month']['ending'] . ' ' : ' ';
    } else { $array['months'] = 0; }
   
    //any weeks (only if no months & no years)?
    if($time >= 604800 && !isset($years) && !isset($months)) {
        $weeks = floor($time / 604800);
        $array['weeks'] = $weeks;
        $time = $time % 604800;
        $time_string .= "$weeks " . $lang['week']['text'];
        $time_string .= ($weeks != 1) ? $lang['week']['ending'] . ' ' : ' ';
    } else { $array['weeks'] = 0; }

    //any days?
    if($time >= 86400) {
        $days = floor($time / 86400);
        $array['days'] = $days;
        $time = $time % 86400;
        $time_string .= "$days " . $lang['day']['text'];
        $time_string .= ($days != 1) ? $lang['day']['ending'] . ' ' : ' ';
    } else { $array['days'] = 0; }

    //any hours?
    if($time >= 3600) {
        $hours = floor($time / 3600);
        $array['hours'] = $hours;
        $time = $time % 3600;
        $time_string .= "$hours " . $lang['hour']['text'];
        $time_string .= ($hours != 1) ? $lang['hour']['ending'] . ' ' : ' ';
    } else { $array['hours'] = 0; }

    //any minutes?
    if($time >= 60) {
        $minutes = floor($time / 60);
        $array['minutes'] = $minutes;
        $time = $time % 60;
        $time_string .= "$minutes " . $lang['minute']['text'];
        $time_string .= ($minutes != 1) ? $lang['minute']['ending'] . ' ' : ' ';
    } else { $array['minutes'] = 0; }
   
    //remaining is seconds
    if($time > 0 || $time_string == '') {
        $time_string .= "$time " . $lang['second']['text'];
        $time_string .= ($time != 1) ? $lang['second']['ending'] . ' ' : ' ';
    }
    $array['seconds'] = $time;

    //return what?
    if($format == 'text') {
        return $time_string;
    } elseif($format == 'array') {
        return $array;
    }
}

echo "Du har været online " . converttime($tidsforloeb);
Avatar billede alrua Nybegynder
24. februar 2003 - 18:04 #5
ok, det virkede ikke helt som det skulle...
Avatar billede alrua Nybegynder
24. februar 2003 - 18:04 #6
finder lige fejlen :
Avatar billede alrua Nybegynder
24. februar 2003 - 18:10 #7
nå - det virker da fint...nok bare min egen server som ikke kan finde ud af sessions, når jeg ikke bruger dem normalt :)
Avatar billede fina Nybegynder
24. februar 2003 - 18:54 #8
Kan du gøre det simplere og kun med minutter?!?
Avatar billede alrua Nybegynder
24. februar 2003 - 19:17 #9
erm...jeps, lige 2 sek :)
Avatar billede alrua Nybegynder
24. februar 2003 - 19:24 #10
skriv det her i slut-tingen i stedet for:

session_start();
$start_tid = $_SESSION['start_tid'];
$slut_tid = time();
$tidsforloeb = $slut_tid - $start_tid;

$minutter = floor($tidsforloeb/60);
$enhed = ($minutter == 1) ? '' : 'ter';
echo "Du har været online " . $minutter . " minut" . $enhed;
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