Внутри PHP / HTML- страницы я пытаюсь запустить сеанс в php, а затем установить значение переменной сеанса, и я пытаюсь сделать это внутри функции Javascript, и в этой функции есть оператор if, но php код внутри оператора if выполняется автоматически, когда я сразу же перехожу на страницу, когда я хочу, чтобы код запускался только тогда, когда пользователь принял условия …
Вот мой код:
HTML:
<label> <input type="checkbox" name="terms" id="terms-checkbox"> <font color="#090909" size="+1">I agree to the Terms and Conditions.</font> </label>
Javascript:
if(document.getElementById("terms-checkbox").checked){ <?php session_start(); $_SESSION["ITA"] = "Yes"; ?> window.open('DL.php?App=STOPit'); }
Поэтому, когда я открываю страницу php, содержащую этот предыдущий код Javascript, переменная $ _SESSION ["ITA"] будет равна «Да», даже если условие еще не выполнено.
Надеюсь, кто-то может мне помочь.
Для вашего лучшего понимания php
работает на стороне сервера, а javascript
работает на стороне клиента.
То, что вы пытаетесь сделать, возможно, если вы отправляете данные с помощью form
или вам нужно сделать вызов ajax
с помощью javascript
.
Ниже приведен один из способов сделать что-то подобное.
<?php session_start(); if(isset($_POST['terms'])) { $_SESSION["ITA"] = "Yes"; header('Location: DL.php?App=STOPit'); } ?> <form action="<?php $_SERVER["PHP_SELF"] ?>" method="post"> <label> <input type="checkbox" name="terms" id="terms-checkbox"> <font color="#090909" size="+1">I agree to the Terms and Conditions.</font> <input type="submit" value="Submit"> </label> </form>
Это не то, как работают PHP и Javascript.
PHP работает на сервере раньше всего. JS работает на стороне клиента.
Без дополнительной информации:
Я полагаю, что ваш JS-код не является файлом, а встроенным скриптом на той же странице HTML / PHP. Когда ваш пользователь запрашивает HTML-страницу, PHP анализирует ее, включая теги внутри вашего JS-кода.
Если вы хотите, чтобы PHP делал что-то, основанное на действиях пользователя в браузере ( document.getElementById
), вы должны использовать другие маршруты. Возможно, используя Ajax, например, так что ваш PHP-код может что-то сделать.
Всегда начинайте свой PHP session_start()
в верхней части файла скрипта PHP.
<?php session_start(); ?> Here you can continue with your HTML/CSS/JavaScript codes but the above is mandatory in order to start a session within your PHP project.
В противном случае вы будете отправлять информацию заголовка после завершения буферизации вывода, и в итоге вы получите ошибку:
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
Когда вы правильно инициализировали обработчик сеанса, как я описал, вы можете использовать или делать:
$_SESSION['item-name'] = 'value'; // to set a value of a specific session item echo $_SESSION['item-name']; // retrieve it's value and output it unset($_SESSION['item-name']); // to delete it from the $_SESSION container