перенаправить страницу в соответствии с выбранным значением параметра

Я хочу перенаправить страницу в соответствии с выбранным значением параметра, если я выберу один из тега параметра, чем он будет перенаправлен на страницу 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>

-1

Решение

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 вместо бул.

2

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

Пытаться…

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; }
}
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector