0

メールを送信するために、PHP スクリプトでユーザーの現地時間を使用する必要があります。JS からデータを取得して、PHP で使用するにはどうすればよいですか?

理想的には、これで必要な時間が得られます。

var now = new Date();
var hrs = now.getHours();
var msg = "";

if (hrs >  0) msg = "Mornin' Sunshine!"; // REALLY early
if (hrs >  6) msg = "Good morning";      // After 6am
if (hrs > 12) msg = "Good afternoon";    // After 12pm
if (hrs > 17) msg = "Good evening";      // After 5pm
if (hrs > 22) msg = "Go to bed!";        // After 10pm

alert(msg);

しかし、PHP スクリプトで JS 変数のデータを使用する方法を知る必要があります。これは、ユーザーが連絡先フォームを送信した後に発生するため、フォームへのアクセスでユーザーの時間を収集し、実際に使用する前にそれを php に渡すことができます。ここでAJAXは私の解決策でしょうか?初めてAJAXを学んでいるのですが、聞いた限りではこのような機能を持っているとのこと。

4

1 に答える 1

1

フォームの送信時に日付を送信する場合は、Ajax は必要ありません。フォームが送信されると、スクリプトを使用して時間を見つけ、フィールド値をそれに設定します(その後、PHPに投稿されます)。

あなたの例を見ると、PHPの組み込みの日付関数を使用する必要がありますが、タイムゾーンなどを変更できます。クライアントのタイムゾーンが頻繁に変更されることが予想される場合は、少なくともJavascriptを介してタイムゾーンを渡すのが最善かもしれませんが、おそらく全日程。

その他のオプションとして、サイトへの最初の訪問時に、ここで説明したのと同様のスクリプトを実行できます。Javascript でユーザーの日付/時刻を取得し、場合によっては Ajax を使用して、タイムゾーン オフセットを保存する PHP スクリプトに送信することもできます。いつでも使用できるセッション。例えば

<?php

// example script...
if( !isset($_SESSION['timezone_offset'])) : ?>
<script>
// javascript here to get 'client_datetime' etc

// ajax here to post the 'client_datetime' to yourscript.php
</script>
<?php endif; ?>

-- yourscript.php
<?php

if( isset($_POST['client_datetime']) ) {

$server_time = strtotime( date('Y-m-d H:ia') );
$client_time = strtotime( $_POST['client_datetime'] );

$offset = $server_time - $client_time;

$_SESSION['timezone_offset'] = $offset;

}

?>

-- whenever you want to use date or time in PHP:

<?php

// clients date and time
echo date('Y-m-d H:ia', strtotime(date('Y-m-d H:ia')) + $_SESSION['timezone_offset']);

?>

多くのオプション... Javascript を使用してフォーム onSubmit() にアタッチし、PHP で使用する post 変数にするのが最も簡単だと思います。

Ajax を使用して PHP に送信する場合は、PHP が受信したときにセッションを設定し、再度要求しないようにしてください。同じデータを取得するために複数の要求をサーバーに送信しても意味がありません。

于 2013-10-07T21:07:31.043 に答える