сеанс — переменная $ _SESSION где-то теряется …….. или PHP игнорирует & quot; IF … ELSEIF & quot;

У меня проблема с тем, чтобы мой скрипт PHP правильно читал и выполнял моиIF ….. ELSEIFусловия.

В моем первом файле у меня есть следующий код:

if(isset($_POST['submit'])  {

$selected_radio = $_POST['selection'];

$_SESSION['my_selection'] = $_POST['selection'];

if (($selected_radio == '25')   {

header("url=http://xxxxxxxxxxxxxxxxx");
}

elseif (($selected_radio == '50')    {

header("url=http://xxxxxxxxxxxxxxxxx");
}

}

Это была легкая часть.

Если либопереключатель«выбран, у меня есть функция Javascript, которая открывает»новое (дочернее) окно«

Это тоже легко.

Но затем наступает сложная часть: в этом новом окне пользователь должен выбрать один из переключателей:

if(isset($_POST['submit'])  {

$selected_radio = $_POST['my_response'];

if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{

echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}

elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50'))  {

echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';
}

По сути, это означает: если пользователь выбираетда«в текущем (дочернем) окне окно закрывается, а родительское окно перенаправляется на»25.php» или же «50.php«………. в зависимости от значения $ _SESSION [‘my_selection’] — который был выбран ранее в родительском окне

Но по какой-то причине это не работает. Мой код выполняется только ПЕРВОЕ ЕСЛИ-условие:

if (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25'))
{

echo '<script type="text/javascript">window.opener.location =
"/PHP/25.php";setTimeout("window.close();", 1000);</script>';
}

Это полностью игнорирует второй …………., даже если пользователь ранее выбрал «50«в родительском окне.

Моя первая мысль была: значение SESSION переключателя —- $ _SESSION [ ‘my_selection’] — не переносится в новое (дочернее) окно.

Но я использовалэхо«чтобы убедиться, что это работает правильно. Значение действительно переносится в новое (дочернее) окно.

Однако после того, как дочернее окно закрывается и родительское окно перенаправляется, я использовал «эхо«снова отслеживать любые ошибки …….. и это показало, что: значение $ _SESSION [ ‘my_selection’] всегда равно25«

В двух словах : почему игнорируется второе IF-утверждение ??

    elseif (($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] =
'50'))  {

echo '<script type="text/javascript">window.opener.location =
"/PHP/50.php";setTimeout("window.close();", 1000);</script>';

-1

Решение

($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25')
^                                      ^

Один знак равенства — это присвоение, и в качестве значения, которое вы назначаете, верно if всегда буду оценивать true, использование == для сравнения.

4

Другие решения

Ты используешь = вместо == почти во всех заявлениях:

if (($_POST['my_response'] = 'yes')

должно быть

if (($_POST['my_response'] == 'yes')

Таким образом, вы не проверяете, если $_POST['my_response'] равно «да», но если можно назначить «да» $_POST['my_response'], В следствии, все ваш if заявления true,

1

По вопросам рекламы [email protected]