ヘッダー ($URL) が呼び出されるまでに、このコードの $URL 変数が常に 'Location: unknown.php' に設定される理由を誰か説明できますか?: 最初の行の宣言/初期化をコメントアウトすると、コードは機能します、しかし、変数が宣言されていないという警告が表示されます(初期化せずに if ブロックの前に $URL を宣言すると、これらの警告も表示されます)。
$URL = 'Location: unknown.php';
if ($spring){
if (($leaves)&&(!$stem)&&(!$root)&&(!$head)&&(!$whole)){$URL = 'Location: snow-mold.php';}
} else if ($other) {
if ((!$leaves)&&(!$stem)&&(!$root)&&($head)&&(!$whole)){$URL = 'Location: o01.php';}
if (($whole) || ($root) ){$URL = 'Location: o02.php';}
if (($leaves)&&($stem)&&(!$root)&&($head)&&(!$whole)){$URL = 'Location: o03.php';}
if (($leaves)&&($stem)&&(!$root)&&(!$head)&&(!$whole)){$URL = 'Location: o04.php';}
if ((!$leaves)&&($stem)&&(!$root)&&($head)&&(!$whole)){$URL = 'Location: o03.php';}
if (($leaves)&&(!$stem)&&(!$root)&&($head)&&(!$whole)){$URL = 'Location: o05.php';}
if ((!$leaves)&&($stem)&&(!$root)&&(!$head)&&(!$whole)){$URL = 'Location: o06.php';}
if (($leaves)&&(!$stem)&&(!$root)&&(!$head)&&(!$whole)){$URL = 'Location: o07.php';}
}
header($URL);
さて、問題を強調するためにコードを単純化しました...
$spring = (isset($_POST['season']) && strcmp($_POST['season'],'spring') == 0);
$URL = 'Location: unknown.php';
if ($spring){
$URL = 'Location: snow-mold.php';
}
header($URL);
常に unknown.php にリダイレクトします。に変更$URL = 'Location: unknown.php'
する$URL;
と、Spring が選択されている場合にのみコードが snow-mold.php にリダイレクトされますが、$URL 未定義の警告が表示されます。