рассмотрим следующий PHP-код:
<?php $searchsport = $_REQUEST['sport']; $sportarray = array( "Football" => "Fb01", "Cricket" => "ck32", "Tennis" => "Tn43", ); header("Location: ".$sportarray[$searchsport].".html"); //directs user to the corresponding page they searched if ($searchsport == NULL) { header("Location: youtypednothing.html"); //directs user to a page I've set up to warn them if they've entered nothing } else { header("Location: sportdoesnotexist.html"); //if sport isn't in my root, a warning will appear } ?>
Я думаю, что комментарии к коду не требуют пояснений, в основном, когда я набираю Tennis на своем form.html, он отправит данные в этот файл php и обработает и направит меня на Tn43.html, который является моей теннисной страницей. К сожалению, это не работает, и я действительно хочу знать, почему … (Я знаю, что совершил какую-то огромную глупую ошибку).
PS: Является ли заголовком правильная функция для использования при выполнении какой-либо переадресации?
Вы должны немного изменить свой код и изменить тоже:
<?php $searchsport = $_REQUEST['sport']; $sportarray = array( "Football" => "Fb01", "Cricket" => "ck32", "Tennis" => "Tn43", ); if (!$searchsport) { header("Location: youtypednothing.html"); //directs user to a page I've set up to warn them if they've entered nothing exit; } elseif (!in_array($searchsport, $sportarray)) { header("Location: sportdoesnotexist.html"); //if sport isn't in my root, a warning will appear exit; } header("Location: ".$sportarray[$searchsport].".html"); //directs user to the corresponding page they searched exit; ?>
Я думаю, вам нужен абсолютный адрес в заголовке. Местоположение: … например http://yoursite.com/youtypednothing.html
вам нужно проверить, существует ли этот ключ, тогда вам нужно выйти из операторов if.
<?php $searchsport = $_REQUEST['sport']; $sportarray = array( "Football" => "Fb01", "Cricket" => "ck32", "Tennis" => "Tn43", ); if(isset($sportarray[$searchsport])){ header("Location: ".$sportarray[$searchsport].".html"); //directs user to the corresponding page they searched die; } else { if ($searchsport == NULL) { header("Location: youtypednothing.html"); //directs user to a page I've set up to warn them if they've entered nothing die; } else { header("Location: sportdoesnotexist.html"); //if sport isn't in my root, a warning will appear die; } } ?>
Имейте в виду, что заголовок () не запускается до конца сценария или вызывается exit (). Поэтому я уверен, что прямо сейчас ваш код только говорит:
(Псевдокод)
If null, send to the null page, else send to the default page.
Первая проверка будет перезаписана всеохватывающей секундой, если / else.
Попробуйте поставить чек в блок if / elseif / else с выходом в конце.