PHP работает на сервере, а Javascript - на клиенте. У них совершенно разные среды выполнения, и они выполняются в разное время. Переменные PHP имеют область видимости переменных PHP и правила JS не должны вступать в игру, поскольку PHP не выполняется в «среде JS». Это невозможно.
Вы можете использовать PHP GENERATE JS-код / переменные, но эти переменные не обрабатываются / не выполняются / не проверяются механизмом JS до тех пор, пока ПОСЛЕ страница не была сгенерирована PHP и отправлено в браузер клиента.
Вы также можете иметь переменные JS для "отправки" в PHP, но это делается с помощью вызова AJAX, и снова JS запускается в браузере клиента, а PHP запускается на веб-сервере. Вызовы AJAX - это всего лишь обычный HTTP-запрос в отношении PHP, и когда ответ возвращается к JS, работающему в браузере, он похож на любой другой HTTP-ответ от сервера.
Ваш второй session_start()
завершится сбоем - сеансы должны быть запущены ДО того, как сервер сгенерирует какие-либо выходные данные, так как токен идентификатора сеанса отправляется в браузер клиента в виде обычного файла cookie HTTP. PHP автоматически отправляет полные заголовки HTTP всякий раз, когда сценарий производит какие-либо выходные данные, и вы выводите начало HTML-страницы и некоторый код JS до выполнения второй session_start ().
Если у вас есть что-то вроде этого:
<script type="text/javascript">
var jsvar = <?php echo $phpvar; ?>;
</script>
Что касается движка PHP, то это совершенно правильный код PHP, и он выдаст любое содержимое $phpvar
на тот момент. Но помните - PHP работает на сервере - движок PHP не имеет ни малейшего представления о среде, в которую вы выводите эту переменную. Он не знает, что находится внутри блока javascript, он просто знает, что должен выводить содержимое переменной. Если $ phpvar не определен в этот момент, вы на самом деле будете производить:
var jsvar = ;
и это синтаксическая ошибка. Это полностью до ВЫ , чтобы гарантировать, что вы используете PHP для генерирования действительного JAVASCRIPT code.l