php 将 javascript 变量回显到 file.txt

php echo a javascript variable to file.txt

我有这段代码可以很好地获取用户时区并在 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);

但它不起作用。

有什么解决办法吗?

您想要的似乎是 PHP 用时区变量的结果写入文件,即它是一个包含时区名称的文本文件。

可能您看到的是 PHP 写 JavaScript 行,即 <script>document.writeln(timezone);</script>

对吗?

发生的事情是 PHP 在 JavaScript 为 运行 之前 完全执行 。你的第一个例子是有效的,因为 PHP 执行,包括写一行 JavaScript,然后 JavaScript 执行,包括那一行,你会看到结果。

您在第二个示例中尝试执行的操作是不可能的。 PHP正在执行,包括JavaScript那一行的写入(到文件),然后JavaScript执行,当然不在那个文本文件中。

你的两个选择是找到一种不同的方法来严格在 PHP 中获取时区,或者使用 JavaScript 获取时区然后使用 AJAX 触发 [= PHP 的 31=]later 运行,即 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']
}