Проблема кодирования PHP новичка: функция заголовка (возможно, мне нужен кто-то, чтобы проверить мой код) - PullRequest
0 голосов
/ 22 мая 2010

рассмотрим следующий код 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: заголовок - это правильная функция, которую нужно использовать при перенаправлении?

Ответы [ 4 ]

3 голосов
/ 22 мая 2010

Вы должны немного изменить свой код и изменить тоже:

<?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;
?>
0 голосов
/ 22 мая 2010

вам нужно проверить, существует ли этот ключ, тогда вы должны выйти из операторов 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;
    }
}
?>
0 голосов
/ 22 мая 2010

Имейте в виду, что header () не срабатывает до конца скрипта, или вы вызываете exit (). Так что я уверен, что сейчас ваш код говорит только:

(псевдокод)

If null, send to the null page, else send to the default page.

Первая проверка будет перезаписана секундой "все включено", если / еще.

Попробуйте поставить чек в блок if / elseif / else с выходом в конце.

0 голосов
/ 22 мая 2010

Я думаю, вам нужен абсолютный адрес в вашем заголовке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...