人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Lacoocan(niftyレンタルサーバ), php, session, header に関する質問です。

index.php から postデータを login/login.php に送り、index.php にリダイレクトされる流れで、session_start() と login/login.php 内で header('Location: ../index.php') を記述してあります。
login.php 内で 上記のheader(......)のみの記述でも、login.php の url のままページ遷移が起こりません。try?catch でheader部の記述をはさむと、HTTP500 エラーとなります。

index.php を書き換えると、index.php自信へのリダイレクトはできますが、$_SESSION(setcookieも)は使えませんでした。

何か基本的な記述を忘れているのか、記述が悪いのか、Lacoocan では使えないのか、それともLacoocan内でのエラーなのか、を教えていただけたらと思います。localhost 環境では setcookie、session、header、どれも希望通りに動きました。

●質問者: AKI-NAMI
●カテゴリ:ウェブ制作
✍キーワード:Catch INDEX LaCoocan localhost LOGiN
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● KeyKey
●60ポイント

ラクーカンに1つアカウントを持っていたので以下のコードを試してみました。

「/login/login.php」

<?php
$value = 'cookie test';
setcookie("TestCookie", $value, time()+3600, "/");
session_start();
$_SESSION['test'] = "session test";
header('Location: ../index.php');
exit;
?>

「/index.php」

<?php
session_start();
print_r($_COOKIE);
print_r($_SESSION);
?>

結果は以下のものとなります。

「出力結果」

http://www.example.com/login/login.php

GET /login/login.php HTTP/1.1
Host: www.example.com
(略)
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=xxx; TestCookie=cookie+test

HTTP/1.x 302 Moved Temporarily
Server: ZWS
Date: Sat, 10 Oct 2009 10:48:06 GMT
Set-Cookie: TestCookie=cookie+test; expires=Sat, 10-Oct-2009 11:48:07 GMT; path=/
Location: ../index.php
Content-Type: text/html
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Transfer-Encoding: chunked
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
----------------------------------------------------------
http://www.example.com/index.php

GET /index.php HTTP/1.1
Host: www.example.com
(略)
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=xxx; TestCookie=cookie+test

HTTP/1.x 200 OK
Server: ZWS
Date: Sat, 10 Oct 2009 10:48:06 GMT
Content-Type: text/html
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Transfer-Encoding: chunked
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
----------------------------------------------------------
Array
(
 [PHPSESSID] => xxx
 [TestCookie] => cookie test
)
Array
(
 [test] => session test
)

同じラクーカンと言っても違うサーバの可能性が高いのでAKI-NAMIさんの環境もそうだとは言えませんが

setcookie、session、headerそれぞれ正常に動作しています。

ステータスコードが500とのことですので、プログラムの構文エラーを疑ってみてはいかがでしょうか?

http://php.net/manual/ja/function.setcookie.php

◎質問者からの返答

login.php 実際のコードをそのまま載せると

session_start();

$id = $_POST['id'];

$pass = $_POST['pass'];

if($id == "name" && $pass == "pass"){

$usrid = "usrname";

$_SESSION['usrname'] = $usrid;

header("Location: ../index.php");

}else{

header("Location: ../index.php");

}

?>

で、例えば header であったり、変数の設定の部分でもtry?catchではさむとHTTP500エラー。

上記のままであると、ブラウザのアドレスバー部分にhttp://***.***.coocan.jp/login/login.phpと表示され、index.php へ飛びません。

ちなみにその画面は真っ白で、ソースを見ると4文字分くらいの空白のあとに「1」とだけありました。

localhostでは特に問題なく動いてるのですが。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ