использование PHP во внешнем JS

У меня есть большой скрипт проверки подлинности JS. Я хочу, чтобы этот скрипт был внешним JS.

Все отлично работает с этим, но в JS я использую cookie для обработки контактов моего пользователя.

И кроме того, я использую PHP в этом JS.

Если JS в html, то работает. Но если я поставлю его на внешний, то нет.

Например:

Внешний JS:

$(document).ready(function() { var test = $.cookie('tet'); $.cookie('tet','8'); <?php if (isset($_SESSION['main_check_a'])) { echo "$.cookie('tet','1');"; ?> }} 

}

Как я могу передать этот PHP-код моему внешнему JS?

Вам нужно либо

  • Попросите JS-файл проанализировать PHP, назвав его filename.js.php или изменив конфигурацию сервера для PHP для анализа файлов .js. Однако это не является оптимальным, поскольку для каждого запроса скрипта будет запущен ресурсоемкий PHP-экземпляр.

  • В качестве альтернативы, намного лучше ИМО, выполняйте необходимые проверки в <script> в документе внедрения и сохраняйте результаты в переменных JS, которые могут запрашивать встроенные внешние скрипты. Таким образом, ваши файлы сценариев могут оставаться статическими.

    В вашем случае это будет означать нечто подобное. В основном документе:

     <script> <?php echo "main_check_a = "; echo (isset($_SESSION['main_check_a']) ? "true" : "false"); ?> </script> .... now, include external JS files .... 

    это даст вам переменную JavaScript main_check_a которую вы можете использовать во внешних сценариях.

Вы должны настроить сервер для анализа этого файла. Усушно вы дадите ему расширение * .php

Чтобы избежать особых проблем, вы должны отправить правильный заголовок внутри этого скрипта:

 header('Content-Type:text/javascript'); 

Если вы не можете изменить расширение, вы можете, например, использовать AddType-Директив Apache, чтобы настроить сервер для разбора * .js-Files (но я бы не рекомендовал его)

Если вы экспериментируете с кодогенерацией php / js, остановитесь прямо сейчас. Это то, что я бы назвал практикой «высокого риска», поскольку он размывает линию между бизнесом и логикой представления. Кроме того, вы получаете сложный код для поддержки супов кода и головных болей кэша браузера.

Генерирование кода следует избегать в любое время, если для этого нет веских оснований, и я бы не стал ссылаться на cookie, что было хорошей причиной. С немного более продуманным, вы можете найти более удобное решение.

Поделитесь с куками бизнес-логики по строкам «я могу» и «Могу ли я». Другими словами; если есть причина писать cookie с PHP, хранить его на PHP и читать только cookie с помощью JavaScript.

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

В конце концов, было меньше работы, чтобы сделать это правильно.

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

Если бы я был вами, я бы подумал о том, чтобы перепроектировать все это так, чтобы вам в первую очередь не нужен PHP-скрипт.

Либо настройте PHP для анализа файлов .js , либо укажите свой внешний файл JavaScript /yourjavascriptfile.js.php