Jump to content

Archived

This topic is now archived and is closed to further replies.

bgsomers

There are no mysteries! Are there?

Recommended Posts

I am close to distraction!

I have the following code:

[code]$mintime = 15;
now = time();
$timediff = ($now - $_SESSION["StartTime"] + 1);
$newdate = $newdate.' - '.$timediff.' - '.$now.' - '.$_SESSION["StartTime"];
[/code]
The date as it is usually displayed, looks like this:
date=25.07.2006 13:55 - 4 - 1153828543 - 1153828540

When the time difference between $now and the previously stored $_SESSION["StartTime"] is zero, the display looks like this, although I have added one to hat difference:
date=25.07.2006 14:04 - 1153829072 - 1153829071 -

I cannot see why $timediff , which cannot be less than one, is not being displayed.

That the other twp variables move forward by one position, still remains a true mystery.

There must be a trivial explanation for this!

Share this post


Link to post
Share on other sites
your problem might be somewhere else in your code...
try this:
[code]
if(isset($_SESSION["StartTime"])){
  $mintime = 15;
  now = time();
  $timediff = ($now - $_SESSION["StartTime"] + 1);
  $newdate = $newdate.' - '.$timediff.' - '.$now.' - '.$_SESSION["StartTime"];
}
[/code]

Make sure at the top of your page your initializing the session with session_start()

Share this post


Link to post
Share on other sites
The variable $_SESSION["StartTime"] is either not set or is empty in the second case, and therefore the line
[code]
$timediff = ($now - $_SESSION["StartTime"] + 1);
[/code]

evaluates to $now + 1.

Share this post


Link to post
Share on other sites
[quote]The variable $_SESSION["StartTime"] is either not set or is empty in the second case, and therefore the line

$timediff = ($now - $_SESSION["StartTime"] + 1);

evaluates to $now + 1.[/quote]

Thanks for that, It seems indeed, to be the case.

But if

[code]session_start();
$_SESSION["StartTime"] = time();[/code]

cannot be relied upon to create $_SESSION["StartTime"] , what is the alternative?

Share this post


Link to post
Share on other sites
Is there a way to display the entire contents of an array whose structure is not known?

$_SESSION for example?

Share this post


Link to post
Share on other sites
You can dump any array with any one of the following functions: var_dump(), var_export(), or print_r(). I prefer print_r(), although var_export() is also handy.

I use something like:
[code]<?php
function dumpit($arr,$title='')
{
    if (!empty($arr)) echo '<pre>' . $title . print_r($arr,true) . '</pre>';
}
?>[/code]

Ken

Share this post


Link to post
Share on other sites
Thank you Ken for that useful assistance. I don't believe I could have found it on my own.

I fear that interest in my problem is waning, but I have some more information, which hasn't cleared up a lot - not for me. at least.

My code (in file new.html.inc)
[code]session_start();
$_SESSION["StartTime"] = time();
if(isset($_SESSION["StartTime"])) { echo 's'; }[/code]

reproducibly displays a character s, indicating that $_SESSION has been created.


The code (in file input.php)
[code]session_start();
$mintime = 15;
$check = time();
$duration = ($check - $_SESSION["StartTime"]);
$admin01 = 'duration was '.$duration;
$admin02 = 'check time was '.$check;
$admin03 = 'start time was '.$_SESSION["StartTime"];
$admin04 = ' ';
if (!empty($_SESSION)) $admin04 = print_r($_SESSION,true);[/code]

later in the processing, often shows that $_SESSION exists:
date=27.07.2006 19:34
- duration was 1
- check time was 1154021699
- start time was 1154021698
- Array
(
    [StartTime] => 1154021698
)


but not always:
date=27.07.2006 19:38
- duration was 1154021938
- check time was 1154021938
- start time was
-

So it has the appearance that the previous session is not always being resumed. What can be the cause of that?

Working only now and then is actually worse than not working at all.

Share this post


Link to post
Share on other sites
Are you calling session_start() twice somehow? Or unsetting the $_SESSION variable somewhere?

Share this post


Link to post
Share on other sites
[code]$mintime = 15;
now = time();
$timediff = ($now - $_SESSION["StartTime"] + 1);
$newdate = $newdate.' - '.$timediff.' - '.$now.' - '.$_SESSION["StartTime"];[/code]

^^^ You're not signing now as a variable at the top:

[code]$mintime = 15;
$now = time();
$timediff = ($now - $_SESSION["StartTime"] + 1);
$newdate = $newdate.' - '.$timediff.' - '.$now.' - '.$_SESSION["StartTime"];[/code]

Is how it should be :P

Share this post


Link to post
Share on other sites

Thanks -- king arthur:
Are you calling session_start() twice somehow? Or unsetting the $_SESSION variable somewhere?

Yes - called once at the start of each processing of the session (in different files). The manual says that it's necessary to resume the session.


Thanks -- dark dude:
^^^ You're not signing now as a variable at the top:

Oh dear - that was a editing error.  "now" is written $now" in the code. Sorry.

"signing as a variable"? I never declare variables at the outset in PH

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.