[PHP-users 3582] Re: ネットスケープでLocation が変なところに飛んでしまう。
松島 知弘
php-users@php.gr.jp
Thu, 15 Nov 2001 18:14:07 +0900
松島です。
Netscape 6.0 では、相対URIで動かないのが仕様だったと思います。
(その後のバージョンからは動作はしていたと記憶しています)
> header(Location : login.php);
誰も突っ込まないようですが、そもそも文法エラーです。
文字列なら、引用符か二重引用符で囲みましょう。
> トップHTMLでユーザIDとPWを入力させ、login.phpで認証しようとしているのですが、
> submitでlogin.phpに送ろうとすると「www.login.phpが表示されません」というメッ
> セージがでてしまいます。
どのような手順になっているのか分かりません。
この説明からは、フォームに <form action="login.php"> と記述して
それで login.php に飛ばない、と読み取れるのですが、
そうなるとLocationが不要になり、質問に矛盾します。
無理にLocationが必要になる手順を想定すると、
次の図のような手順になるのでしょうか……。
(今度は「submitでlogin.phpに送る」に矛盾しますが)
━━━━━━┳━━━━━┳━━━━━━━━
ブラウザ ┃ (通信) ┃ サーバ
━━━━━━╋━━━━━╋━━━━━━━━
┌フォーム┐┃ ┃
│ の │┃ ┃
└ HTML ┘→submitする→┌ フォームの ┐
┃ ┃│action要素で│(どこか)
┌Location┐← Location ←└指定したURL ┘
│に従い再│┃ ┃
└取得する┘→ GETする →┌ Locationで ┐
┃ ┃│ 指示された │(login.php)
┌Location┐←←←←←←←└ URL ┘
│ のURLの│┃ ┃
└ 内容 ┘┃ ┃
━━━━━━┻━━━━━┻━━━━━━━━
> それに、何も書いていないようなPHPでテストをしてみる
「何も書いていないようなPHP」とは、一体何なのでしょうか。
<?php ?> のようなファイルですか?
それとも、拡張子がPHPの0バイトのファイルですか?
他人に意味が伝わる書き方をして下さい。
> もう少し現象を切り分けてみてはいかがでしょうか。
header('Location: login.php'); // 相対URI 1 (カレント)
header('Location: ./login.php'); // 相対URI 2 (相対パス)
header('Location: /login.php'); // 相対URI 3 (絶対パス)
header('Location: http://www.example.com/login.php'); // 絶対URI
こんな感じで。それぞれ、上手くいくかどうか試してみましょう。
──────────────────────────────
松島 知弘 matsushima@popup.org
http://www.popup.org/ai/