У меня есть большой скрипт проверки подлинности 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