Я пытаюсь создать функцию с HTML, JS и PHP, которая делает следующее:
- Когда кнопка HTML нажата, она передает значения массиву
$_GET
; - Когда эти значения существуют в массиве
$_GET
, появляется окно подтверждения JavaScript; - Если пользователь нажимает OK, JS присваивает массиву
$_COOKIE
значениеtrue
. Если пользователь нажимает CANCEL, JS присваивает массиву$_COOKIE
значениеfalse
; - Наконец массив
$_COOKIE
проверяется с помощью PHP, и если этоtrue
, он что-то делает. В противном случае он ничего не делает.
Где код для каждого шага:
// STEP 1
<a href="page.php?remove=true&id-organ=1">Remove</a>
// STEP 2 AND 3
if (isset($_GET['remove']) && isset($_GET['id-organ'])) {
echo '
<script>
var option = confirm("REMOVE?");
if (option == true) {
document.cookie = "option = true";
} else {
document.cookie = "option = false";
}
</script>
';
}
// STEP 4
if ($_COOKIE['option'] == true) {
echo '
<script>
window.alert("ORGAN WAS REMOVED!\n");
</script>
';
}
Если нажать JS Confirm Window OK, все работает нормально, отлично, без проблем.
Если нажать кнопку CANCEL в окне подтверждения JS, оператор STEP 4 if все равно будет выполнен.
- Я попытался
console.log(option)
, что неверно для кнопки ОТМЕНА. - Я попытался
echo $_COOKIE['option']
, что также неверно для кнопки ОТМЕНА.
Это не имеет никакого смысла, будучи буквально против всего программирования физики. . .
Может кто-нибудь сказать мне, почему это происходит? Я делаю что-то неправильно? Есть ли лучший способ для этого типа функциональности?
AJAX
и разделении PHP, HTML и Javascript. Поскольку PHP обрабатывается ДО того, как Javascript даже отправляется в браузер для запуска, вы получите результаты, которых не ожидаете. Таким образом, изучение того, как их разделить, позволит вам изучить лучшие практики, а также ограничить странные ошибки, которые появятся, когда вы объедините их вместе. - person imvain2   schedule 12.05.2020if ($_COOKIE['option'] == true) {
уже выполняется. - person epascarello   schedule 12.05.2020'true'
и'false'
оба являются истинными в PHP -'true' == true
и'false' == true
оба даютtrue
. Здесь вам нужноif ($_COOKIE['option'] == 'true')
(или даже===
, чтобы быть абсолютно уверенным, что нет никакой двусмысленности.) - person CBroe   schedule 12.05.2020false
, потому что функции обратной связи были противоположными. Бытьtrue
не входящим в if иfalse
входящим в If . - person Grinnex.   schedule 12.05.2020