php эхо-переменная javascript в file.txt - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть этот код, который отлично работает, чтобы получить пользовательский часовой пояс и эхо в php. До этого также было предупреждение.

<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js">
</script> <script> var timezone =
Intl.DateTimeFormat().resolvedOptions().timeZone; alert(timezone);
</script>
<?php
$time= "<script>document.writeln(timezone);</script>";
echo $time;

Я хочу сохранить это эхо в файле time.txt

Я пробовал с этим:

$file_name = 'time.txt';
//opens the file.txt file or implicitly creates the file
$myfile = fopen($file_name, 'w') or die('Cannot open file: '.$file_name);
// write name to the file
fwrite($myfile, $time);
// close the file
fclose($myfile);

но это не работает.

Какие-нибудь решения?

1 Ответ

2 голосов
/ 01 февраля 2020

Похоже, что вы хотите, чтобы PHP записал файл с результатом переменной часового пояса, то есть, чтобы это был текстовый файл с именем часового пояса в нем.

Возможно то, что вы видите, это PHP запись этой строки JavaScript, т.е. <script>document.writeln(timezone);</script>

Верно?

Что происходит, PHP выполняет полностью перед JavaScript запущено. Ваш первый пример работает, потому что PHP выполняется, включая запись строки JavaScript, а затем JavaScript выполняется, включая эту строку, и вы видите результат.

То, что вы пытаетесь выполнить сделать во втором примере невозможно. PHP выполняется, включая запись этой строки JavaScript (в файл), а затем JavaScript выполняется, но, конечно, не в этом текстовом файле.

Вы можете найти два варианта: другой способ получить часовой пояс строго в PHP, или же получить его с помощью JavaScript, а затем использовать AJAX для запуска позже запуска PHP, то есть после того, как JavaScript имеет запустить.

РЕДАКТИРОВАТЬ

Ваш JavaScript будет получать часовой пояс, как и раньше. Затем он отправит это в отдельный файл, который выводит его:

var url = '..'; // url of a php file that JUST processes the file write
$.ajax({
  type: "POST",
  url: url,
  data: {
        'timezoneToPrint' : timezone
    }
});

И в вашем другом PHP файле, который вы только что вызвали, теперь вы можете распечатать его в файл

if($_POST['timezoneToPrint']){
   // ..write the file here, the timezone is in $_POST['timezoneToPrint']
}
...