Я хочу перенаправить страницу в соответствии с выбранным значением параметра, если я выберу один из тега параметра, чем он будет перенаправлен на страницу google.com, в противном случае я выбрал другой вариант, он будет перенаправлен на страницу gmail.com. Я пишу этот код, но он будет перенаправлять То же значение, если я выберу другой вариант любое решение для них.
<?php
$package = isset($_GET['package_select']);
if ($package == 'one')
{
header("Location: http://google.com");
}
else if ($package == 'two')
{
header("Location: http://youtube.com");
}
?>
<html>
<body>
<form action="#" method="get" id="packageForm" >
<select name="package_select">
<option value="">Select package</option>
<option value="one">One listing</option>
<option value="two">Two listings</option>
</select>
<input id="submitButton" type="submit" value="Submit" />
</form>
</body>
</html>
isset
вернусь true
или же false
в зависимости от того, установлена ли данная переменная. Итак, когда вы делаете это:
$package = isset($_GET['package_select']);
$package
будет либо true
или же false
,
Поэтому, когда вы сравниваете это с if ($package == 'one')
или же else if ($package == 'two')
эти равенства никогда не будут достигнуты правильно. Если либо one
или же two
выбран, то $package == 'one'
будет оценивать как истину, потому что true
равен обоим 'one'
а также 'two'
по сравнению с использованием ==
и вы всегда получите первый редирект.
Вместо этого вы можете использовать встроенную функцию фильтра, чтобы присвоить значение $_GET['package_select']
в $package
или null
значение, если $_GET['package_select']
не установлен. (Это будет иметь место только в том случае, если форма не была отправлена. Если была выбрана пустая опция «Выбрать пакет», то isset($_GET['package_select'])
все равно вернется true
.)
$package = filter_input(INPUT_GET, 'package_select');
Тогда ваш if
/elseif
будет работать правильно, потому что $package
может содержать либо one
или же two
вместо бул.
Пытаться…
if(isset($_GET['package_select'])){
if ($_GET['package_select'] == 'one')
{
header("Location: http://google.com");
exit;
}
else if ($_GET['package_select'] == 'two')
{
header("Location: http://youtube.com");
exit;
}
}
Или еще лучше …
if(isset($_GET['package_select'])){
switch($_GET['package_select']){
case('one'):{ header("Location: http://google.com"); exit; }
case('two'):{ header("Location: http://youtube.com"); exit; }
}
}