Значение JavaScript в PHP, CURL - PullRequest
       4

Значение JavaScript в PHP, CURL

0 голосов
/ 22 февраля 2011

ОБНОВЛЕНИЕ2:

Я попробовал этот кусок кода, но все еще не получил эхо, я оценил мое печенье в 3 для просто теста

    <?php ?>
<script type="text/javascript">
    date = new Date();

    ms = (date.getHours() * 24 * 60 * 1000) + (date.getMinutes() * 60 * 1000) +      (date.getSeconds()     * 1000) + date.getMilliseconds();
    alert(ms);
    document.cookie += 'test=3';

</script>

    <?php 
    echo $_COOKIE['test'];

?>

ОБНОВЛЕНИЕ1:

Я попробовал это: я сделал это правильно?ничего не повторилось.

<?php ?>
<script type="text/javascript">
    date = new Date();

    ms = (date.getHours() * 24 * 60 * 1000) + (date.getMinutes() * 60 * 1000) +      (date.getSeconds()     * 1000) + date.getMilliseconds();
    $.get("test.php", { test: ms } );
</script>

    <?php 
    echo $test;

?>

ОРИГИНАЛЬНАЯ ПОЧТА:

ну, в общем, я нахожусь на сайте с cURL, но каждый раз, когда я хочу изменить местоположение, гдемне нужно отправить дополнительную переменную ms на сайт .. так, например,

POST /chat.php?cg=0&ms=23585666

значение MS приходит из JavaScript, но как я получаю значение длямой код PHP, чтобы отправить его с постом cURL?

<script type="text/javascript">
date = new Date();

ms = (date.getHours() * 24 * 60 * 1000) + (date.getMinutes() * 60 * 1000) +      (date.getSeconds()     * 1000) + date.getMilliseconds();
</script>

, так что в конечном итоге он переходит к моим постполям cURL

$data = array('ms' => $VARIABLE_MS_FROM_JAVASCRIPT, 'cg' => 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Ответы [ 4 ]

2 голосов
/ 22 февраля 2011

JavaScript всегда выполняется после php-кода на стороне сервера.Вы можете сделать ajax-запрос в Javascript, например, с помощью jQuery:

<script type="text/javascript">
date = new Date();

ms = (date.getHours() * 24 * 60 * 1000) + (date.getMinutes() * 60 * 1000) +      (date.getSeconds()     * 1000) + date.getMilliseconds();


$.get("doCURL.php", { VARIABLE_MS_FROM_JAVASCRIPT: ms } );
</script>
0 голосов
/ 22 февраля 2011

Ваше обновление 2 вообще не будет работать.

Несмотря на то, что javascript предшествует php, он раньше не выполнялся.Он даже не выполняется на той же машине!

PHP обрабатывает этот блок javascript как обычный текст;он просто отправляет его в браузер как есть.

Так что PHP видит ваш код как:

<?php ?>
A bunch of stuff I don't care about

<?php 
echo $_COOKIE['something which doesnt exist'];
?>

Кажется, вы используете cURL для очистки сайта чата, верно?Вы не пытаетесь закодировать сайт?

Если это так, то это весь php-код, который вам нужен:

$ms=time();

А затем просто используйте его в своих настройках curl.

За исключением того, что это не сработает, потому что javascript со временем делает какие-то дурацкие вещи.Например, я предполагаю, что это умножение количества часов на 24 * 60 * 1000, чтобы получить миллисекунды, но это неправильно.

Когда я набираю это, сейчас 9:42 по местному времени.9 часов - это 9 * 60 * 60 * 1000 = 32 400 000 мс.

(9 часов * 60 минут в час * 60 секунд в минуту * 1000 мс в секунду)

Если вы находитесь вОбвиняйте этот javascript, вы, вероятно, должны исправить это, чтобы создать правильную временную метку, чтобы избежать этих головных болей:)

Но в духе ответа на поставленный вопрос, этот php-код будет дублировать (сломанную) математику времени вJavaScript:

$ms = round(date('h',$sec)*24*60*1000 + date('i',$sec)*60*1000 + date('s',$sec)*1000+$usec*1000);
0 голосов
/ 22 февраля 2011

Самый быстрый и простой способ сделать это - сохранить значение в файле cookie:

document.cookie += 'aCookieName=your_javascript_number'

сейчас, в PHP, чтобы получить его, просто сделайте

echo $_COOKIE['aCookieName'];

сейчаскаждый раз, когда пользователь выгружает (обновляет страницу, запускает вышеуказанный код javascript для обновления cookie)

document.body.onUnload = function(){ 
   document.cookie += 'aCookieName=your_javascript_number'
}

, но ... насколько я вижу ... вам нужно только текущее время изпользователь ... С javascript вы получаете только MACHINE TIME - это время часов в его операционной системе, которое меняется, как только он меняет время.Намного лучше (если вы можете) просто получить его от php с помощью функции php date ()

0 голосов
/ 22 февраля 2011

Это какой-то глупый javascript. Это может быть просто

ms=new Date().getTime();

Но не важно, все, что вам нужно сделать, это использовать в PHP эквивалентную функцию времени, такую ​​как

$ms=microtime(true)*1000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...