Если URL-адрес изменяется после аутентификации и если у вас нет доступа к изменению этого URL-адреса, вам нужно будет сохранить эту переменную в одном из следующих мест:
На сервере
- Cookie-файлы
- Сессионные Cookies
// Before authentication
$_SESSION['courseNumber'] = getCourseNumberFromURL();
...
// In authenticated
$courseNumber = $_SESSION['courseNumber'];
Веб-браузер
- Локальное хранилище
- Хранилище сеансов
// Before authentication
localStorage.set('courseNumber', getCourseNumberFromURL())
...
// After Authentication
const courseNumber = localStorage.get('courseNumber')
Редактировать - Расширенный ответ Итак, я думаю, что здесь необходимы некоторые пояснения. PHP и JavaScript не могут общаться друг с другом так, как я думаю, вы понимаете. Вы можете использовать PHP для генерации динамических c сценариев, но как только пользователь отправит html, PHP больше не сможет взаимодействовать с этой страницей или манипулировать ею. Это означает, что вы не можете получить доступ к переменной JavaScript через PHP.
Если нам нужно отправить данные JavaScript на наш сервер, мы выполняем одно из двух действий:
- Создайте пользовательскую форму и отправьте ее на конечную точку PHP.
- Создайте запрос XMLHttpRequest.
Для 2 я рекомендую посмотреть выборку, которая очень поддерживается в все современные браузеры. (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
Принимая это во внимание, вот что я рекомендую сделать для вашего случая:
<?php
// Whatever you had before
// Store the courseNumber if we haven't already
if (!$_SESSION['courseNumber']) {
$_SESSION['courseNumber'] = $_GET['courseNumber'];
}
// More junk
// Now, let's check if authenticated:
if ($GLOBALS['authenticated'] ) {
// We are! Let's echo the courseNumber
echo $_SESSION['courseNumber'];
// Or, if you need to do it in a tag, try this:
// This directly inserts the data as the page is being generated to send by PHP
echo "<p id='demo'>".$_SESSION['courseNumber']."</p>";
// Or do this if you have to have the JavaScript insert the value for some reason
echo "<p id='demo'></p>";
echo "<script>document.querySelector('#demo').innerText = '" . $_SESSION['courseNumber'] . "'</script>";
}
?>