Date() probleem
In de date() tutorialtutorial staat dit voorbeeld:
Voor het debuggen heb ik een bestand gemaakt waarin ik een aantal gebruikte variabelen genereer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if ( ! session_id() ) @ session_start();
$_session = array("first_name"=>"Harry H.",
"family_name"=>"Arends",
"user_rank"=>"ADMIN",
"language"=>substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2),
"ip-adres"=>$_SERVER['REMOTE_ADDR'],
"SESSIONID"=>session_id(),
"Last_Login_time" => $datum
);
echo '<pre>'; print_r($_session); echo '</pre>';
?>
if ( ! session_id() ) @ session_start();
$_session = array("first_name"=>"Harry H.",
"family_name"=>"Arends",
"user_rank"=>"ADMIN",
"language"=>substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2),
"ip-adres"=>$_SERVER['REMOTE_ADDR'],
"SESSIONID"=>session_id(),
"Last_Login_time" => $datum
);
echo '<pre>'; print_r($_session); echo '</pre>';
?>
Code (php)
Hoe kom ik achter de echte tijd waarop de gebruik inlogt??
Gewijzigd op 27/08/2017 20:20:59 door - Ariën -
Of gaat het uiteindelijk om het visueel te krijgen aan de hand van de plek waar de gebruiker zich bevindt op de aardbol?
De var $_session heeft helemaal niks met een session te maken.
De var in de session is namelijk $_SESSION met hoofdletters.
Daarna kan je met strftime() de datum en/of tijd generen zoals de gebruiker die heeft.
Let wel: die is niet altijd synchroon met de tijd van de computer zelf: immers je server maakt alsnog de tijd. En dat wil je ook, anders zou iemand in de toekomst kunnen posten oid.
- Ariën - op 25/08/2017 20:05:44:
CorrectWat is er mis om de servertijd te gebruiken?
Of gaat het uiteindelijk om het visueel te krijgen aan de hand van de plek waar de gebruiker zich bevindt op de aardbol?
Of gaat het uiteindelijk om het visueel te krijgen aan de hand van de plek waar de gebruiker zich bevindt op de aardbol?
Iemand die een tijdzone van één uur vroeger heeft heeft dus een tijd die al gepasseerd is. Eventuele controles in je script zien diegene dan niet als actief.
Ook zou het wel vreemd staan als iemand op dit moment om 23:42 is ingelogd.
Maar om het voor diegene visueel te krijgen, dan kan je kijken aan de hand van ip2geo lijsten in welk land die zich bevindt, en wat zijn tijdzone is.
function getTimezoneName() {
timezone = jstz.determine()
return timezone.name();
}
</script>
Alleen de echo laat niets zien. (Ik ben dus wel een Javascript NNOB)
Mijn vorige bericht nog gelezen?
- Ariën - op 26/08/2017 16:27:48:
Heb ik maar zelfs ditlaat een leeg scherm zien. Ik probeer dingen stukje bij beetje.Mijn vorige bericht nog gelezen?
Gewijzigd op 26/08/2017 16:34:07 door Harry H Arends
https://www.w3schools.com/js/js_date_methods.asp
Maar lokale tijden gebruiken is niet de oplossing voor je probleem.
Dit is de beste manier:
Maar lokale tijden gebruiken is niet de oplossing voor je probleem.
Dit is de beste manier:
Code (php)
1
2
3
4
5
2
3
4
5
<span id="datum"></span>
<script>
document.getElementById("datum").innerHTML = Date();
</script>
<script>
document.getElementById("datum").innerHTML = Date();
</script>
Gewijzigd op 26/08/2017 16:43:47 door - Ariën -
Hoe krijg ik datum en tijd gescheiden te zien??
Klik maar op de link en je ziet de methods. ;-)
- Ariën - op 26/08/2017 17:20:22:
Aan het proberen gegaan maar loop tegen iets aan wat ik niet kan verklaren.Klik maar op de link en je ziet de methods. ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
var d = new Date();
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
document.getElementById("demoday").innerHTML = days[d.getDay()];
</script>
<span id="datum0"></span>
<p id="datum"></p>
<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<script>
document.getElementById("datum").innerHTML = days[d.getDay()];
document.getElementById("demo1").innerHTML = d.toLocaleTimeString();
document.getElementById("demo2").innerHTML = d.toLocaleTimeString();
document.getElementById("demo3").innerHTML = d.toLocaleTimeString();
document.getElementById("datum0").innerHTML = Date();
</script>
var d = new Date();
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
document.getElementById("demoday").innerHTML = days[d.getDay()];
</script>
<span id="datum0"></span>
<p id="datum"></p>
<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<script>
document.getElementById("datum").innerHTML = days[d.getDay()];
document.getElementById("demo1").innerHTML = d.toLocaleTimeString();
document.getElementById("demo2").innerHTML = d.toLocaleTimeString();
document.getElementById("demo3").innerHTML = d.toLocaleTimeString();
document.getElementById("datum0").innerHTML = Date();
</script>
Toevoeging op 27/08/2017 11:30:57:
UPDATE:
Om het verschil in uitkomst tusse JS en PHP te bekijken heb ik een vergelijking gebouwd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<span id="clientunix"></span> = client-UNIX timestamp<br />
<script>
var d = new Date();
document.getElementById("clientunix").innerHTML = d.getTime();
</script>
<?php
date_default_timezone_set("Europe/Amsterdam");
echo "Hier start PHP<br />";
$timenow = time();
echo "<br />".$timenow." = Server-UNIX timestamp <br />"; ?>
<script>
var d = new Date();
document.getElementById("clientunix").innerHTML = d.getTime();
</script>
<?php
date_default_timezone_set("Europe/Amsterdam");
echo "Hier start PHP<br />";
$timenow = time();
echo "<br />".$timenow." = Server-UNIX timestamp <br />"; ?>
Dit leverd een 'vreemd' fenomeen op. De JS stamp bestaat uit 13 cijfers en de PHP uit 10 cijfers.
Voorlopig laat ik het hiereven bij en de gebruikers moeten bij aanmelding hun tijd-zone invullen.
Allemaal bedankt voor de hulp.
Gewijzigd op 27/08/2017 12:07:57 door - Ariën -
https://timezonedb.com ;-)
Een over dat 'vreemde' fenomeen:
Javascript toont de tijd na 1 jan. 1970 in milliseconden. PHP toont dit in seconden.
Een kijkje in de documentatie verklaart alles ;-)
Gewijzigd op 27/08/2017 12:11:38 door - Ariën -