Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Sostituire alla data del PC quella del server

    Vi presento uno script molto semplice che vorrei modificare aggiungendo codice php. Lo scopo é quello di calcolare la data di Greenwich con javascript e quindi in locale utilizzando però come base per il calcolo l'ora del server (php) anziché quella del pc.

    Mi date una mano?

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Documento senza titolo</title> 
    </head> 
    <body onload="ora_di_greenwich();">
    <?php
    echo "
    <script type=\"text/javascript\"> 
    function ora_di_greenwich() { 
    localDate = new Date(); 
    localTime = localDate.getTime();
    UTCoffset = localDate.getTimezoneOffset();
    UTCTime = localTime + (UTCoffset * 60 * 1000); 
    UTCDate = new Date(UTCTime); 
    document.riferimento.greenwich.value=UTCDate; 
    setTimeout(\"ora_di_greenwich()\",1000); 

    </script>
    "
    ;
    ?>
    <form name="riferimento" action=""> 
    <input type="text" value="00:00:00" name="greenwich" style="width:500px"/> 
    </form> 
    </body> 
    </html>
    Grazie
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  2. #2
    Credo che nel momento in cui chiedi l'ora, anche con un timestamp, ti dica l'ora del server, mica quella del pc.
    In base al fuso del server, diminuisci, come nel caso dell'italia, il timestamp di -3600 e hai l'ora di greenwich (chiaramente va convertita con date("H:m:s", time()); )
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Per essere sicuri bisognerebbe provare a caricarlo però ho aggiornato il codice in questo modo e non capisco perché non funge...

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Documento senza titolo</title> 
    </head> 
    <body onload="ora_di_greenwich();">
    <script type="text/javascript"> 
    function ora_di_greenwich() { 
    localDate = new Date(<?php echo time();?>);
    localTime = localDate.getTime();
    UTCoffset = localDate.getTimezoneOffset();
    UTCTime = localTime + (UTCoffset * 60 * 1000); 
    UTCDate = new Date(UTCTime); 
    document.riferimento.greenwich.value=UTCDate; 
    setTimeout("ora_di_greenwich()",1); 

    </script>
    <form name="riferimento" action=""> 
    <input type="text" value="00:00:00" name="greenwich" style="width:500px"/> 
    </form> 
    </body> 
    </html>
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  4. #4
    Beh, perché ti restituisce un timestamp mentre lì richiede una stringa data formattata.
    Per vedere l'ora di greenwich puoi fare solo così:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Documento senza titolo</title> 
    </head> 
    <body>
    <?php 
    //su server italiano è +1 ora cioè 3600 secondi
    echo date("H:i:s",time()-3600);
    ?>
    </body> 
    </html>
    Se il server fosse a londra, ti basta togliere il -3600 e sei a posto.
    Dipende tutto dalla data del server
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Grazie, sei gentilissimo! Il problema é che io vorrei vedere i secondi scorrere...
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  6. #6
    Allora per quello vai su javascript.
    Potrei farti un copia e incolla generale ma per quello ti consiglio di cercare in giro.
    Io al volo ho trovato questo.
    Con google se fai una ricerca generica come questa, qualcosa trovi.
    Intanto con una riga ti sei risolto un problema
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Infatti preferirei usare javascript però devo leggere la data con il php perché l'unico linguaggio lato server "che conosco".
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  8. #8
    allora, partiamo dal presupposto che PHP:ate ti ritorna la data impostata sul server, mentre Javascript:ate ritorna la data impostata sul client (visto che php gira lato server mentre javascript lato client), la soluzione è:

    cercare uno script javascript su google per realizzare una specie di orologio, e in tale script sostituire il :

    codice:
    //codice javascript
    miadata = new Date();
    dove viene inizializzata la data di partenza dell'orologio, con la data del server... facendo una velocissima ricerca, scopri che JS:ate accetta questi parametri: http://www.morpheusweb.it/html/manua...cript_date.asp quindi:

    Codice PHP:
    miadata = new Date(<?php echo date('Y,m,d,H,i,s'); ?>);
    e l'orologio partirà a scorrere iniziando dalla data presente sul server


    detto ciò, visto che sai benissimo quanto la data del tuo server si discosta da quella di greenwich, invece di date('Y,m,d,H,i,s') usi date passandogli i due parametri (format e timestamp) ricalcolando il timestamp togliendo/aggiungendo ore al timestamp di now() del tuo server
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Grazie mille ragazzi, ho risolto!

    Ora sto cercando di calcolare la variabile data del server ogni secondo ma non ne sono capace...

    Questo é il codice...

    Codice PHP:
    <script type="text/javascript">
    /*<![CDATA[*/
    serverdate = new Date(<?php echo date('Y,n-1,j,G,i,s'); ?>);
    function data_del_server() {
    serverdate.setSeconds(serverdate.getSeconds()+1);
    currenttime = serverdate.getTime();
    setTimeout("data_del_server()", 1000);
    }
    /*]]>*/
    </script>
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.