
お世話になります。
header location がなぜが飛びません。
お分かりになる方ご教授お願いいたします。
・<?php の前にはスペースなどを入れておりません。
・エラー表示にはなりませんが、飛びません。
<?php
session_save_path("sess");
session_name("deri_user");
session_start();
require("class/User.class.php");
$end=null;
if($_POST[submit]=="送信"){
if(session_is_registered("sesdata1")){unset($_SESSION[sesdata1]);session_register("sesdata1");}
if(session_is_registered("sesdata2")){unset($_SESSION[sesdata2]);session_register("sesdata2");}
$_SESSION[sesdata1]=htmlspecialchars($_POST[user_name]);
$_SESSION[sesdata2]=htmlspecialchars($_POST[user_pass]);
$user=new User();
$usn=$user->owner_name();
$usp=$user->owner_pass();
if(trim($usn)==trim($_SESSION[sesdata1]) and trim($usp)==trim($_SESSION[sesdata2])){
header('location:./kanri_gamen.php');
exit();
}else{
$end= "<br>ユーザー名又はパスワードが正しくありません。";
}
$user->__destruct();
}
?>
<html lang="ja">
<head>
<title></title>
</head>
<body>
<center>
<h3>管理者ログイン画面</h3>
<form action="user_login.php" method="post">
<table style="border:3px ridge #333333">
<tr>
<td>名前
</td>
<td>
<input type="text" name="user_name" size="20">
</td>
</tr>
<tr>
<td>パスワード
</td>
<td>
<input type="text" name="user_pass" size="20">
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" name="submit" value="送信">
</table>
</form>
<?=$end?>
</center>
</body>
</html>
No.3ベストアンサー
- 回答日時:
ちなみに、最初に
error_reporting(-1);
ini_set('display_errors', 'On');
を実行しておくと全てのエラーが表示されるようになります。ご提示のソースコードにはエラーを引き起こす要因が3種類含まれています。2つに関しては以下を読まれれば分かると思います。
PHP Manual - 配列ですべきこととしてはならないこと
http://php.net/manual/ja/language.types.array.ph …
Qiita - $_GET, $_POSTなどを受け取る際の処理
http://qiita.com/mpyw/items/2f9955db1c02eeef43ea
もう1つ問題なのは、session_is_registered関数を使用していることです。
PHP Manual - session_is_registered
http://php.net/manual/ja/function.session-is-reg …
この関数はPHP5.3の時点で非推奨です。PHP5.4以降では使用することすら出来ません。isset構文を使って調べましょう。なお、PHP5.3系のサポートももう切れていおり、認められる最も古いバージョンはPHP5.4系です。古いバージョンでは言語自体に脆弱性が発見されても修正が行われない等の問題点があります。「サポートの切れたWindowsXPを使っている」ぐらいの危機感を持ってください。
ありがとうございます。
大変ためになるご指導に心から感謝いたします。
早速に調べて対応していこうと思っております。
ありがとうございました。
No.2
- 回答日時:
ソースはUTF-8ですよね?「BOM無し」と「BOM有り」の両方を扱えるテキストエディタでソースコードを閲覧して、どっちが適用されているかを確認してください。
もしくはバイナリエディタでファイイルを開き、先頭3バイトにBOMが混入していないかどうかを確かめてください。Windowsのメモ帳では「BOM有り」しか扱えませんが、PHPのソースコードは全て「BOM無し」であることが前提条件とされます。header関数を使う場合、まだ1バイトも出力していない状態でなければなりません。BOMが含まれている場合それだけで3バイト出力していることになるので実行に失敗します。
ありがとうございます。
BOM無しでUTF-8で作成しております。
session_is_registered関数が、PHP5.4では削除されていることにたどり着き、その部分を書き換えましたら、lolipopサーバーでは問題なく動作しました。サクラサーバーでは、依然headerが飛ばない状況ですが、lolipopで使用しようと思います。
ご迷惑をおかけいたしました。
ご指導に感謝いたします。
No.1
- 回答日時:
>header('location:./kanri_gamen.php');
./ という相対指定はどうなんでしょうね。
header('location: kanri_gamen.php');
ではどうなりますか?あるいはホスト名込みのURLで指定したらどうなりますか?
header('location: http://example.om/kanri_gamen.php');
>exit();
exit(); の代わりに、die('location header sent'); としたら、そのメッセージは表示されますか?
ありがとうございます。
全て試したのですが、やはり、飛びません><。
die()で試しますと、location header sent は表示されます。
何故なのか・・・>< 苦戦しそうです><
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理後のページ内移動について
-
フォーム送信後の更新ボタンで...
-
テキストリンクをPOST送信したい
-
リンク先のフォームに自動的に...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
プルダウンリンクを外部ファイ...
-
PHPでじゃんけん勝負
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
フォームの状態やGETのURLは保...
-
【PHP&JavaScript】複数の別ウ...
-
フォーム INPUTの文字化け対策...
-
WordのIDataObject::GetData呼...
-
POSTを使わずに値を渡す方法
-
PHPでフォームに表示させたCSV...
-
PHPでフォームデータをサンクス...
-
PHPエラー 教えて下さい
-
セッションにIDを振って値を代入
-
PHPの初心者です。現在チェック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストリンクをPOST送信したい
-
ボタンをクリックでPHP文を実行
-
$_POST['hoge']のデータをフラ...
-
PHPのエラーの解消法について教...
-
phpで、フォームのラジオボタン...
-
フォームのPOST情報が渡らない?
-
PHPでバーコード読み取りって・...
-
セッションを使わずに遷移先画...
-
なぜ、unexpected T_VARIABLEに...
-
アマゾンのような評価の星を選...
-
PHPで検索結果の一覧から任意の...
-
サブウィンドウのFORM内データ...
-
フォーム送信後の更新ボタンで...
-
入力ホーム form actionでphpペ...
-
PHP 入力フォームにて半角スペ...
-
PHPの質問:フォームから受け取...
-
PHPでURLにジャンプするには?
-
フォームにダブルクォーテーシ...
-
チェックボックスのチェック済...
-
ユーザー認証&リンク先振り分け
おすすめ情報