У меня проблема с тем, чтобы мой скрипт 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>';
($_POST['my_response'] = 'yes') && ($_SESSION['my_selection'] = '25')
^ ^
Один знак равенства — это присвоение, и в качестве значения, которое вы назначаете, верно if
всегда буду оценивать true
, использование ==
для сравнения.
Ты используешь =
вместо ==
почти во всех заявлениях:
if (($_POST['my_response'] = 'yes')
должно быть
if (($_POST['my_response'] == 'yes')
Таким образом, вы не проверяете, если $_POST['my_response']
равно «да», но если можно назначить «да» $_POST['my_response']
, В следствии, все ваш if
заявления true
,